@burdenoff/fe-libs 2026.1004.8 → 2026.1005.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/dist/shared/assistant/api.d.ts +18 -0
  2. package/dist/shared/assistant/api.d.ts.map +1 -1
  3. package/dist/shared/assistant/api.js +169 -147
  4. package/dist/shared/assistant/capabilities.d.ts +21 -0
  5. package/dist/shared/assistant/capabilities.d.ts.map +1 -1
  6. package/dist/shared/assistant/capabilities.js +11 -1
  7. package/dist/shared/assistant/index.d.ts +4 -0
  8. package/dist/shared/assistant/index.d.ts.map +1 -1
  9. package/dist/shared/assistant/liveDeltas.d.ts +76 -0
  10. package/dist/shared/assistant/liveDeltas.d.ts.map +1 -0
  11. package/dist/shared/assistant/liveDeltas.js +196 -0
  12. package/dist/shared/assistant/liveOverlay.d.ts +62 -0
  13. package/dist/shared/assistant/liveOverlay.d.ts.map +1 -0
  14. package/dist/shared/assistant/liveOverlay.js +64 -0
  15. package/dist/shared/assistant/snapshotPoller.d.ts +48 -0
  16. package/dist/shared/assistant/snapshotPoller.d.ts.map +1 -0
  17. package/dist/shared/assistant/snapshotPoller.js +58 -0
  18. package/dist/shared/assistant/turnStream.d.ts +71 -0
  19. package/dist/shared/assistant/turnStream.d.ts.map +1 -0
  20. package/dist/shared/assistant/turnStream.js +266 -0
  21. package/dist/shared/assistant/turnTimeline.d.ts +27 -2
  22. package/dist/shared/assistant/turnTimeline.d.ts.map +1 -1
  23. package/dist/shared/assistant/turnTimeline.js +17 -28
  24. package/dist/shared/assistant/types.d.ts +10 -0
  25. package/dist/shared/assistant/types.d.ts.map +1 -1
  26. package/dist/shared/assistant/ui/AssistantChatArea.d.ts.map +1 -1
  27. package/dist/shared/assistant/ui/AssistantChatArea.js +1049 -1008
  28. package/dist/shared/assistant/ui/AssistantMessageList.d.ts +2 -0
  29. package/dist/shared/assistant/ui/AssistantMessageList.d.ts.map +1 -1
  30. package/dist/shared/assistant/ui/AssistantMessageList.js +48 -32
  31. package/dist/shared-assistant.js +208 -204
  32. package/package.json +1 -1
@@ -49,6 +49,8 @@ interface Props {
49
49
  */
50
50
  hidesLegacyWriteCard?: (message: Message) => boolean;
51
51
  }
52
+ /** At most one auto-scroll per this long while a reply is streaming in live. */
53
+ export declare const LIVE_SCROLL_GAP_MS = 250;
52
54
  export declare const AssistantMessageList: FC<Props>;
53
55
  export {};
54
56
  //# sourceMappingURL=AssistantMessageList.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantMessageList.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantMessageList.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGnE,OAAO,KAAK,EAAE,+BAA+B,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAQhF,UAAU,KAAK;IACb;;;OAGG;IACH,qBAAqB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB;;;;OAIG;IACH,UAAU,CAAC,EAAE,+BAA+B,GAAG,IAAI,CAAC;IACpD,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,SAAS,CAAC;IACvD;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;CACtD;AAED,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC,KAAK,CA6G1C,CAAC"}
1
+ {"version":3,"file":"AssistantMessageList.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantMessageList.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGnE,OAAO,KAAK,EAAE,+BAA+B,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAShF,UAAU,KAAK;IACb;;;OAGG;IACH,qBAAqB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB;;;;OAIG;IACH,UAAU,CAAC,EAAE,+BAA+B,GAAG,IAAI,CAAC;IACpD,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,SAAS,CAAC;IACvD;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;CACtD;AAED,gFAAgF;AAChF,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC,KAAK,CAyJ1C,CAAC"}
@@ -2,50 +2,66 @@ import { useAssistantTr as e } from "../i18n.js";
2
2
  import { approvalFollowUpReplyIds as t, approvedPendingWriteIds as n, goAheadSentReplyIds as r } from "../liveTurns.js";
3
3
  import { readReducedMotion as i } from "./usePrefersReducedMotion.js";
4
4
  import { AssistantMessageItem as a } from "./AssistantMessageItem.js";
5
- import { useEffect as o, useRef as s } from "react";
6
- import { jsx as c, jsxs as l } from "react/jsx-runtime";
5
+ import { useLiveOverlay as o } from "../liveOverlay.js";
6
+ import { useEffect as s, useRef as c } from "react";
7
+ import { jsx as l, jsxs as u } from "react/jsx-runtime";
7
8
  //#region src/shared/assistant/ui/AssistantMessageList.tsx
8
- var u = ({ onApprovePendingWrite: u, approvingWriteRef: d = null, approvableMessageId: f = null, retryableMessageId: p = null, messages: m, processing: h, streamingMessageId: g, failedMessageId: _, onRetry: v, renderWriteProposals: y, hidesLegacyWriteCard: b }) => {
9
- let x = e(), S = (() => {
10
- for (let e = m.length - 1; e >= 0; --e) if (m[e].role === "assistant") return m[e].id;
9
+ var d = 250, f = ({ onApprovePendingWrite: d, approvingWriteRef: f = null, approvableMessageId: p = null, retryableMessageId: m = null, messages: h, processing: g, streamingMessageId: _, failedMessageId: v, onRetry: y, renderWriteProposals: b, hidesLegacyWriteCard: x }) => {
10
+ let S = e(), C = (() => {
11
+ for (let e = h.length - 1; e >= 0; --e) if (h[e].role === "assistant") return h[e].id;
11
12
  return null;
12
- })(), C = n(m), w = r(m), T = t(m), E = s(null), D = s(null);
13
- return o(() => {
14
- let e = D.current;
13
+ })(), w = n(h), T = r(h), E = t(h), D = c(null), O = c(null);
14
+ s(() => {
15
+ let e = O.current;
15
16
  if (e && e.scrollHeight - e.scrollTop - e.clientHeight < 100) {
16
17
  let e = i();
17
- E.current?.scrollIntoView({ behavior: e ? "auto" : "smooth" });
18
+ D.current?.scrollIntoView({ behavior: e ? "auto" : "smooth" });
18
19
  }
19
- }, [m, g]), o(() => {
20
- E.current?.scrollIntoView({ behavior: "instant" });
21
- }, []), /* @__PURE__ */ l("div", {
22
- ref: D,
20
+ }, [h, _]);
21
+ let k = o((e) => e.byMessageId), A = _ === null ? null : k[_]?.content ?? null, j = c(0), M = c(null);
22
+ return s(() => {
23
+ if (A === null) return;
24
+ let e = () => {
25
+ M.current = null, j.current = Date.now();
26
+ let e = O.current;
27
+ e && e.scrollHeight - e.scrollTop - e.clientHeight < 100 && D.current?.scrollIntoView({ behavior: "auto" });
28
+ }, t = j.current + 250 - Date.now();
29
+ t <= 0 ? e() : M.current === null && (M.current = setTimeout(e, t));
30
+ }, [A]), s(() => () => {
31
+ M.current !== null && clearTimeout(M.current);
32
+ }, []), s(() => {
33
+ D.current?.scrollIntoView({ behavior: "instant" });
34
+ }, []), /* @__PURE__ */ u("div", {
35
+ ref: O,
23
36
  className: "scrollbar-slim flex-1 space-y-4 overflow-y-auto p-3",
24
37
  role: "log",
25
38
  "aria-live": "polite",
26
39
  "aria-relevant": "additions",
27
- "aria-busy": g !== null,
28
- "aria-label": x("messageList.ariaLabel", "Conversation messages"),
29
- children: [m.map((e) => {
30
- let t = C.has(e.id), n = !t && (e.id === f || e.id === g);
31
- return /* @__PURE__ */ c(a, {
32
- onApprovePendingWrite: n ? u : void 0,
33
- approvingWriteRef: d,
40
+ "aria-busy": _ !== null,
41
+ "aria-label": S("messageList.ariaLabel", "Conversation messages"),
42
+ children: [h.map((e) => {
43
+ let t = w.has(e.id), n = !t && (e.id === p || e.id === _);
44
+ return /* @__PURE__ */ l(a, {
45
+ onApprovePendingWrite: n ? d : void 0,
46
+ approvingWriteRef: f,
34
47
  pendingWriteApproved: t,
35
- pendingWriteGoAheadSent: w.has(e.id),
48
+ pendingWriteGoAheadSent: T.has(e.id),
36
49
  pendingWriteExpired: !t && !n,
37
- message: e,
38
- processing: h,
39
- isStreaming: e.id === g,
40
- isFailed: e.id === _,
41
- isLastAssistant: e.id === p,
42
- isNewestAssistant: e.id === S,
43
- onRetry: T.has(e.id) ? void 0 : v,
44
- legacyWriteCardHidden: b?.(e) ?? !1,
45
- writeProposals: y?.(e)
50
+ message: e.id === _ && A !== null ? {
51
+ ...e,
52
+ content: A
53
+ } : e,
54
+ processing: g,
55
+ isStreaming: e.id === _,
56
+ isFailed: e.id === v,
57
+ isLastAssistant: e.id === m,
58
+ isNewestAssistant: e.id === C,
59
+ onRetry: E.has(e.id) ? void 0 : y,
60
+ legacyWriteCardHidden: x?.(e) ?? !1,
61
+ writeProposals: b?.(e)
46
62
  }, e.id);
47
- }), /* @__PURE__ */ c("div", { ref: E })]
63
+ }), /* @__PURE__ */ l("div", { ref: D })]
48
64
  });
49
65
  };
50
66
  //#endregion
51
- export { u as AssistantMessageList };
67
+ export { f as AssistantMessageList, d as LIVE_SCROLL_GAP_MS };