@nextclaw/agent-chat-ui 0.4.11 → 0.5.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
@@ -186,6 +186,30 @@ type ChatFileOperationBlockViewModel = {
186
186
  newStartLine?: number;
187
187
  truncated?: boolean;
188
188
  };
189
+ type ChatUiShowContentPurpose = "read" | "preview" | "edit" | "interact";
190
+ type ChatUiShowContentTarget = {
191
+ type: "file";
192
+ payload: {
193
+ path: string;
194
+ line?: number;
195
+ column?: number;
196
+ };
197
+ } | {
198
+ type: "url";
199
+ payload: {
200
+ url: string;
201
+ };
202
+ } | {
203
+ type: "panel_app";
204
+ payload: {
205
+ appId: string;
206
+ };
207
+ };
208
+ type ChatUiShowContentRequest = {
209
+ target: ChatUiShowContentTarget;
210
+ title?: string;
211
+ purpose?: ChatUiShowContentPurpose;
212
+ };
189
213
  type ChatToolActionViewModel = {
190
214
  kind: "open-session";
191
215
  sessionId: string;
@@ -193,6 +217,10 @@ type ChatToolActionViewModel = {
193
217
  agentId?: string;
194
218
  label?: string;
195
219
  parentSessionId?: string;
220
+ } | {
221
+ kind: "show-content";
222
+ label: string;
223
+ request: ChatUiShowContentRequest;
196
224
  };
197
225
  type ChatFileOpenActionViewModel = {
198
226
  path: string;
@@ -384,7 +412,14 @@ type UseStickyBottomScrollParams = {
384
412
  type UseStickyBottomScrollResult = {
385
413
  onScroll: () => void;
386
414
  };
387
- declare function useStickyBottomScroll(params: UseStickyBottomScrollParams): UseStickyBottomScrollResult;
415
+ declare function useStickyBottomScroll({
416
+ contentVersion,
417
+ hasContent,
418
+ isLoading,
419
+ resetKey,
420
+ scrollRef,
421
+ stickyThresholdPx
422
+ }: UseStickyBottomScrollParams): UseStickyBottomScrollResult;
388
423
  //#endregion
389
424
  //#region src/components/chat/utils/copy-text.d.ts
390
425
  declare function copyText(text: string): Promise<boolean>;
@@ -410,5 +445,5 @@ declare function resolveChatComposerSlashTrigger(nodes: ChatComposerNode[], sele
410
445
  end: number;
411
446
  } | null;
412
447
  //#endregion
413
- export { type ChatComposerNode, type ChatComposerSelection, type ChatComposerTextNode, type ChatComposerTokenKind, type ChatComposerTokenNode, type ChatContextWindowIndicator, type ChatFileOpenActionViewModel, type ChatFileOperationBlockViewModel, type ChatFileOperationLineViewModel, type ChatInlineContentSegmentViewModel, type ChatInlineHint, type ChatInlineTokenViewModel, ChatInputBar, type ChatInputBarActionsProps, type ChatInputBarHandle, type ChatInputBarProps, type ChatInputBarToolbarProps, ChatMessageList, type ChatMessageListProps, ChatMessageMarkdown, type ChatMessagePartViewModel, type ChatMessageRole, type ChatMessageTexts, type ChatMessageViewModel, type ChatSelectedItem, type ChatSkillPickerOption, type ChatSkillPickerProps, type ChatSlashItem, type ChatSlashMenuProps, type ChatTexts, type ChatToolActionViewModel, type ChatToolPartViewModel, type ChatToolbarAccessory, type ChatToolbarAccessoryIcon, type ChatToolbarIcon, type ChatToolbarSelect, type ChatToolbarSelectGroup, type ChatToolbarSelectOption, FileOperationCodeSurface, FileOperationLinesGrid, copyText, createChatComposerNodesFromText, createChatComposerTextNode, createChatComposerTokenNode, createEmptyChatComposerNodes, extractChatComposerTokenKeys, normalizeChatComposerNodes, removeChatComposerTokenNodes, replaceChatComposerRange, resolveChatComposerSlashTrigger, serializeChatComposerDocument, serializeChatComposerPlainText, useActiveItemScroll, useCopyFeedback, useElementWidth, useStickyBottomScroll };
448
+ export { type ChatComposerNode, type ChatComposerSelection, type ChatComposerTextNode, type ChatComposerTokenKind, type ChatComposerTokenNode, type ChatContextWindowIndicator, type ChatFileOpenActionViewModel, type ChatFileOperationBlockViewModel, type ChatFileOperationLineViewModel, type ChatInlineContentSegmentViewModel, type ChatInlineHint, type ChatInlineTokenViewModel, ChatInputBar, type ChatInputBarActionsProps, type ChatInputBarHandle, type ChatInputBarProps, type ChatInputBarToolbarProps, ChatMessageList, type ChatMessageListProps, ChatMessageMarkdown, type ChatMessagePartViewModel, type ChatMessageRole, type ChatMessageTexts, type ChatMessageViewModel, type ChatSelectedItem, type ChatSkillPickerOption, type ChatSkillPickerProps, type ChatSlashItem, type ChatSlashMenuProps, type ChatTexts, type ChatToolActionViewModel, type ChatToolPartViewModel, type ChatToolbarAccessory, type ChatToolbarAccessoryIcon, type ChatToolbarIcon, type ChatToolbarSelect, type ChatToolbarSelectGroup, type ChatToolbarSelectOption, type ChatUiShowContentPurpose, type ChatUiShowContentRequest, type ChatUiShowContentTarget, FileOperationCodeSurface, FileOperationLinesGrid, copyText, createChatComposerNodesFromText, createChatComposerTextNode, createChatComposerTokenNode, createEmptyChatComposerNodes, extractChatComposerTokenKeys, normalizeChatComposerNodes, removeChatComposerTokenNodes, replaceChatComposerRange, resolveChatComposerSlashTrigger, serializeChatComposerDocument, serializeChatComposerPlainText, useActiveItemScroll, useCopyFeedback, useElementWidth, useStickyBottomScroll };
414
449
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/components/chat/view-models/chat-ui.types.ts","../src/components/chat/ui/chat-input-bar/chat-input-bar.tsx","../src/components/chat/ui/chat-message-list/chat-message-list.tsx","../src/components/chat/ui/chat-message-list/chat-message-markdown.tsx","../src/components/chat/ui/chat-message-list/tool-card/tool-card-file-operation-lines.tsx","../src/components/chat/hooks/use-active-item-scroll.ts","../src/components/chat/hooks/use-copy-feedback.ts","../src/components/chat/hooks/use-element-width.ts","../src/components/chat/hooks/use-sticky-bottom-scroll.ts","../src/components/chat/utils/copy-text.ts","../src/components/chat/ui/chat-input-bar/chat-composer.utils.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/components/chat/view-models/chat-ui.types.ts","../src/components/chat/ui/chat-input-bar/chat-input-bar.tsx","../src/components/chat/ui/chat-message-list/chat-message-list.tsx","../src/components/chat/ui/chat-message-list/chat-message-markdown.tsx","../src/components/chat/ui/chat-message-list/tool-card/tool-card-file-operation-lines.tsx","../src/components/chat/hooks/use-active-item-scroll.ts","../src/components/chat/hooks/use-copy-feedback.ts","../src/components/chat/hooks/use-element-width.ts","../src/components/chat/hooks/use-sticky-bottom-scroll.ts","../src/components/chat/utils/copy-text.ts","../src/components/chat/ui/chat-input-bar/chat-composer.utils.ts"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ import { twMerge } from "tailwind-merge";
5
5
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
6
6
  import * as PopoverPrimitive from "@radix-ui/react-popover";
7
7
  import * as SelectPrimitive from "@radix-ui/react-select";
8
- import { AlertTriangle, ArrowUp, ArrowUpRight, Bot, Brain, BrainCircuit, Check, ChevronDown, ChevronRight, ChevronUp, Code2, Copy, ExternalLink, File, FileArchive, FileAudio2, FileCode2, FileImage, FileJson2, FileSpreadsheet, FileText, FileVideo2, Globe, Loader2, Minus, Paperclip, Puzzle, Search, Sparkles, Terminal, User, Wrench } from "lucide-react";
8
+ import { AlertTriangle, ArrowUp, ArrowUpRight, Bot, Brain, BrainCircuit, Check, ChevronDown, ChevronRight, ChevronUp, Code2, Copy, ExternalLink, Eye, File, FileArchive, FileAudio2, FileCode2, FileImage, FileJson2, FileSpreadsheet, FileText, FileVideo2, Globe, Loader2, Minus, Paperclip, Puzzle, Search, Sparkles, Terminal, User, Wrench } from "lucide-react";
9
9
  import * as TooltipPrimitive from "@radix-ui/react-tooltip";
10
10
  import { cva } from "class-variance-authority";
11
11
  import { ContentEditable } from "@lexical/react/LexicalContentEditable";
@@ -2912,73 +2912,67 @@ function useReasoningBlockOpenState(params) {
2912
2912
  //#endregion
2913
2913
  //#region src/components/chat/hooks/use-sticky-bottom-scroll.ts
2914
2914
  const DEFAULT_STICKY_THRESHOLD_PX = 10;
2915
- function scrollElementToBottom(element) {
2916
- element.scrollTop = element.scrollHeight;
2917
- }
2918
- function queueScrollToBottom(params) {
2919
- if (!params.scrollRef.current) return;
2920
- if (params.scheduledScrollFrameRef.current !== null) cancelAnimationFrame(params.scheduledScrollFrameRef.current);
2921
- params.scheduledScrollFrameRef.current = requestAnimationFrame(() => {
2922
- params.scheduledScrollFrameRef.current = null;
2923
- const currentElement = params.scrollRef.current;
2924
- if (!currentElement) return;
2925
- params.isProgrammaticScrollRef.current = true;
2926
- scrollElementToBottom(currentElement);
2927
- });
2928
- }
2929
- function useStickyBottomScroll(params) {
2915
+ function useStickyBottomScroll({ contentVersion, hasContent, isLoading, resetKey, scrollRef, stickyThresholdPx }) {
2930
2916
  const isStickyRef = useRef(true);
2931
2917
  const isProgrammaticScrollRef = useRef(false);
2932
2918
  const previousResetKeyRef = useRef(null);
2933
2919
  const pendingInitialScrollRef = useRef(false);
2934
2920
  const scheduledScrollFrameRef = useRef(null);
2921
+ const queueScrollToBottom = useCallback(() => {
2922
+ if (!scrollRef.current) return;
2923
+ if (scheduledScrollFrameRef.current !== null) cancelAnimationFrame(scheduledScrollFrameRef.current);
2924
+ scheduledScrollFrameRef.current = requestAnimationFrame(() => {
2925
+ scheduledScrollFrameRef.current = null;
2926
+ const currentElement = scrollRef.current;
2927
+ if (!currentElement) return;
2928
+ isProgrammaticScrollRef.current = true;
2929
+ currentElement.scrollTop = currentElement.scrollHeight;
2930
+ });
2931
+ }, [scrollRef]);
2935
2932
  const onScroll = () => {
2936
2933
  if (isProgrammaticScrollRef.current) {
2937
2934
  isProgrammaticScrollRef.current = false;
2938
2935
  return;
2939
2936
  }
2940
- const element = params.scrollRef.current;
2937
+ const element = scrollRef.current;
2941
2938
  if (!element) return;
2942
- isStickyRef.current = element.scrollHeight - element.scrollTop - element.clientHeight <= (params.stickyThresholdPx ?? DEFAULT_STICKY_THRESHOLD_PX);
2939
+ isStickyRef.current = element.scrollHeight - element.scrollTop - element.clientHeight <= (stickyThresholdPx ?? DEFAULT_STICKY_THRESHOLD_PX);
2943
2940
  };
2944
2941
  useEffect(() => {
2945
- if (previousResetKeyRef.current === params.resetKey) return;
2946
- previousResetKeyRef.current = params.resetKey;
2942
+ if (previousResetKeyRef.current === resetKey) return;
2943
+ previousResetKeyRef.current = resetKey;
2947
2944
  isStickyRef.current = true;
2948
2945
  pendingInitialScrollRef.current = true;
2949
- }, [params.resetKey]);
2946
+ }, [resetKey]);
2950
2947
  useEffect(() => {
2951
- const scheduledScrollFrame = scheduledScrollFrameRef.current;
2952
2948
  return () => {
2953
- if (scheduledScrollFrame !== null) cancelAnimationFrame(scheduledScrollFrame);
2949
+ const scheduledScrollFrame = scheduledScrollFrameRef.current;
2950
+ if (scheduledScrollFrame !== null) {
2951
+ cancelAnimationFrame(scheduledScrollFrame);
2952
+ scheduledScrollFrameRef.current = null;
2953
+ }
2954
2954
  };
2955
2955
  }, []);
2956
2956
  useLayoutEffect(() => {
2957
- if (!pendingInitialScrollRef.current || params.isLoading || !params.hasContent) return;
2958
- if (!params.scrollRef.current) return;
2957
+ if (!pendingInitialScrollRef.current || isLoading || !hasContent) return;
2958
+ if (!scrollRef.current) return;
2959
2959
  pendingInitialScrollRef.current = false;
2960
- queueScrollToBottom({
2961
- scrollRef: params.scrollRef,
2962
- scheduledScrollFrameRef,
2963
- isProgrammaticScrollRef
2964
- });
2960
+ queueScrollToBottom();
2965
2961
  }, [
2966
- params.hasContent,
2967
- params.isLoading,
2968
- params.scrollRef
2962
+ hasContent,
2963
+ isLoading,
2964
+ queueScrollToBottom,
2965
+ scrollRef
2969
2966
  ]);
2970
2967
  useLayoutEffect(() => {
2971
- if (!isStickyRef.current || !params.hasContent) return;
2972
- if (!params.scrollRef.current) return;
2973
- queueScrollToBottom({
2974
- scrollRef: params.scrollRef,
2975
- scheduledScrollFrameRef,
2976
- isProgrammaticScrollRef
2977
- });
2968
+ if (!isStickyRef.current || !hasContent) return;
2969
+ if (!scrollRef.current) return;
2970
+ queueScrollToBottom();
2978
2971
  }, [
2979
- params.contentVersion,
2980
- params.hasContent,
2981
- params.scrollRef
2972
+ contentVersion,
2973
+ hasContent,
2974
+ queueScrollToBottom,
2975
+ scrollRef
2982
2976
  ]);
2983
2977
  return { onScroll };
2984
2978
  }
@@ -3071,22 +3065,46 @@ function ToolStatusLabel({ card }) {
3071
3065
  }
3072
3066
  //#endregion
3073
3067
  //#region src/components/chat/ui/chat-message-list/tool-card/tool-card-header.tsx
3074
- function ToolCardSessionActionButton({ action, onAction }) {
3075
- const label = action.sessionKind === "child" ? "Open child session" : "Open session";
3068
+ function resolveToolCardActionView(action) {
3069
+ if (action.kind === "show-content") return {
3070
+ icon: Eye,
3071
+ label: action.label,
3072
+ toneClassName: "border-sky-200/80 bg-white/85 text-sky-800 hover:bg-sky-50 focus-visible:ring-sky-300"
3073
+ };
3074
+ return {
3075
+ icon: ArrowUpRight,
3076
+ label: action.label ?? (action.sessionKind === "child" ? "Open child session" : "Open session"),
3077
+ toneClassName: "border-amber-200/80 bg-white/80 text-amber-800 hover:bg-amber-50 focus-visible:ring-amber-300"
3078
+ };
3079
+ }
3080
+ function ToolCardActionButton({ action, onAction }) {
3081
+ const { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } = ChatUiPrimitives;
3082
+ const view = resolveToolCardActionView(action);
3083
+ const Icon = view.icon;
3076
3084
  const handleClick = (event) => {
3077
3085
  event.stopPropagation();
3078
3086
  onAction(action);
3079
3087
  };
3080
- return /* @__PURE__ */ jsx("button", {
3081
- type: "button",
3082
- onClick: handleClick,
3083
- className: cn("inline-flex items-center gap-1.5 rounded-full border px-2 py-1 text-[10px] font-semibold uppercase tracking-[0.08em] transition-colors", "border-amber-200/80 bg-white/80 text-amber-800 hover:bg-amber-50"),
3084
- "aria-label": label,
3085
- title: label,
3086
- children: /* @__PURE__ */ jsx(ArrowUpRight, {
3087
- className: "h-3 w-3",
3088
- strokeWidth: 2.5
3089
- })
3088
+ return /* @__PURE__ */ jsx(TooltipProvider, {
3089
+ delayDuration: 250,
3090
+ children: /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
3091
+ asChild: true,
3092
+ children: /* @__PURE__ */ jsx("button", {
3093
+ type: "button",
3094
+ onClick: handleClick,
3095
+ className: cn("inline-flex h-7 w-7 items-center justify-center rounded-full border transition-colors", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-1", view.toneClassName),
3096
+ "aria-label": view.label,
3097
+ title: view.label,
3098
+ children: /* @__PURE__ */ jsx(Icon, {
3099
+ className: "h-3.5 w-3.5",
3100
+ strokeWidth: 2.5
3101
+ })
3102
+ })
3103
+ }), /* @__PURE__ */ jsx(TooltipContent, {
3104
+ side: "top",
3105
+ className: "text-xs",
3106
+ children: view.label
3107
+ })] })
3090
3108
  });
3091
3109
  }
3092
3110
  function ToolCardHeader({ card, icon: Icon, expanded, canExpand, hideSummary = false, actionSlot, onToggle }) {
@@ -3129,8 +3147,8 @@ function ToolCardHeader({ card, icon: Icon, expanded, canExpand, hideSummary = f
3129
3147
  })]
3130
3148
  });
3131
3149
  }
3132
- function ToolCardHeaderSessionAction({ action, onAction }) {
3133
- return /* @__PURE__ */ jsx(ToolCardSessionActionButton, {
3150
+ function ToolCardHeaderAction({ action, onAction }) {
3151
+ return /* @__PURE__ */ jsx(ToolCardActionButton, {
3134
3152
  action,
3135
3153
  onAction
3136
3154
  });
@@ -3672,7 +3690,7 @@ function GenericToolCard({ card, onToolAction, renderToolAgent }) {
3672
3690
  icon: Globe,
3673
3691
  expanded,
3674
3692
  canExpand: hasContent || isRunning,
3675
- actionSlot: card.agentId || card.action && onToolAction ? /* @__PURE__ */ jsxs(Fragment$1, { children: [card.agentId && renderToolAgent ? renderToolAgent(card.agentId) : null, card.action && onToolAction ? /* @__PURE__ */ jsx(ToolCardHeaderSessionAction, {
3693
+ actionSlot: card.agentId || card.action && onToolAction ? /* @__PURE__ */ jsxs(Fragment$1, { children: [card.agentId && renderToolAgent ? renderToolAgent(card.agentId) : null, card.action && onToolAction ? /* @__PURE__ */ jsx(ToolCardHeaderAction, {
3676
3694
  action: card.action,
3677
3695
  onAction: onToolAction
3678
3696
  }) : null] }) : void 0,