@parhelia/core 0.1.12345 → 0.1.12350

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.
@@ -754,6 +754,33 @@ export function AgentTerminal({ agentStub, initialMetadata, profiles, isActive =
754
754
  useEffect(() => {
755
755
  onQuestionnaireOpenChange?.(isQuestionnaireDialogOpen);
756
756
  }, [isQuestionnaireDialogOpen, onQuestionnaireOpenChange]);
757
+ useLayoutEffect(() => {
758
+ if (displayMode !== "summary" || !isQuestionnaireDialogOpen) {
759
+ return;
760
+ }
761
+ const scrollSummaryTerminalToTop = () => {
762
+ const container = messagesContainerRef.current;
763
+ if (!container) {
764
+ return;
765
+ }
766
+ container.scrollTop = 0;
767
+ };
768
+ scrollSummaryTerminalToTop();
769
+ const frame1 = requestAnimationFrame(() => {
770
+ scrollSummaryTerminalToTop();
771
+ });
772
+ let frame3 = 0;
773
+ const frame2 = requestAnimationFrame(() => {
774
+ frame3 = requestAnimationFrame(() => {
775
+ scrollSummaryTerminalToTop();
776
+ });
777
+ });
778
+ return () => {
779
+ cancelAnimationFrame(frame1);
780
+ cancelAnimationFrame(frame2);
781
+ cancelAnimationFrame(frame3);
782
+ };
783
+ }, [displayMode, isQuestionnaireDialogOpen]);
757
784
  useEffect(() => {
758
785
  return () => {
759
786
  onQuestionnaireOpenChange?.(false);
@@ -1268,6 +1295,7 @@ export function AgentTerminal({ agentStub, initialMetadata, profiles, isActive =
1268
1295
  const placeholderInputRef = useRef(null);
1269
1296
  const promptPlaceholderInputRef = useRef(null);
1270
1297
  const messagesContainerRef = useRef(null);
1298
+ const inlineDialogContainerRef = useRef(null);
1271
1299
  const [shouldAutoScroll, setShouldAutoScroll] = useState(true);
1272
1300
  // WebSocket subscription state for agent streaming
1273
1301
  const seenMessageIdsRef = useRef(new Set());
@@ -3349,8 +3377,15 @@ export function AgentTerminal({ agentStub, initialMetadata, profiles, isActive =
3349
3377
  detail: { callbackId: request.callbackId },
3350
3378
  }));
3351
3379
  }
3352
- // Scroll to bottom to show the dialog
3353
- setTimeout(() => scrollToBottomRefForDialogs.current?.(), 100);
3380
+ setTimeout(() => {
3381
+ if (request.dialogType === "questionnaire") {
3382
+ inlineDialogContainerRef.current?.scrollIntoView({
3383
+ block: "start",
3384
+ });
3385
+ return;
3386
+ }
3387
+ scrollToBottomRefForDialogs.current?.();
3388
+ }, 100);
3354
3389
  };
3355
3390
  window.addEventListener("agent:dialog:show", handleDialogShow);
3356
3391
  return () => {
@@ -4516,7 +4551,7 @@ export function AgentTerminal({ agentStub, initialMetadata, profiles, isActive =
4516
4551
  if (!activeInlineDialog)
4517
4552
  return null;
4518
4553
  if (activeInlineDialog.request.dialogType === "questionnaire") {
4519
- return (_jsx("div", { className: cn("agent-inline-dialog min-h-0 overflow-hidden", displayMode === "full" && "h-full"), children: _jsx(QuestionnaireInline, { requestId: activeInlineDialog.request.callbackId, title: activeInlineDialog.request.title, description: activeInlineDialog.request.description, parameters: activeInlineDialog.request.parameters, footerActions: questionnaireFooterActions, onClose: (result) => {
4554
+ return (_jsx("div", { ref: inlineDialogContainerRef, className: cn("agent-inline-dialog min-h-0 overflow-hidden", displayMode === "full" && "h-full"), children: _jsx(QuestionnaireInline, { requestId: activeInlineDialog.request.callbackId, title: activeInlineDialog.request.title, description: activeInlineDialog.request.description, parameters: activeInlineDialog.request.parameters, footerActions: questionnaireFooterActions, onClose: (result) => {
4520
4555
  activeInlineDialog.onComplete(result);
4521
4556
  setActiveInlineDialog(null);
4522
4557
  void onInteractionSubmitted?.();