@superinterface/react 2.0.1 → 2.0.3

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.cjs CHANGED
@@ -362,33 +362,33 @@ __export(src_exports, {
362
362
  ThreadDialog: function() {
363
363
  return ThreadDialog;
364
364
  },
365
- ThreadMessageForm: function() {
366
- return ThreadMessageForm;
365
+ ThreadDialogContext: function() {
366
+ return ThreadDialogContext;
367
367
  },
368
- ThreadMessages: function() {
369
- return ThreadMessages;
370
- },
371
- ThreadProvider: function() {
372
- return SuperinterfaceProvider;
368
+ useCreateMessage: function() {
369
+ return useCreateMessage;
373
370
  },
374
371
  useCreateRun: function() {
375
372
  return useCreateRun;
376
373
  },
377
- useCreateThreadMessage: function() {
378
- return useCreateThreadMessage;
379
- },
380
374
  useIsRunActive: function() {
381
375
  return useIsRunActive;
382
376
  },
377
+ useLatestMessage: function() {
378
+ return useLatestMessage;
379
+ },
383
380
  useLatestRun: function() {
384
381
  return useLatestRun;
385
382
  },
386
- useLatestThreadMessage: function() {
387
- return useLatestThreadMessage;
383
+ useLifecycle: function() {
384
+ return useLifecycle;
388
385
  },
389
386
  useMarkdownContext: function() {
390
387
  return useMarkdownContext;
391
388
  },
389
+ useMessages: function() {
390
+ return useMessages;
391
+ },
392
392
  useRuns: function() {
393
393
  return useRuns;
394
394
  },
@@ -397,12 +397,6 @@ __export(src_exports, {
397
397
  },
398
398
  useThreadContext: function() {
399
399
  return useSuperinterfaceContext;
400
- },
401
- useThreadLifecycles: function() {
402
- return useThreadLifecycles;
403
- },
404
- useThreadMessages: function() {
405
- return useThreadMessages;
406
400
  }
407
401
  });
408
402
  module.exports = __toCommonJS(src_exports);
@@ -459,170 +453,10 @@ var SuperinterfaceProvider = function(param) {
459
453
  children: children
460
454
  });
461
455
  };
462
- // src/components/threads/Thread/index.tsx
463
- var import_themes31 = require("@radix-ui/themes");
464
- // src/components/threadMessages/ThreadMessages/index.tsx
465
- var import_themes28 = require("@radix-ui/themes");
466
- // src/hooks/misc/useInfiniteScroll/index.tsx
467
- var import_react4 = require("react");
468
- var import_react_intersection_observer = require("react-intersection-observer");
469
- // src/hooks/misc/useThrottledEffect/index.tsx
470
- var import_lodash3 = __toESM(require("lodash"), 1);
456
+ // src/components/threads/Thread/Messages/index.tsx
457
+ var import_themes29 = require("@radix-ui/themes");
458
+ // src/hooks/messages/useMessages/index.tsx
471
459
  var import_react3 = require("react");
472
- var useThrottledEffect = function(cb, delay, additionalDeps) {
473
- var _cbRef;
474
- var cbRef = (0, import_react3.useRef)(cb);
475
- var throttledCb = (0, import_react3.useCallback)(import_lodash3.default.throttle(function() {
476
- for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
477
- args[_key] = arguments[_key];
478
- }
479
- return (_cbRef = cbRef).current.apply(_cbRef, _to_consumable_array(args));
480
- }, delay, {
481
- leading: true,
482
- trailing: true
483
- }), [
484
- delay
485
- ]);
486
- (0, import_react3.useEffect)(function() {
487
- cbRef.current = cb;
488
- });
489
- (0, import_react3.useEffect)(throttledCb, [
490
- throttledCb
491
- ].concat(_to_consumable_array(additionalDeps)));
492
- };
493
- // src/hooks/misc/useInfiniteScroll/index.tsx
494
- var useInfiniteScroll = function(param) {
495
- var isFetchingNextPage = param.isFetchingNextPage, hasNextPage = param.hasNextPage, fetchNextPage = param.fetchNextPage;
496
- var containerRef = (0, import_react4.useRef)(null);
497
- var _ref = (0, import_react_intersection_observer.useInView)({
498
- root: containerRef.current,
499
- rootMargin: "0px",
500
- threshold: 0.1
501
- }), loaderRef = _ref.ref, inView = _ref.inView;
502
- useThrottledEffect(function() {
503
- if (isFetchingNextPage) return;
504
- if (!inView) return;
505
- if (!hasNextPage) return;
506
- console.log("Fetching next page");
507
- fetchNextPage();
508
- }, 500, [
509
- inView,
510
- isFetchingNextPage,
511
- hasNextPage,
512
- fetchNextPage
513
- ]);
514
- return {
515
- containerRef: containerRef,
516
- loaderRef: loaderRef,
517
- inView: inView
518
- };
519
- };
520
- // src/components/skeletons/ThreadMessagesSkeleton/index.tsx
521
- var import_react6 = require("react");
522
- var import_themes4 = require("@radix-ui/themes");
523
- // src/components/skeletons/Skeleton/index.tsx
524
- var import_themes = require("@radix-ui/themes");
525
- var import_jsx_runtime2 = // @ts-ignore-next-line
526
- require("react/jsx-runtime");
527
- var Skeleton = function(_param) {
528
- var height = _param.height, style = _param.style, rest = _object_without_properties(_param, [
529
- "height",
530
- "style"
531
- ]);
532
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_themes.Flex, _object_spread({
533
- style: _object_spread({
534
- animation: "pulse 2s cubic-bezier(.4,0,.6,1) infinite",
535
- borderRadius: "var(--radius-3)",
536
- backgroundColor: "var(--gray-5)",
537
- height: "var(--space-".concat(height, ")")
538
- }, style)
539
- }, rest));
540
- };
541
- // src/components/threadMessageGroups/ThreadMessagesGroupBase/index.tsx
542
- var import_react5 = require("react");
543
- var import_themes2 = require("@radix-ui/themes");
544
- var import_jsx_runtime3 = require("react/jsx-runtime");
545
- var ThreadMessagesGroupBase = (0, import_react5.forwardRef)(function ThreadMessagesGroupBase2(param, ref) {
546
- var children = param.children;
547
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_themes2.Container, {
548
- ref: ref,
549
- size: "2",
550
- grow: "0",
551
- children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_themes2.Flex, {
552
- shrink: "0",
553
- gap: "3",
554
- children: children
555
- })
556
- });
557
- });
558
- // src/components/threadMessageGroups/ThreadMessagesGroupBase/Name.tsx
559
- var import_themes3 = require("@radix-ui/themes");
560
- var import_jsx_runtime4 = require("react/jsx-runtime");
561
- var Name = function(param) {
562
- var children = param.children;
563
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_themes3.Flex, {
564
- align: "center",
565
- style: {
566
- height: "var(--space-5)"
567
- },
568
- children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_themes3.Text, {
569
- size: "2",
570
- weight: "bold",
571
- children: children
572
- })
573
- });
574
- };
575
- // src/components/skeletons/ThreadMessagesSkeleton/index.tsx
576
- var import_jsx_runtime5 = require("react/jsx-runtime");
577
- var ThreadMessagesSkeleton = (0, import_react6.forwardRef)(function ThreadMessagesSkeleton2(_props, ref) {
578
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(ThreadMessagesGroupBase, {
579
- ref: ref,
580
- children: [
581
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_themes4.Avatar, {
582
- fallback: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_themes4.Flex, {}),
583
- size: "1",
584
- style: {
585
- animation: "pulse 2s cubic-bezier(.4,0,.6,1) infinite"
586
- }
587
- }),
588
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_themes4.Box, {
589
- pb: "3",
590
- children: [
591
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Name, {
592
- children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Skeleton, {
593
- height: "1",
594
- style: {
595
- width: "128px"
596
- }
597
- })
598
- }),
599
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Skeleton, {
600
- height: "2",
601
- style: {
602
- width: "256px"
603
- }
604
- }),
605
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Skeleton, {
606
- height: "2",
607
- style: {
608
- width: "256px",
609
- marginTop: "var(--space-2)"
610
- }
611
- }),
612
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Skeleton, {
613
- height: "2",
614
- style: {
615
- width: "256px",
616
- marginTop: "var(--space-2)"
617
- }
618
- })
619
- ]
620
- })
621
- ]
622
- });
623
- });
624
- // src/hooks/threadMessages/useThreadMessages/index.tsx
625
- var import_react7 = require("react");
626
460
  var import_react_query2 = require("@tanstack/react-query");
627
461
  // src/lib/threads/queryOptions/index.ts
628
462
  var import_react_query = require("@tanstack/react-query");
@@ -644,9 +478,13 @@ var queryOptions = function(param) {
644
478
  } : {}, variables));
645
479
  return [
646
480
  2,
647
- fetch("".concat(superinterfaceContext.baseUrl).concat(path, "?").concat(params), {
481
+ fetch("".concat(superinterfaceContext.baseUrl).concat(path, "?").concat(params), _object_spread({
648
482
  credentials: "include"
649
- }).then(function() {
483
+ }, superinterfaceContext.publicApiKey ? {
484
+ headers: {
485
+ Authorization: "Bearer ".concat(superinterfaceContext.publicApiKey)
486
+ }
487
+ } : {})).then(function() {
650
488
  var _ref = _async_to_generator(function(response) {
651
489
  var errorResponse, error;
652
490
  return _ts_generator(this, function(_state) {
@@ -703,31 +541,31 @@ var queryOptions = function(param) {
703
541
  queryKey: queryKey
704
542
  }), threadContext.defaultOptions.queries));
705
543
  };
706
- // src/hooks/threadMessages/useThreadMessages/index.tsx
707
- var threadMessages = function(param) {
544
+ // src/hooks/messages/useMessages/index.tsx
545
+ var messages = function(param) {
708
546
  var props = param.props;
709
547
  if (!props.data) return [];
710
548
  return props.data.pages.reduce(function(acc, page) {
711
549
  return acc.concat(page.data);
712
550
  }, []);
713
551
  };
714
- var useThreadMessages = function() {
552
+ var useMessages = function() {
715
553
  var queryClient = (0, import_react_query2.useQueryClient)();
716
554
  var threadContext = useSuperinterfaceContext();
717
555
  var superinterfaceContext = useSuperinterfaceContext();
718
556
  var props = (0, import_react_query2.useInfiniteQuery)(queryOptions({
719
557
  queryKeyBase: [
720
- "threadMessages"
558
+ "messages"
721
559
  ],
722
- path: "/thread-messages",
560
+ path: "/messages",
723
561
  queryClient: queryClient,
724
562
  threadContext: threadContext,
725
563
  superinterfaceContext: superinterfaceContext
726
564
  }));
727
- return (0, import_react7.useMemo)(function() {
565
+ return (0, import_react3.useMemo)(function() {
728
566
  return _object_spread_props(_object_spread({}, props), {
729
567
  // @ts-ignore-next-line
730
- threadMessages: threadMessages({
568
+ messages: messages({
731
569
  props: props
732
570
  })
733
571
  });
@@ -735,1354 +573,1561 @@ var useThreadMessages = function() {
735
573
  props
736
574
  ]);
737
575
  };
738
- // src/hooks/runs/useManageRuns/index.tsx
739
- var import_react_query5 = require("@tanstack/react-query");
740
- var import_react11 = require("react");
741
- // src/hooks/threadMessages/useLatestThreadMessage/index.ts
742
- var import_react8 = require("react");
743
- var useLatestThreadMessage = function() {
744
- var props = useThreadMessages();
745
- return (0, import_react8.useMemo)(function() {
746
- return _object_spread_props(_object_spread({}, props), {
747
- latestThreadMessage: props.threadMessages[0] || null
748
- });
749
- }, [
750
- props
576
+ // src/hooks/messageGroups/useMessageGroups/index.ts
577
+ var import_react4 = require("react");
578
+ // src/hooks/messageGroups/useMessageGroups/lib/messageGroups/index.ts
579
+ var import_lodash3 = __toESM(require("lodash"), 1);
580
+ var import_radash2 = require("radash");
581
+ // src/lib/messages/order.ts
582
+ var import_radash = require("radash");
583
+ var order = function(param) {
584
+ var messages2 = param.messages;
585
+ return (0, import_radash.sort)(messages2, function(m) {
586
+ return m.created_at;
587
+ }, true);
588
+ };
589
+ // src/hooks/messageGroups/useMessageGroups/lib/messageGroups/newGroup/newGroupItem.ts
590
+ var newGroupItem = function(param) {
591
+ var message = param.message;
592
+ return {
593
+ id: message.id,
594
+ role: message.role,
595
+ createdAt: message.created_at,
596
+ messages: [
597
+ message
598
+ ]
599
+ };
600
+ };
601
+ // src/hooks/messageGroups/useMessageGroups/lib/messageGroups/newGroup/index.ts
602
+ var newGroup = function(param) {
603
+ var groups = param.groups, message = param.message;
604
+ return _to_consumable_array(groups).concat([
605
+ newGroupItem({
606
+ message: message
607
+ })
751
608
  ]);
752
609
  };
753
- // src/hooks/runs/useLatestRun/index.ts
754
- var import_react10 = require("react");
755
- // src/hooks/runs/useRuns/index.tsx
756
- var import_react9 = require("react");
757
- var import_react_query3 = require("@tanstack/react-query");
758
- // src/hooks/runs/useRuns/lib/getRuns.ts
759
- var getRuns = function(param) {
760
- var data3 = param.data;
761
- if (!data3) return [];
762
- return data3.pages.reduce(function(acc, page) {
763
- return acc.concat(page.data);
610
+ // src/hooks/messageGroups/useMessageGroups/lib/messageGroups/index.ts
611
+ var messageGroups = function(param) {
612
+ var messages2 = param.messages;
613
+ return import_lodash3.default.reduce(order({
614
+ messages: messages2
615
+ }), function(groups, message) {
616
+ var group = (0, import_radash2.last)(groups);
617
+ if (!group) return newGroup({
618
+ groups: groups,
619
+ message: message
620
+ });
621
+ if (group.role !== message.role) {
622
+ return newGroup({
623
+ groups: groups,
624
+ message: message
625
+ });
626
+ }
627
+ return _to_consumable_array(import_lodash3.default.dropRight(groups)).concat([
628
+ _object_spread_props(_object_spread({}, group), {
629
+ messages: _to_consumable_array(group.messages).concat([
630
+ message
631
+ ])
632
+ })
633
+ ]);
764
634
  }, []);
765
635
  };
766
- // src/hooks/runs/useRuns/index.tsx
767
- var useRuns = function() {
768
- var queryClient = (0, import_react_query3.useQueryClient)();
769
- var superinterfaceContext = useSuperinterfaceContext();
770
- var threadContext = useSuperinterfaceContext();
771
- var props = (0, import_react_query3.useInfiniteQuery)(queryOptions({
772
- queryKeyBase: [
773
- "runs"
774
- ],
775
- path: "/runs",
776
- queryClient: queryClient,
777
- threadContext: threadContext,
778
- superinterfaceContext: superinterfaceContext
779
- }));
780
- return (0, import_react9.useMemo)(function() {
781
- return _object_spread_props(_object_spread({}, props), {
782
- // @ts-ignore-next-line
783
- runs: getRuns({
784
- data: props.data
636
+ // src/hooks/messageGroups/useMessageGroups/index.ts
637
+ var useMessageGroups = function(param) {
638
+ var messages2 = param.messages;
639
+ return (0, import_react4.useMemo)(function() {
640
+ return {
641
+ messageGroups: messageGroups({
642
+ messages: messages2
785
643
  })
786
- });
644
+ };
787
645
  }, [
788
- props
646
+ messages2
789
647
  ]);
790
648
  };
791
- // src/hooks/runs/useLatestRun/index.ts
792
- var useLatestRun = function() {
793
- var props = useRuns();
794
- return (0, import_react10.useMemo)(function() {
795
- return _object_spread_props(_object_spread({}, props), {
796
- latestRun: props.runs[0]
797
- });
798
- }, [
799
- props
649
+ // src/components/skeletons/MessagesSkeleton/index.tsx
650
+ var import_react6 = require("react");
651
+ var import_themes4 = require("@radix-ui/themes");
652
+ // src/components/skeletons/Skeleton/index.tsx
653
+ var import_themes = require("@radix-ui/themes");
654
+ var import_jsx_runtime2 = require("react/jsx-runtime");
655
+ var Skeleton = function(_param) {
656
+ var height = _param.height, style = _param.style, rest = _object_without_properties(_param, [
657
+ "height",
658
+ "style"
800
659
  ]);
660
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_themes.Flex, _object_spread({
661
+ height: "var(--space-".concat(height, ")"),
662
+ style: _object_spread({
663
+ animation: "pulse 2s cubic-bezier(.4,0,.6,1) infinite",
664
+ borderRadius: "var(--radius-3)",
665
+ backgroundColor: "var(--gray-5)"
666
+ }, style)
667
+ }, rest));
801
668
  };
802
- // src/hooks/runs/useCreateRun/index.ts
803
- var import_radash2 = require("radash");
804
- var import_react_query4 = require("@tanstack/react-query");
805
- // src/lib/threads/mutationOptions/index.ts
806
- var mutationOptions = function(param) {
807
- var mutationKeyBase = param.mutationKeyBase, path = param.path, queryClient = param.queryClient, threadContext = param.threadContext, superinterfaceContext = param.superinterfaceContext;
808
- var mutationKey = _to_consumable_array(mutationKeyBase).concat([
809
- threadContext.variables
810
- ]);
811
- return _object_spread(_object_spread_props(_object_spread({
812
- mutationFn: function(variables) {
813
- return fetch("".concat(superinterfaceContext.baseUrl).concat(path), {
814
- method: "POST",
815
- body: JSON.stringify(variables),
816
- credentials: "include"
817
- }).then(function() {
818
- var _ref = _async_to_generator(function(response) {
819
- var errorResponse, error;
820
- return _ts_generator(this, function(_state) {
821
- switch(_state.label){
822
- case 0:
823
- if (!(response.status !== 200)) return [
824
- 3,
825
- 4
826
- ];
827
- _state.label = 1;
828
- case 1:
829
- _state.trys.push([
830
- 1,
831
- 3,
832
- ,
833
- 4
834
- ]);
835
- return [
836
- 4,
837
- response.json()
838
- ];
839
- case 2:
840
- errorResponse = _state.sent();
841
- throw new Error(errorResponse.error);
842
- case 3:
843
- error = _state.sent();
844
- throw new Error("Failed to fetch");
845
- case 4:
846
- return [
847
- 2,
848
- response.json()
849
- ];
850
- }
851
- });
852
- });
853
- return function(response) {
854
- return _ref.apply(this, arguments);
855
- };
856
- }());
857
- }
858
- }, queryClient.getMutationDefaults(mutationKey)), {
859
- mutationKey: mutationKey
860
- }), threadContext.defaultOptions.mutations);
669
+ // src/components/messageGroups/MessageGroupBase/index.tsx
670
+ var import_react5 = require("react");
671
+ var import_themes2 = require("@radix-ui/themes");
672
+ var import_jsx_runtime3 = require("react/jsx-runtime");
673
+ var MessageGroupBase = (0, import_react5.forwardRef)(function MessageGroupBase2(param, ref) {
674
+ var children = param.children;
675
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_themes2.Container, {
676
+ ref: ref,
677
+ size: "2",
678
+ flexGrow: "0",
679
+ children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_themes2.Flex, {
680
+ flexShrink: "0",
681
+ gap: "3",
682
+ children: children
683
+ })
684
+ });
685
+ });
686
+ // src/components/messageGroups/MessageGroupBase/Name.tsx
687
+ var import_themes3 = require("@radix-ui/themes");
688
+ var import_jsx_runtime4 = require("react/jsx-runtime");
689
+ var Name = function(param) {
690
+ var children = param.children;
691
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_themes3.Flex, {
692
+ align: "center",
693
+ height: "var(--space-5)",
694
+ children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_themes3.Text, {
695
+ size: "2",
696
+ weight: "bold",
697
+ children: children
698
+ })
699
+ });
861
700
  };
862
- // src/hooks/runs/useCreateRun/lib/onSuccess.ts
863
- var onSuccess = function(param) {
864
- var queryClient = param.queryClient;
865
- return function() {
866
- var _ref = _async_to_generator(function(data3, variables) {
867
- return _ts_generator(this, function(_state) {
868
- return [
869
- 2,
870
- queryClient.setQueryData([
871
- "runs",
872
- variables
873
- ], function(prevData) {
874
- if (!prevData) {
875
- return {
876
- pageParams: [],
877
- pages: [
878
- {
879
- data: [
880
- data3.run
881
- ],
882
- hasNextPage: false,
883
- lastId: data3.run.id
884
- }
885
- ]
886
- };
701
+ // src/components/skeletons/MessagesSkeleton/index.tsx
702
+ var import_jsx_runtime5 = require("react/jsx-runtime");
703
+ var MessagesSkeleton = (0, import_react6.forwardRef)(function MessagesSkeleton2(_props, ref) {
704
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(MessageGroupBase, {
705
+ ref: ref,
706
+ children: [
707
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_themes4.Avatar, {
708
+ fallback: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_themes4.Flex, {}),
709
+ size: "1",
710
+ style: {
711
+ animation: "pulse 2s cubic-bezier(.4,0,.6,1) infinite"
712
+ }
713
+ }),
714
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_themes4.Box, {
715
+ pb: "3",
716
+ children: [
717
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Name, {
718
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Skeleton, {
719
+ height: "1",
720
+ style: {
721
+ width: "128px"
722
+ }
723
+ })
724
+ }),
725
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Skeleton, {
726
+ height: "2",
727
+ style: {
728
+ width: "256px"
729
+ }
730
+ }),
731
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Skeleton, {
732
+ height: "2",
733
+ style: {
734
+ width: "256px",
735
+ marginTop: "var(--space-2)"
736
+ }
737
+ }),
738
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Skeleton, {
739
+ height: "2",
740
+ style: {
741
+ width: "256px",
742
+ marginTop: "var(--space-2)"
887
743
  }
888
- var _prevData_pages = _to_array(prevData.pages), latestPage = _prevData_pages[0], pagesRest = _prevData_pages.slice(1);
889
- return _object_spread_props(_object_spread({}, prevData), {
890
- pages: [
891
- _object_spread_props(_object_spread({}, latestPage), {
892
- data: [
893
- data3.run
894
- ].concat(_to_consumable_array(latestPage.data))
895
- })
896
- ].concat(_to_consumable_array(pagesRest))
897
- });
898
744
  })
899
- ];
900
- });
901
- });
902
- return function(data3, variables) {
903
- return _ref.apply(this, arguments);
904
- };
905
- }();
906
- };
907
- // src/hooks/runs/useCreateRun/lib/onSettled.ts
908
- var onSettled = function(param) {
909
- var queryClient = param.queryClient;
910
- return function() {
911
- var _ref = _async_to_generator(function(_data, _error, variables) {
912
- return _ts_generator(this, function(_state) {
913
- switch(_state.label){
914
- case 0:
915
- return [
916
- 4,
917
- queryClient.invalidateQueries({
918
- queryKey: [
919
- "threadMessages",
920
- variables
921
- ]
922
- })
923
- ];
924
- case 1:
925
- _state.sent();
926
- return [
927
- 4,
928
- queryClient.invalidateQueries({
929
- queryKey: [
930
- "runs",
931
- variables
932
- ]
933
- })
934
- ];
935
- case 2:
936
- _state.sent();
937
- return [
938
- 2
939
- ];
940
- }
941
- });
942
- });
943
- return function(_data, _error, variables) {
944
- return _ref.apply(this, arguments);
945
- };
946
- }();
947
- };
948
- // src/lib/optimistic/optimisticId.ts
949
- var import_radash = require("radash");
950
- var optimisticId = function() {
951
- return "-".concat((0, import_radash.uid)(24));
745
+ ]
746
+ })
747
+ ]
748
+ });
749
+ });
750
+ // src/components/threads/Thread/Messages/Content/MessageGroup/index.tsx
751
+ var import_react16 = require("react");
752
+ var import_themes24 = require("@radix-ui/themes");
753
+ var import_react_icons4 = require("@radix-ui/react-icons");
754
+ // src/components/messageGroups/MessageGroupBase/AssistantAvatar.tsx
755
+ var import_react8 = require("react");
756
+ var import_themes6 = require("@radix-ui/themes");
757
+ // src/contexts/assistants/AssistantAvatarContext/index.tsx
758
+ var import_react7 = require("react");
759
+ var import_themes5 = require("@radix-ui/themes");
760
+ var import_react_icons = require("@radix-ui/react-icons");
761
+ var import_jsx_runtime6 = require("react/jsx-runtime");
762
+ var AssistantAvatarContext = (0, import_react7.createContext)(/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_themes5.Avatar, {
763
+ fallback: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_react_icons.LightningBoltIcon, {}),
764
+ size: "1"
765
+ }));
766
+ // src/components/messageGroups/MessageGroupBase/AssistantAvatar.tsx
767
+ var import_jsx_runtime7 = require("react/jsx-runtime");
768
+ var AssistantAvatar = function() {
769
+ var AssistantAvatarContextValue = (0, import_react8.useContext)(AssistantAvatarContext);
770
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_themes6.Flex, {
771
+ flexShrink: "0",
772
+ height: "24px",
773
+ width: "24px",
774
+ style: {
775
+ borderRadius: "var(--radius-3)",
776
+ overflow: "hidden"
777
+ },
778
+ children: AssistantAvatarContextValue
779
+ });
952
780
  };
953
- // src/hooks/runs/useCreateRun/lib/onMutate/data.ts
954
- var data = function(prevData) {
955
- var run = {
956
- id: optimisticId(),
957
- object: "thread.run",
958
- created_at: +/* @__PURE__ */ new Date(),
959
- assistant_id: null,
960
- thread_id: null,
961
- status: "in_progress",
962
- expires_at: +/* @__PURE__ */ new Date() + 1e3 * 60 * 60 * 24,
963
- cancelled_at: null,
964
- failed_at: null,
965
- completed_at: null,
966
- required_action: null,
967
- last_error: null,
968
- model: null,
969
- instructions: null,
970
- tools: [],
971
- file_ids: [],
972
- metadata: {},
973
- usage: null
974
- };
975
- if (!prevData) {
976
- return {
977
- pageParams: [],
978
- pages: [
979
- {
980
- data: [
981
- run
982
- ],
983
- hasNextPage: false,
984
- lastId: run.id
985
- }
986
- ]
987
- };
988
- }
989
- var _prevData_pages = _to_array(prevData.pages), latestPage = _prevData_pages[0], pagesRest = _prevData_pages.slice(1);
990
- return _object_spread_props(_object_spread({}, prevData), {
991
- pages: [
992
- _object_spread_props(_object_spread({}, latestPage), {
993
- data: [
994
- run
995
- ].concat(_to_consumable_array(latestPage.data))
781
+ // src/contexts/assistants/AssistantNameContext/index.tsx
782
+ var import_react9 = require("react");
783
+ var AssistantNameContext = (0, import_react9.createContext)("Assistant");
784
+ // src/components/threads/Thread/Messages/Content/MessageGroup/Content/index.tsx
785
+ var import_themes23 = require("@radix-ui/themes");
786
+ // src/components/threads/Thread/Message/index.tsx
787
+ var import_react15 = require("react");
788
+ var import_themes22 = require("@radix-ui/themes");
789
+ // src/components/runSteps/RunSteps/index.tsx
790
+ var import_themes15 = require("@radix-ui/themes");
791
+ // src/components/runSteps/RunStep/ToolCalls/index.tsx
792
+ var import_themes14 = require("@radix-ui/themes");
793
+ // src/components/runSteps/RunStep/ToolCalls/ToolCall/index.tsx
794
+ var import_themes12 = require("@radix-ui/themes");
795
+ // src/components/runSteps/RunStep/ToolCalls/ToolCall/Fn/index.tsx
796
+ var import_react12 = require("react");
797
+ // src/contexts/functions/FunctionComponentsContext/index.tsx
798
+ var import_react10 = require("react");
799
+ var FunctionComponentsContext = (0, import_react10.createContext)({});
800
+ // src/components/functions/FunctionBase/index.tsx
801
+ var import_themes10 = require("@radix-ui/themes");
802
+ // src/components/toolCalls/ToolCallBase/index.tsx
803
+ var import_themes7 = require("@radix-ui/themes");
804
+ var import_jsx_runtime8 = require("react/jsx-runtime");
805
+ var ToolCallBase = function(param) {
806
+ var children = param.children;
807
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_themes7.Flex, {
808
+ py: "1",
809
+ ml: "-2",
810
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_themes7.PopoverTrigger, {
811
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_themes7.Button, {
812
+ size: "1",
813
+ color: "gold",
814
+ variant: "outline",
815
+ style: {
816
+ boxShadow: "none"
817
+ },
818
+ children: children
996
819
  })
997
- ].concat(_to_consumable_array(pagesRest))
820
+ })
998
821
  });
999
822
  };
1000
- // src/hooks/runs/useCreateRun/lib/onMutate/index.ts
1001
- var onMutate = function(param) {
1002
- var queryClient = param.queryClient;
1003
- return function() {
1004
- var _ref = _async_to_generator(function(variables) {
1005
- var queryKey, prevRuns;
1006
- return _ts_generator(this, function(_state) {
1007
- switch(_state.label){
1008
- case 0:
1009
- queryKey = [
1010
- "runs",
1011
- variables
1012
- ];
1013
- return [
1014
- 4,
1015
- queryClient.cancelQueries({
1016
- queryKey: queryKey
1017
- })
1018
- ];
1019
- case 1:
1020
- _state.sent();
1021
- prevRuns = queryClient.getQueryData(queryKey);
1022
- queryClient.setQueryData(queryKey, data);
1023
- return [
1024
- 2,
1025
- {
1026
- prevRuns: prevRuns,
1027
- variables: variables
1028
- }
1029
- ];
1030
- }
1031
- });
1032
- });
1033
- return function(variables) {
1034
- return _ref.apply(this, arguments);
1035
- };
1036
- }();
1037
- };
1038
- // src/hooks/runs/useCreateRun/index.ts
1039
- var useCreateRun = function() {
1040
- var queryClient = (0, import_react_query4.useQueryClient)();
1041
- var superinterfaceContext = useSuperinterfaceContext();
1042
- var threadContext = useSuperinterfaceContext();
1043
- var props = (0, import_react_query4.useMutation)(_object_spread({
1044
- onSuccess: onSuccess({
1045
- queryClient: queryClient
1046
- }),
1047
- onSettled: onSettled({
1048
- queryClient: queryClient
1049
- }),
1050
- onMutate: onMutate({
1051
- queryClient: queryClient
1052
- })
1053
- }, mutationOptions({
1054
- mutationKeyBase: [
1055
- "createRun"
1056
- ],
1057
- path: "/runs",
1058
- queryClient: queryClient,
1059
- threadContext: threadContext,
1060
- superinterfaceContext: superinterfaceContext
1061
- })));
1062
- return _object_spread_props(_object_spread({}, props), {
1063
- createRun: (0, import_radash2.partob)(props.mutate, threadContext.variables)
823
+ // src/components/toolCalls/ToolCallBase/ToolCallTitle.tsx
824
+ var import_themes8 = require("@radix-ui/themes");
825
+ var import_jsx_runtime9 = require("react/jsx-runtime");
826
+ var ToolCallTitle = function(param) {
827
+ var children = param.children;
828
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_themes8.Text, {
829
+ weight: "regular",
830
+ children: children
1064
831
  });
1065
832
  };
1066
- // src/lib/optimistic/isOptimistic.ts
1067
- var import_lodash4 = __toESM(require("lodash"), 1);
1068
- var isOptimistic = function(param) {
1069
- var id = param.id;
1070
- return import_lodash4.default.startsWith(id, "-");
833
+ // src/components/functions/FunctionBase/Icon.tsx
834
+ var import_react_icons2 = require("@radix-ui/react-icons");
835
+ var import_jsx_runtime10 = require("react/jsx-runtime");
836
+ var Icon = function(param) {
837
+ var runStep = param.runStep;
838
+ if (runStep.completed_at) {
839
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_react_icons2.CheckCircledIcon, {});
840
+ } else if (runStep.cancelled_at || runStep.failed_at || runStep.status === "expired") {
841
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_react_icons2.CircleBackslashIcon, {});
842
+ } else {
843
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_react_icons2.CircleIcon, {});
844
+ }
1071
845
  };
1072
- // src/hooks/runs/useManageRuns/index.tsx
1073
- var useManageRuns = function() {
1074
- var queryClient = (0, import_react_query5.useQueryClient)();
1075
- var latestRunProps = useLatestRun();
1076
- var latestThreadMessageProps = useLatestThreadMessage();
1077
- var createRunProps = useCreateRun();
1078
- var threadContext = useSuperinterfaceContext();
1079
- (0, import_react11.useEffect)(function() {
1080
- if (createRunProps.isPending) return;
1081
- if (latestRunProps.isFetching) return;
1082
- if (latestThreadMessageProps.isFetching) return;
1083
- if (!latestThreadMessageProps.latestThreadMessage) return;
1084
- if (latestThreadMessageProps.latestThreadMessage.role !== "user") return;
1085
- if (isOptimistic({
1086
- id: latestThreadMessageProps.latestThreadMessage.id
1087
- })) return;
1088
- if (latestRunProps.latestRun && latestRunProps.latestRun.created_at > latestThreadMessageProps.latestThreadMessage.created_at) {
1089
- return;
846
+ // src/components/functions/FunctionBase/Content.tsx
847
+ var import_react11 = require("react");
848
+ var import_themes9 = require("@radix-ui/themes");
849
+ var import_jsx_runtime11 = require("react/jsx-runtime");
850
+ var Content = function(param) {
851
+ var fn = param.fn;
852
+ var args = (0, import_react11.useMemo)(function() {
853
+ var result = null;
854
+ try {
855
+ result = JSON.parse(fn.arguments);
856
+ } catch (error) {
857
+ console.error(error);
1090
858
  }
1091
- var isMutating = queryClient.isMutating({
1092
- mutationKey: [
1093
- "createRun",
1094
- threadContext.variables
1095
- ]
1096
- });
1097
- if (isMutating) return;
1098
- createRunProps.createRun();
859
+ return result;
1099
860
  }, [
1100
- threadContext,
1101
- queryClient,
1102
- createRunProps,
1103
- latestRunProps,
1104
- latestThreadMessageProps
861
+ fn
1105
862
  ]);
1106
- return null;
863
+ var output = (0, import_react11.useMemo)(function() {
864
+ if (!fn.output) {
865
+ return null;
866
+ }
867
+ var result = null;
868
+ try {
869
+ result = JSON.parse(fn.output);
870
+ } catch (error) {
871
+ console.error(error);
872
+ }
873
+ return result;
874
+ }, [
875
+ fn
876
+ ]);
877
+ if (!args) {
878
+ return null;
879
+ }
880
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_themes9.Code, {
881
+ variant: "ghost",
882
+ color: "gold",
883
+ style: {
884
+ whiteSpace: "pre",
885
+ wordBreak: "break-word"
886
+ },
887
+ children: [
888
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_themes9.Box, {
889
+ children: args && JSON.stringify(args, null, 2)
890
+ }),
891
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_themes9.Box, {
892
+ children: output && JSON.stringify(output, null, 2)
893
+ })
894
+ ]
895
+ });
1107
896
  };
1108
- // src/hooks/runs/usePolling/index.tsx
1109
- var import_react_query7 = require("@tanstack/react-query");
1110
- var import_react_use = require("react-use");
1111
- // src/hooks/runs/useIsRunActive/index.tsx
1112
- var import_react12 = require("react");
1113
- var import_react_query6 = require("@tanstack/react-query");
1114
- // src/lib/runs/isRunEditingThreadMessage/index.ts
1115
- var import_lodash5 = __toESM(require("lodash"), 1);
1116
- var isRunEditingThreadMessage = function(param) {
1117
- var threadMessage = param.threadMessage;
1118
- if (!threadMessage) return false;
1119
- if (threadMessage.role === "user") return false;
1120
- if (!threadMessage.run_id) return false;
1121
- var hasContent = import_lodash5.default.some(threadMessage.content, function(content) {
1122
- var _content_text;
1123
- return content.type !== "text" || content.type === "text" && ((_content_text = content.text) === null || _content_text === void 0 ? void 0 : _content_text.value) !== "";
897
+ // src/components/functions/FunctionBase/index.tsx
898
+ var import_jsx_runtime12 = require("react/jsx-runtime");
899
+ var FunctionBase = function(param) {
900
+ var fn = param.fn, runStep = param.runStep, title2 = param.title;
901
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_themes10.PopoverRoot, {
902
+ children: [
903
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(ToolCallBase, {
904
+ children: [
905
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Icon, {
906
+ runStep: runStep
907
+ }),
908
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(ToolCallTitle, {
909
+ children: title2
910
+ })
911
+ ]
912
+ }),
913
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_themes10.PopoverContent, {
914
+ style: {
915
+ maxHeight: "500px"
916
+ },
917
+ children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Content, {
918
+ fn: fn
919
+ })
920
+ })
921
+ ]
1124
922
  });
1125
- return !hasContent;
1126
923
  };
1127
- // src/hooks/runs/useIsRunActive/index.tsx
1128
- var progressStatuses = [
1129
- "queued",
1130
- "in_progress",
1131
- "cancelling",
1132
- "requires_action"
1133
- ];
1134
- var stoppedStatuses = [
1135
- "expired",
1136
- "cancelled",
1137
- "failed"
1138
- ];
1139
- var isRunActive = function(param) {
1140
- var latestRunProps = param.latestRunProps, latestThreadMessageProps = param.latestThreadMessageProps, isMutating = param.isMutating;
1141
- var _latestThreadMessageProps_latestThreadMessage_metadata, _latestThreadMessageProps_latestThreadMessage;
1142
- if ((_latestThreadMessageProps_latestThreadMessage = latestThreadMessageProps.latestThreadMessage) === null || _latestThreadMessageProps_latestThreadMessage === void 0 ? void 0 : (_latestThreadMessageProps_latestThreadMessage_metadata = _latestThreadMessageProps_latestThreadMessage.metadata) === null || _latestThreadMessageProps_latestThreadMessage_metadata === void 0 ? void 0 : _latestThreadMessageProps_latestThreadMessage_metadata.isBlocking) return false;
1143
- if (isMutating) return true;
1144
- if (!latestRunProps.latestRun) return false;
1145
- if (progressStatuses.includes(latestRunProps.latestRun.status)) return true;
1146
- if (stoppedStatuses.includes(latestRunProps.latestRun.status)) return false;
1147
- return isRunEditingThreadMessage({
1148
- threadMessage: latestThreadMessageProps.latestThreadMessage
924
+ // src/components/runSteps/RunStep/ToolCalls/ToolCall/Fn/DefaultFunction/lib/title.ts
925
+ var title = function(param) {
926
+ var fn = param.fn, runStep = param.runStep;
927
+ if (runStep.completed_at) {
928
+ return "Finished ".concat(fn.name);
929
+ } else if (runStep.cancelled_at) {
930
+ return "Cancelled ".concat(fn.name);
931
+ } else {
932
+ return "Calling ".concat(fn.name);
933
+ }
934
+ };
935
+ // src/components/runSteps/RunStep/ToolCalls/ToolCall/Fn/DefaultFunction/index.tsx
936
+ var import_jsx_runtime13 = require("react/jsx-runtime");
937
+ var DefaultFunction = function(param) {
938
+ var fn = param.fn, runStep = param.runStep;
939
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(FunctionBase, {
940
+ fn: fn,
941
+ runStep: runStep,
942
+ title: title({
943
+ runStep: runStep,
944
+ fn: fn
945
+ })
946
+ });
947
+ };
948
+ // src/components/runSteps/RunStep/ToolCalls/ToolCall/Fn/index.tsx
949
+ var import_jsx_runtime14 = // @ts-ignore-next-line
950
+ require("react/jsx-runtime");
951
+ var Fn = function(param) {
952
+ var fn = param.fn, runStep = param.runStep;
953
+ var functionComponentsContext = (0, import_react12.useContext)(FunctionComponentsContext);
954
+ var Component = functionComponentsContext[fn.name] || DefaultFunction;
955
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Component, {
956
+ fn: fn,
957
+ runStep: runStep
958
+ });
959
+ };
960
+ // src/components/runSteps/RunStep/ToolCalls/ToolCall/CodeInterpreter/index.tsx
961
+ var import_themes11 = require("@radix-ui/themes");
962
+ var import_jsx_runtime15 = require("react/jsx-runtime");
963
+ var CodeInterpreter = function(param) {
964
+ var codeInterpreter = param.codeInterpreter;
965
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_themes11.Flex, {
966
+ children: codeInterpreter.input
967
+ });
968
+ };
969
+ // src/components/runSteps/RunStep/ToolCalls/ToolCall/index.tsx
970
+ var import_jsx_runtime16 = require("react/jsx-runtime");
971
+ var ToolCall = function(param) {
972
+ var toolCall = param.toolCall, runStep = param.runStep;
973
+ if (toolCall.type === "function") {
974
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Fn, {
975
+ fn: toolCall.function,
976
+ runStep: runStep
977
+ });
978
+ }
979
+ if (toolCall.type === "code_interpreter") {
980
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(CodeInterpreter, {
981
+ codeInterpreter: toolCall.code_interpreter,
982
+ runStep: runStep
983
+ });
984
+ }
985
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_themes12.Flex, {
986
+ children: toolCall.type
1149
987
  });
1150
988
  };
1151
- var useIsRunActive = function() {
1152
- var latestRunProps = useLatestRun();
1153
- var latestThreadMessageProps = useLatestThreadMessage();
1154
- var threadContext = useSuperinterfaceContext();
1155
- var isMutatingCreateRun = (0, import_react_query6.useIsMutating)({
1156
- mutationKey: [
1157
- "createRun",
1158
- threadContext.variables
1159
- ]
1160
- });
1161
- var isMutatingCreateThreadMessage = (0, import_react_query6.useIsMutating)({
1162
- mutationKey: [
1163
- "createThreadMessage",
1164
- threadContext.variables
989
+ // src/components/runSteps/RunStep/ToolCalls/Starting/index.tsx
990
+ var import_themes13 = require("@radix-ui/themes");
991
+ var import_react_icons3 = require("@radix-ui/react-icons");
992
+ var import_jsx_runtime17 = require("react/jsx-runtime");
993
+ var Starting = function() {
994
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_themes13.PopoverRoot, {
995
+ children: [
996
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(ToolCallBase, {
997
+ children: [
998
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_react_icons3.CircleIcon, {}),
999
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ToolCallTitle, {
1000
+ children: "Starting actions"
1001
+ })
1002
+ ]
1003
+ }),
1004
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_themes13.PopoverContent, {
1005
+ style: {
1006
+ maxHeight: "500px"
1007
+ },
1008
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_themes13.Text, {
1009
+ children: "Getting ready to connect to domain API"
1010
+ })
1011
+ })
1165
1012
  ]
1166
1013
  });
1167
- var isMutatingCreateHandleAction = (0, import_react_query6.useIsMutating)({
1168
- mutationKey: [
1169
- "handleAction",
1170
- threadContext.variables
1014
+ };
1015
+ // src/components/runSteps/RunStep/ToolCalls/index.tsx
1016
+ var import_jsx_runtime18 = require("react/jsx-runtime");
1017
+ var ToolCalls = function(param) {
1018
+ var stepDetails = param.stepDetails, runStep = param.runStep;
1019
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_themes14.Flex, {
1020
+ direction: "column",
1021
+ children: [
1022
+ !stepDetails.tool_calls.length && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Starting, {}),
1023
+ stepDetails.tool_calls.map(function(toolCall) {
1024
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ToolCall, {
1025
+ toolCall: toolCall,
1026
+ runStep: runStep
1027
+ }, toolCall.id);
1028
+ })
1171
1029
  ]
1172
1030
  });
1173
- return (0, import_react12.useMemo)(function() {
1174
- return _object_spread_props(_object_spread({}, latestRunProps), {
1175
- isRunActive: isRunActive({
1176
- latestRunProps: latestRunProps,
1177
- latestThreadMessageProps: latestThreadMessageProps,
1178
- isMutating: isMutatingCreateRun > 0 || isMutatingCreateThreadMessage > 0 || isMutatingCreateHandleAction > 0
1179
- })
1180
- });
1181
- }, [
1182
- latestRunProps,
1183
- latestThreadMessageProps,
1184
- isMutatingCreateRun,
1185
- isMutatingCreateThreadMessage,
1186
- isMutatingCreateHandleAction
1187
- ]);
1188
1031
  };
1189
- // src/hooks/runs/usePolling/lib/refetch.ts
1190
- var refetch = function() {
1191
- var _ref = _async_to_generator(function(param) {
1192
- var queryClient, threadContext, _threadContext_defaultOptions_queries_queryKey, _threadContext_defaultOptions_queries_queryKey1;
1193
- return _ts_generator(this, function(_state) {
1194
- switch(_state.label){
1195
- case 0:
1196
- queryClient = param.queryClient, threadContext = param.threadContext;
1197
- return [
1198
- 4,
1199
- queryClient.invalidateQueries({
1200
- queryKey: (_threadContext_defaultOptions_queries_queryKey = threadContext.defaultOptions.queries.queryKey) !== null && _threadContext_defaultOptions_queries_queryKey !== void 0 ? _threadContext_defaultOptions_queries_queryKey : [
1201
- "threadMessages",
1202
- threadContext.variables
1203
- ]
1204
- })
1205
- ];
1206
- case 1:
1207
- _state.sent();
1208
- return [
1209
- 4,
1210
- queryClient.invalidateQueries({
1211
- queryKey: (_threadContext_defaultOptions_queries_queryKey1 = threadContext.defaultOptions.queries.queryKey) !== null && _threadContext_defaultOptions_queries_queryKey1 !== void 0 ? _threadContext_defaultOptions_queries_queryKey1 : [
1212
- "runs",
1213
- threadContext.variables
1214
- ]
1215
- })
1216
- ];
1217
- case 2:
1218
- _state.sent();
1219
- return [
1220
- 2
1221
- ];
1222
- }
1223
- });
1224
- });
1225
- return function refetch(_) {
1226
- return _ref.apply(this, arguments);
1227
- };
1228
- }();
1229
- // src/hooks/runs/usePolling/index.tsx
1230
- var usePolling = function() {
1231
- var threadContext = useSuperinterfaceContext();
1232
- var queryClient = (0, import_react_query7.useQueryClient)();
1233
- var isRunActiveProps = useIsRunActive();
1234
- (0, import_react_use.useInterval)(function() {
1235
- refetch({
1236
- queryClient: queryClient,
1237
- threadContext: threadContext
1032
+ // src/components/runSteps/RunStep/index.tsx
1033
+ var import_jsx_runtime19 = require("react/jsx-runtime");
1034
+ var RunStep = function(param) {
1035
+ var runStep = param.runStep;
1036
+ if (runStep.step_details.type === "tool_calls") {
1037
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(ToolCalls, {
1038
+ stepDetails: runStep.step_details,
1039
+ runStep: runStep
1238
1040
  });
1239
- console.log("poll refetched");
1240
- }, isRunActiveProps.isRunActive ? 3e3 : null);
1041
+ }
1241
1042
  return null;
1242
1043
  };
1243
- // src/hooks/actions/useManageActions/index.tsx
1244
- var import_react_query9 = require("@tanstack/react-query");
1044
+ // src/components/runSteps/RunSteps/index.tsx
1045
+ var import_jsx_runtime20 = require("react/jsx-runtime");
1046
+ var RunSteps = function(param) {
1047
+ var runSteps = param.runSteps;
1048
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_themes15.Flex, {
1049
+ direction: "column-reverse",
1050
+ children: runSteps.map(function(runStep) {
1051
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(RunStep, {
1052
+ runStep: runStep
1053
+ }, runStep.id);
1054
+ })
1055
+ });
1056
+ };
1057
+ // src/components/threads/Thread/Message/TextContent/index.tsx
1058
+ var import_react14 = require("react");
1059
+ var import_react_remark = require("react-remark");
1060
+ // src/contexts/markdown/MarkdownContext/index.ts
1245
1061
  var import_react13 = require("react");
1246
- // src/hooks/actions/useHandleAction/index.tsx
1247
- var import_radash3 = require("radash");
1248
- var import_react_query8 = require("@tanstack/react-query");
1249
- // src/hooks/actions/useHandleAction/lib/onSettled.ts
1250
- var onSettled2 = function(param) {
1251
- var queryClient = param.queryClient;
1252
- return function() {
1253
- var _ref = _async_to_generator(function(_data, _error, variables) {
1254
- return _ts_generator(this, function(_state) {
1255
- switch(_state.label){
1256
- case 0:
1257
- return [
1258
- 4,
1259
- queryClient.invalidateQueries({
1260
- queryKey: [
1261
- "threadMessages",
1262
- variables
1263
- ]
1264
- })
1265
- ];
1266
- case 1:
1267
- _state.sent();
1268
- return [
1269
- 4,
1270
- queryClient.invalidateQueries({
1271
- queryKey: [
1272
- "runs",
1273
- variables
1274
- ]
1275
- })
1276
- ];
1277
- case 2:
1278
- _state.sent();
1279
- return [
1280
- 2
1281
- ];
1282
- }
1283
- });
1284
- });
1285
- return function(_data, _error, variables) {
1286
- return _ref.apply(this, arguments);
1287
- };
1288
- }();
1062
+ // src/contexts/markdown/MarkdownContext/lib/components/Paragraph.tsx
1063
+ var import_themes16 = require("@radix-ui/themes");
1064
+ var import_jsx_runtime21 = require("react/jsx-runtime");
1065
+ var Paragraph = function(param) {
1066
+ var children = param.children;
1067
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_themes16.Box, {
1068
+ pb: "3",
1069
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_themes16.Text, {
1070
+ size: "3",
1071
+ style: {
1072
+ whiteSpace: "pre-line",
1073
+ wordBreak: "break-word"
1074
+ },
1075
+ children: children
1076
+ })
1077
+ });
1289
1078
  };
1290
- // src/hooks/actions/useHandleAction/index.tsx
1291
- var useHandleAction = function() {
1292
- var queryClient = (0, import_react_query8.useQueryClient)();
1293
- var superinterfaceContext = useSuperinterfaceContext();
1294
- var threadContext = useSuperinterfaceContext();
1295
- var props = (0, import_react_query8.useMutation)(_object_spread({
1296
- onSettled: onSettled2({
1297
- queryClient: queryClient
1079
+ // src/contexts/markdown/MarkdownContext/lib/components/Link.tsx
1080
+ var import_themes17 = require("@radix-ui/themes");
1081
+ var import_jsx_runtime22 = require("react/jsx-runtime");
1082
+ var Link = function(param) {
1083
+ var children = param.children, href = param.href;
1084
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_themes17.Link, {
1085
+ href: href,
1086
+ children: children
1087
+ });
1088
+ };
1089
+ // src/contexts/markdown/MarkdownContext/lib/components/UnorderedList.tsx
1090
+ var import_themes18 = require("@radix-ui/themes");
1091
+ var import_jsx_runtime23 = require("react/jsx-runtime");
1092
+ var UnorderedList = function(param) {
1093
+ var children = param.children;
1094
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_themes18.Box, {
1095
+ pb: "3",
1096
+ asChild: true,
1097
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("ul", {
1098
+ style: {
1099
+ listStylePosition: "inside"
1100
+ },
1101
+ children: children
1102
+ })
1103
+ });
1104
+ };
1105
+ // src/contexts/markdown/MarkdownContext/lib/components/OrderedList.tsx
1106
+ var import_themes19 = require("@radix-ui/themes");
1107
+ var import_jsx_runtime24 = require("react/jsx-runtime");
1108
+ var OrderedList = function(param) {
1109
+ var children = param.children;
1110
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_themes19.Box, {
1111
+ pb: "3",
1112
+ asChild: true,
1113
+ children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("ol", {
1114
+ style: {
1115
+ listStylePosition: "inside"
1116
+ },
1117
+ children: children
1298
1118
  })
1299
- }, mutationOptions({
1300
- mutationKeyBase: [
1301
- "handleAction"
1302
- ],
1303
- path: "/actions",
1304
- queryClient: queryClient,
1305
- threadContext: threadContext,
1306
- superinterfaceContext: superinterfaceContext
1307
- })));
1308
- return _object_spread_props(_object_spread({}, props), {
1309
- handleAction: (0, import_radash3.partob)(props.mutate, threadContext.variables)
1310
1119
  });
1311
1120
  };
1312
- // src/hooks/actions/useManageActions/index.tsx
1313
- var useManageActions = function() {
1314
- var queryClient = (0, import_react_query9.useQueryClient)();
1315
- var threadContext = useSuperinterfaceContext();
1316
- var latestRunProps = useLatestRun();
1317
- var handleActionProps = useHandleAction();
1318
- (0, import_react13.useEffect)(function() {
1319
- if (handleActionProps.isPending) return;
1320
- if (latestRunProps.isFetching) return;
1321
- if (!latestRunProps.latestRun) return;
1322
- if (latestRunProps.latestRun.status !== "requires_action") return;
1323
- var isMutating = queryClient.isMutating({
1324
- mutationKey: [
1325
- "handleAction",
1326
- threadContext.variables
1327
- ]
1121
+ // src/contexts/markdown/MarkdownContext/lib/components/ListItem.tsx
1122
+ var import_themes20 = require("@radix-ui/themes");
1123
+ var import_jsx_runtime25 = require("react/jsx-runtime");
1124
+ var ListItem = function(param) {
1125
+ var children = param.children;
1126
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_themes20.Box, {
1127
+ pb: "1",
1128
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("li", {
1129
+ children: children
1130
+ })
1131
+ });
1132
+ };
1133
+ // src/contexts/markdown/MarkdownContext/lib/components/Strong.tsx
1134
+ var import_themes21 = require("@radix-ui/themes");
1135
+ var import_jsx_runtime26 = require("react/jsx-runtime");
1136
+ var Strong = function(param) {
1137
+ var children = param.children;
1138
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_themes21.Strong, {
1139
+ children: children
1140
+ });
1141
+ };
1142
+ // src/contexts/markdown/MarkdownContext/lib/components/index.tsx
1143
+ var components = {
1144
+ p: Paragraph,
1145
+ a: Link,
1146
+ strong: Strong,
1147
+ ul: UnorderedList,
1148
+ ol: OrderedList,
1149
+ li: ListItem
1150
+ };
1151
+ // src/contexts/markdown/MarkdownContext/index.ts
1152
+ var MarkdownContext = (0, import_react13.createContext)({
1153
+ remarkPlugins: [],
1154
+ rehypeReactOptions: {
1155
+ components: components
1156
+ }
1157
+ });
1158
+ // src/components/threads/Thread/Message/TextContent/index.tsx
1159
+ var TextContent = function(param) {
1160
+ var content = param.content;
1161
+ var markdownContext = (0, import_react14.useContext)(MarkdownContext);
1162
+ return (0, import_react_remark.useRemarkSync)(content.text.value, markdownContext);
1163
+ };
1164
+ // src/components/threads/Thread/Message/index.tsx
1165
+ var import_jsx_runtime27 = require("react/jsx-runtime");
1166
+ var Message = function(param) {
1167
+ var message = param.message;
1168
+ var _ref = _sliced_to_array((0, import_react15.useMemo)(function() {
1169
+ if (!message.runSteps.length) return [
1170
+ [],
1171
+ []
1172
+ ];
1173
+ var messageCreationRunStepIndex = message.runSteps.findIndex(function(runStep) {
1174
+ if (runStep.step_details.type !== "message_creation") return;
1175
+ return runStep.step_details.message_creation.message_id === message.id;
1328
1176
  });
1329
- if (isMutating) return;
1330
- console.log("requires action", {
1331
- latestRunProps: latestRunProps
1177
+ var nextRunStepIndex = message.runSteps.slice(0, messageCreationRunStepIndex).findLastIndex(function(runStep) {
1178
+ return runStep.step_details.type === "message_creation";
1332
1179
  });
1333
- handleActionProps.handleAction({
1334
- latestRun: latestRunProps.latestRun
1180
+ if (nextRunStepIndex === -1) {
1181
+ nextRunStepIndex = 0;
1182
+ }
1183
+ var laterRunSteps2 = message.runSteps.slice(nextRunStepIndex, messageCreationRunStepIndex);
1184
+ var prevRunStepIndex = message.runSteps.slice(messageCreationRunStepIndex + 1).findIndex(function(runStep) {
1185
+ return runStep.step_details.type === "message_creation";
1335
1186
  });
1187
+ var olderRunSteps2;
1188
+ if (prevRunStepIndex === -1) {
1189
+ olderRunSteps2 = message.runSteps.slice(messageCreationRunStepIndex + 1);
1190
+ } else {
1191
+ olderRunSteps2 = message.runSteps.slice(messageCreationRunStepIndex + 1, messageCreationRunStepIndex + prevRunStepIndex);
1192
+ }
1193
+ return [
1194
+ olderRunSteps2,
1195
+ laterRunSteps2
1196
+ ];
1336
1197
  }, [
1337
- handleActionProps,
1338
- latestRunProps
1339
- ]);
1340
- return null;
1341
- };
1342
- // src/hooks/threads/useThreadLifecycles/index.tsx
1343
- var useThreadLifecycles = function() {
1344
- useManageRuns();
1345
- useManageActions();
1346
- usePolling();
1347
- return null;
1348
- };
1349
- // src/hooks/threadMessageGroups/useThreadMessageGroups/index.ts
1350
- var import_react14 = require("react");
1351
- // src/hooks/threadMessageGroups/useThreadMessageGroups/lib/threadMessageGroups/index.ts
1352
- var import_lodash6 = __toESM(require("lodash"), 1);
1353
- var import_radash5 = require("radash");
1354
- // src/lib/threadMessages/order.ts
1355
- var import_radash4 = require("radash");
1356
- var order = function(param) {
1357
- var threadMessages2 = param.threadMessages;
1358
- return (0, import_radash4.sort)(threadMessages2, function(tm) {
1359
- return tm.created_at;
1360
- }, true);
1361
- };
1362
- // src/hooks/threadMessageGroups/useThreadMessageGroups/lib/threadMessageGroups/newGroup/newGroupItem.ts
1363
- var newGroupItem = function(param) {
1364
- var threadMessage = param.threadMessage;
1365
- return {
1366
- id: threadMessage.id,
1367
- role: threadMessage.role,
1368
- createdAt: threadMessage.created_at,
1369
- threadMessages: [
1370
- threadMessage
1198
+ message
1199
+ ]), 2), olderRunSteps = _ref[0], laterRunSteps = _ref[1];
1200
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_themes22.Box, {
1201
+ children: [
1202
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(RunSteps, {
1203
+ runSteps: olderRunSteps
1204
+ }),
1205
+ message.content.map(function(content, index) {
1206
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_themes22.Box, {
1207
+ children: content.type === "text" && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(TextContent, {
1208
+ content: content
1209
+ })
1210
+ }, index);
1211
+ }),
1212
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(RunSteps, {
1213
+ runSteps: laterRunSteps
1214
+ })
1371
1215
  ]
1372
- };
1216
+ });
1373
1217
  };
1374
- // src/hooks/threadMessageGroups/useThreadMessageGroups/lib/threadMessageGroups/newGroup/index.ts
1375
- var newGroup = function(param) {
1376
- var groups = param.groups, threadMessage = param.threadMessage;
1377
- return _to_consumable_array(groups).concat([
1378
- newGroupItem({
1379
- threadMessage: threadMessage
1218
+ // src/components/threads/Thread/Messages/Content/MessageGroup/Content/index.tsx
1219
+ var import_jsx_runtime28 = require("react/jsx-runtime");
1220
+ var Content2 = function(param) {
1221
+ var messageGroup = param.messageGroup;
1222
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_themes23.Flex, {
1223
+ direction: "column-reverse",
1224
+ children: messageGroup.messages.map(function(message) {
1225
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Message, {
1226
+ message: message
1227
+ }, message.id);
1380
1228
  })
1381
- ]);
1229
+ });
1382
1230
  };
1383
- // src/hooks/threadMessageGroups/useThreadMessageGroups/lib/threadMessageGroups/index.ts
1384
- var threadMessageGroups = function(param) {
1385
- var threadMessages2 = param.threadMessages;
1386
- return import_lodash6.default.reduce(order({
1387
- threadMessages: threadMessages2
1388
- }), function(groups, threadMessage) {
1389
- var group = (0, import_radash5.last)(groups);
1390
- if (!group) return newGroup({
1391
- groups: groups,
1392
- threadMessage: threadMessage
1393
- });
1394
- if (group.role !== threadMessage.role) {
1395
- return newGroup({
1396
- groups: groups,
1397
- threadMessage: threadMessage
1398
- });
1399
- }
1400
- return _to_consumable_array(import_lodash6.default.dropRight(groups)).concat([
1401
- _object_spread_props(_object_spread({}, group), {
1402
- threadMessages: _to_consumable_array(group.threadMessages).concat([
1403
- threadMessage
1404
- ])
1231
+ // src/components/threads/Thread/Messages/Content/MessageGroup/index.tsx
1232
+ var import_jsx_runtime29 = require("react/jsx-runtime");
1233
+ var MessageGroup = function(param) {
1234
+ var messageGroup = param.messageGroup;
1235
+ var assistantNameContext = (0, import_react16.useContext)(AssistantNameContext);
1236
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(MessageGroupBase, {
1237
+ children: [
1238
+ messageGroup.role === "user" ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_themes24.Avatar, {
1239
+ fallback: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_react_icons4.PersonIcon, {}),
1240
+ size: "1"
1241
+ }) : /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(AssistantAvatar, {}),
1242
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_themes24.Box, {
1243
+ flexGrow: "1",
1244
+ children: [
1245
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Name, {
1246
+ children: messageGroup.role === "user" ? "You" : assistantNameContext
1247
+ }),
1248
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Content2, {
1249
+ messageGroup: messageGroup
1250
+ })
1251
+ ]
1405
1252
  })
1406
- ]);
1407
- }, []);
1253
+ ]
1254
+ });
1408
1255
  };
1409
- // src/hooks/threadMessageGroups/useThreadMessageGroups/index.ts
1410
- var useThreadMessageGroups = function(param) {
1411
- var threadMessages2 = param.threadMessages;
1412
- return (0, import_react14.useMemo)(function() {
1413
- return {
1414
- threadMessageGroups: threadMessageGroups({
1415
- threadMessages: threadMessages2
1416
- })
1417
- };
1418
- }, [
1419
- threadMessages2
1420
- ]);
1256
+ // src/components/threads/Thread/Messages/Content/index.tsx
1257
+ var import_jsx_runtime30 = require("react/jsx-runtime");
1258
+ var Content3 = function() {
1259
+ var _useMessages = useMessages(), messages2 = _useMessages.messages, isLoading = _useMessages.isLoading, isLoadingError = _useMessages.isLoadingError;
1260
+ var _useMessageGroups = useMessageGroups({
1261
+ messages: messages2
1262
+ }), messageGroups2 = _useMessageGroups.messageGroups;
1263
+ if (isLoading || isLoadingError) {
1264
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(MessagesSkeleton, {});
1265
+ }
1266
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_jsx_runtime30.Fragment, {
1267
+ children: messageGroups2.map(function(messageGroup) {
1268
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(MessageGroup, {
1269
+ messageGroup: messageGroup
1270
+ }, messageGroup.id);
1271
+ })
1272
+ });
1421
1273
  };
1422
- // src/components/threadMessages/ThreadMessages/Content/ThreadMessageGroup/index.tsx
1423
- var import_react24 = require("react");
1424
- var import_themes24 = require("@radix-ui/themes");
1425
- var import_react_icons4 = require("@radix-ui/react-icons");
1426
- // src/components/threadMessageGroups/ThreadMessagesGroupBase/AssistantAvatar.tsx
1427
- var import_react16 = require("react");
1428
- var import_themes6 = require("@radix-ui/themes");
1429
- // src/contexts/assistants/AssistantAvatarContext/index.tsx
1430
- var import_react15 = require("react");
1431
- var import_themes5 = require("@radix-ui/themes");
1432
- var import_react_icons = require("@radix-ui/react-icons");
1433
- var import_jsx_runtime6 = require("react/jsx-runtime");
1434
- var AssistantAvatarContext = (0, import_react15.createContext)(/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_themes5.Avatar, {
1435
- fallback: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_react_icons.LightningBoltIcon, {}),
1436
- size: "1"
1437
- }));
1438
- // src/components/threadMessageGroups/ThreadMessagesGroupBase/AssistantAvatar.tsx
1439
- var import_jsx_runtime7 = require("react/jsx-runtime");
1440
- var AssistantAvatar = function() {
1441
- var AssistantAvatarContextValue = (0, import_react16.useContext)(AssistantAvatarContext);
1442
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_themes6.Flex, {
1443
- shrink: "0",
1274
+ // src/components/threads/Thread/Messages/Progress/index.tsx
1275
+ var import_themes27 = require("@radix-ui/themes");
1276
+ // src/components/skeletons/StartingContentSkeleton/index.tsx
1277
+ var import_themes25 = require("@radix-ui/themes");
1278
+ var import_jsx_runtime31 = require("react/jsx-runtime");
1279
+ var StartingContentSkeleton = function() {
1280
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_themes25.Box, {
1281
+ flexShrink: "0",
1282
+ mt: "1",
1283
+ height: "var(--space-4)",
1284
+ width: "var(--space-4)",
1444
1285
  style: {
1286
+ animation: "pulse 2s cubic-bezier(.4,0,.6,1) infinite",
1445
1287
  borderRadius: "var(--radius-3)",
1446
- overflow: "hidden",
1447
- height: "24px",
1448
- width: "24px"
1449
- },
1450
- children: AssistantAvatarContextValue
1288
+ backgroundColor: "var(--gray-12)"
1289
+ }
1451
1290
  });
1452
1291
  };
1453
- // src/contexts/assistants/AssistantNameContext/index.tsx
1292
+ // src/components/skeletons/StartingSkeleton/index.tsx
1454
1293
  var import_react17 = require("react");
1455
- var AssistantNameContext = (0, import_react17.createContext)("Assistant");
1456
- // src/components/threadMessages/ThreadMessages/Content/ThreadMessageGroup/Content/index.tsx
1457
- var import_themes23 = require("@radix-ui/themes");
1458
- // src/components/ThreadMessages/ThreadMessage/index.tsx
1459
- var import_react23 = require("react");
1460
- var import_themes22 = require("@radix-ui/themes");
1461
- // src/components/runSteps/RunSteps/index.tsx
1462
- var import_themes15 = require("@radix-ui/themes");
1463
- // src/components/runSteps/RunStep/ToolCalls/index.tsx
1464
- var import_themes14 = require("@radix-ui/themes");
1465
- // src/components/runSteps/RunStep/ToolCalls/ToolCall/index.tsx
1466
- var import_themes12 = require("@radix-ui/themes");
1467
- // src/components/runSteps/RunStep/ToolCalls/ToolCall/Fn/index.tsx
1468
- var import_react20 = require("react");
1469
- // src/contexts/functions/FunctionComponentsContext/index.tsx
1470
- var import_react18 = require("react");
1471
- var FunctionComponentsContext = (0, import_react18.createContext)({});
1472
- // src/components/functions/FunctionBase/index.tsx
1473
- var import_themes10 = require("@radix-ui/themes");
1474
- // src/components/toolCalls/ToolCallBase/index.tsx
1475
- var import_themes7 = require("@radix-ui/themes");
1476
- var import_jsx_runtime8 = require("react/jsx-runtime");
1477
- var ToolCallBase = function(param) {
1478
- var children = param.children;
1479
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_themes7.Flex, {
1480
- py: "1",
1481
- ml: "-2",
1482
- children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_themes7.PopoverTrigger, {
1483
- children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_themes7.Button, {
1484
- size: "1",
1485
- color: "gold",
1486
- variant: "outline",
1487
- style: {
1488
- boxShadow: "none"
1489
- },
1490
- children: children
1491
- })
1492
- })
1493
- });
1494
- };
1495
- // src/components/toolCalls/ToolCallBase/ToolCallTitle.tsx
1496
- var import_themes8 = require("@radix-ui/themes");
1497
- var import_jsx_runtime9 = require("react/jsx-runtime");
1498
- var ToolCallTitle = function(param) {
1294
+ var import_themes26 = require("@radix-ui/themes");
1295
+ var import_jsx_runtime32 = require("react/jsx-runtime");
1296
+ var StartingSkeleton = function(param) {
1499
1297
  var children = param.children;
1500
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_themes8.Text, {
1501
- weight: "regular",
1502
- children: children
1298
+ var assistantNameContext = (0, import_react17.useContext)(AssistantNameContext);
1299
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(MessageGroupBase, {
1300
+ children: [
1301
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(AssistantAvatar, {}),
1302
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_themes26.Box, {
1303
+ children: [
1304
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Name, {
1305
+ children: assistantNameContext
1306
+ }),
1307
+ children,
1308
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(StartingContentSkeleton, {})
1309
+ ]
1310
+ })
1311
+ ]
1503
1312
  });
1504
1313
  };
1505
- // src/components/functions/FunctionBase/Icon.tsx
1506
- var import_react_icons2 = require("@radix-ui/react-icons");
1507
- var import_jsx_runtime10 = require("react/jsx-runtime");
1508
- var Icon = function(param) {
1509
- var runStep = param.runStep;
1510
- if (runStep.completed_at) {
1511
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_react_icons2.CheckCircledIcon, {});
1512
- } else if (runStep.cancelled_at || runStep.failed_at || runStep.status === "expired") {
1513
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_react_icons2.CircleBackslashIcon, {});
1514
- } else {
1515
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_react_icons2.CircleIcon, {});
1516
- }
1314
+ // src/hooks/messages/useLatestMessage/index.ts
1315
+ var import_react18 = require("react");
1316
+ var useLatestMessage = function() {
1317
+ var props = useMessages();
1318
+ return (0, import_react18.useMemo)(function() {
1319
+ return _object_spread_props(_object_spread({}, props), {
1320
+ latestMessage: props.messages[0] || null
1321
+ });
1322
+ }, [
1323
+ props
1324
+ ]);
1517
1325
  };
1518
- // src/components/functions/FunctionBase/Content.tsx
1326
+ // src/hooks/runs/useIsRunActive/index.tsx
1327
+ var import_react21 = require("react");
1328
+ var import_react_query4 = require("@tanstack/react-query");
1329
+ // src/hooks/runs/useLatestRun/index.ts
1330
+ var import_react20 = require("react");
1331
+ // src/hooks/runs/useRuns/index.tsx
1519
1332
  var import_react19 = require("react");
1520
- var import_themes9 = require("@radix-ui/themes");
1521
- var import_jsx_runtime11 = require("react/jsx-runtime");
1522
- var Content = function(param) {
1523
- var fn = param.fn;
1524
- var args = (0, import_react19.useMemo)(function() {
1525
- var result = null;
1526
- try {
1527
- result = JSON.parse(fn.arguments);
1528
- } catch (error) {
1529
- console.error(error);
1530
- }
1531
- return result;
1333
+ var import_react_query3 = require("@tanstack/react-query");
1334
+ // src/hooks/runs/useRuns/lib/getRuns.ts
1335
+ var getRuns = function(param) {
1336
+ var data3 = param.data;
1337
+ if (!data3) return [];
1338
+ return data3.pages.reduce(function(acc, page) {
1339
+ return acc.concat(page.data);
1340
+ }, []);
1341
+ };
1342
+ // src/hooks/runs/useRuns/index.tsx
1343
+ var useRuns = function() {
1344
+ var queryClient = (0, import_react_query3.useQueryClient)();
1345
+ var superinterfaceContext = useSuperinterfaceContext();
1346
+ var threadContext = useSuperinterfaceContext();
1347
+ var props = (0, import_react_query3.useInfiniteQuery)(queryOptions({
1348
+ queryKeyBase: [
1349
+ "runs"
1350
+ ],
1351
+ path: "/runs",
1352
+ queryClient: queryClient,
1353
+ threadContext: threadContext,
1354
+ superinterfaceContext: superinterfaceContext
1355
+ }));
1356
+ return (0, import_react19.useMemo)(function() {
1357
+ return _object_spread_props(_object_spread({}, props), {
1358
+ // @ts-ignore-next-line
1359
+ runs: getRuns({
1360
+ data: props.data
1361
+ })
1362
+ });
1532
1363
  }, [
1533
- fn
1364
+ props
1534
1365
  ]);
1535
- var output = (0, import_react19.useMemo)(function() {
1536
- if (!fn.output) {
1537
- return null;
1538
- }
1539
- var result = null;
1540
- try {
1541
- result = JSON.parse(fn.output);
1542
- } catch (error) {
1543
- console.error(error);
1544
- }
1545
- return result;
1366
+ };
1367
+ // src/hooks/runs/useLatestRun/index.ts
1368
+ var useLatestRun = function() {
1369
+ var props = useRuns();
1370
+ return (0, import_react20.useMemo)(function() {
1371
+ return _object_spread_props(_object_spread({}, props), {
1372
+ latestRun: props.runs[0]
1373
+ });
1546
1374
  }, [
1547
- fn
1375
+ props
1548
1376
  ]);
1549
- if (!args) {
1550
- return null;
1551
- }
1552
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_themes9.Code, {
1553
- variant: "ghost",
1554
- color: "gold",
1555
- style: {
1556
- whiteSpace: "pre",
1557
- wordBreak: "break-word"
1558
- },
1559
- children: [
1560
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_themes9.Box, {
1561
- children: args && JSON.stringify(args, null, 2)
1562
- }),
1563
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_themes9.Box, {
1564
- children: output && JSON.stringify(output, null, 2)
1565
- })
1377
+ };
1378
+ // src/lib/runs/isRunEditingMessage/index.ts
1379
+ var import_lodash4 = __toESM(require("lodash"), 1);
1380
+ var isRunEditingMessage = function(param) {
1381
+ var message = param.message;
1382
+ if (!message) return false;
1383
+ if (message.role === "user") return false;
1384
+ if (!message.run_id) return false;
1385
+ var hasContent = import_lodash4.default.some(message.content, function(content) {
1386
+ var _content_text;
1387
+ return content.type !== "text" || content.type === "text" && ((_content_text = content.text) === null || _content_text === void 0 ? void 0 : _content_text.value) !== "";
1388
+ });
1389
+ return !hasContent;
1390
+ };
1391
+ // src/hooks/runs/useIsRunActive/index.tsx
1392
+ var progressStatuses = [
1393
+ "queued",
1394
+ "in_progress",
1395
+ "cancelling",
1396
+ "requires_action"
1397
+ ];
1398
+ var stoppedStatuses = [
1399
+ "expired",
1400
+ "cancelled",
1401
+ "failed"
1402
+ ];
1403
+ var isRunActive = function(param) {
1404
+ var latestRunProps = param.latestRunProps, latestMessageProps = param.latestMessageProps, isMutating = param.isMutating;
1405
+ var _latestMessageProps_latestMessage_metadata, _latestMessageProps_latestMessage;
1406
+ if ((_latestMessageProps_latestMessage = latestMessageProps.latestMessage) === null || _latestMessageProps_latestMessage === void 0 ? void 0 : (_latestMessageProps_latestMessage_metadata = _latestMessageProps_latestMessage.metadata) === null || _latestMessageProps_latestMessage_metadata === void 0 ? void 0 : _latestMessageProps_latestMessage_metadata.isBlocking) return false;
1407
+ if (isMutating) return true;
1408
+ if (!latestRunProps.latestRun) return false;
1409
+ if (progressStatuses.includes(latestRunProps.latestRun.status)) return true;
1410
+ if (stoppedStatuses.includes(latestRunProps.latestRun.status)) return false;
1411
+ return isRunEditingMessage({
1412
+ message: latestMessageProps.latestMessage
1413
+ });
1414
+ };
1415
+ var useIsRunActive = function() {
1416
+ var latestRunProps = useLatestRun();
1417
+ var latestMessageProps = useLatestMessage();
1418
+ var threadContext = useSuperinterfaceContext();
1419
+ var isMutatingCreateRun = (0, import_react_query4.useIsMutating)({
1420
+ mutationKey: [
1421
+ "createRun",
1422
+ threadContext.variables
1423
+ ]
1424
+ });
1425
+ var isMutatingCreateMessage = (0, import_react_query4.useIsMutating)({
1426
+ mutationKey: [
1427
+ "createMessage",
1428
+ threadContext.variables
1429
+ ]
1430
+ });
1431
+ var isMutatingCreateHandleAction = (0, import_react_query4.useIsMutating)({
1432
+ mutationKey: [
1433
+ "handleAction",
1434
+ threadContext.variables
1566
1435
  ]
1567
1436
  });
1437
+ return (0, import_react21.useMemo)(function() {
1438
+ return _object_spread_props(_object_spread({}, latestRunProps), {
1439
+ isRunActive: isRunActive({
1440
+ latestRunProps: latestRunProps,
1441
+ latestMessageProps: latestMessageProps,
1442
+ isMutating: isMutatingCreateRun > 0 || isMutatingCreateMessage > 0 || isMutatingCreateHandleAction > 0
1443
+ })
1444
+ });
1445
+ }, [
1446
+ latestRunProps,
1447
+ latestMessageProps,
1448
+ isMutatingCreateRun,
1449
+ isMutatingCreateMessage,
1450
+ isMutatingCreateHandleAction
1451
+ ]);
1568
1452
  };
1569
- // src/components/functions/FunctionBase/index.tsx
1570
- var import_jsx_runtime12 = require("react/jsx-runtime");
1571
- var FunctionBase = function(param) {
1572
- var fn = param.fn, runStep = param.runStep, title2 = param.title;
1573
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_themes10.PopoverRoot, {
1453
+ // src/components/threads/Thread/Messages/Progress/index.tsx
1454
+ var import_jsx_runtime33 = require("react/jsx-runtime");
1455
+ var Progress = function() {
1456
+ var _useIsRunActive = useIsRunActive(), isRunActive2 = _useIsRunActive.isRunActive;
1457
+ var latestMessage = useLatestMessage().latestMessage;
1458
+ if (!latestMessage) return null;
1459
+ if (!isRunActive2) return null;
1460
+ if (latestMessage.role === "user") {
1461
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(StartingSkeleton, {});
1462
+ }
1463
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(MessageGroupBase, {
1574
1464
  children: [
1575
- /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(ToolCallBase, {
1576
- children: [
1577
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Icon, {
1578
- runStep: runStep
1579
- }),
1580
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(ToolCallTitle, {
1581
- children: title2
1582
- })
1583
- ]
1465
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_themes27.Box, {
1466
+ pl: "5"
1584
1467
  }),
1585
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_themes10.PopoverContent, {
1586
- style: {
1587
- maxHeight: "500px"
1588
- },
1589
- children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Content, {
1590
- fn: fn
1591
- })
1592
- })
1468
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(StartingContentSkeleton, {})
1593
1469
  ]
1594
1470
  });
1595
1471
  };
1596
- // src/components/runSteps/RunStep/ToolCalls/ToolCall/Fn/DefaultFunction/lib/title.ts
1597
- var title = function(param) {
1598
- var fn = param.fn, runStep = param.runStep;
1599
- if (runStep.completed_at) {
1600
- return "Finished ".concat(fn.name);
1601
- } else if (runStep.cancelled_at) {
1602
- return "Cancelled ".concat(fn.name);
1603
- } else {
1604
- return "Calling ".concat(fn.name);
1605
- }
1606
- };
1607
- // src/components/runSteps/RunStep/ToolCalls/ToolCall/Fn/DefaultFunction/index.tsx
1608
- var import_jsx_runtime13 = require("react/jsx-runtime");
1609
- var DefaultFunction = function(param) {
1610
- var fn = param.fn, runStep = param.runStep;
1611
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(FunctionBase, {
1612
- fn: fn,
1613
- runStep: runStep,
1614
- title: title({
1615
- runStep: runStep,
1616
- fn: fn
1617
- })
1472
+ // src/components/threads/Thread/Messages/Root/index.tsx
1473
+ var import_themes28 = require("@radix-ui/themes");
1474
+ // src/hooks/misc/useInfiniteScroll/index.tsx
1475
+ var import_react23 = require("react");
1476
+ var import_react_intersection_observer = require("react-intersection-observer");
1477
+ // src/hooks/misc/useThrottledEffect/index.tsx
1478
+ var import_lodash5 = __toESM(require("lodash"), 1);
1479
+ var import_react22 = require("react");
1480
+ var useThrottledEffect = function(cb, delay, additionalDeps) {
1481
+ var _cbRef;
1482
+ var cbRef = (0, import_react22.useRef)(cb);
1483
+ var throttledCb = (0, import_react22.useCallback)(import_lodash5.default.throttle(function() {
1484
+ for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
1485
+ args[_key] = arguments[_key];
1486
+ }
1487
+ return (_cbRef = cbRef).current.apply(_cbRef, _to_consumable_array(args));
1488
+ }, delay, {
1489
+ leading: true,
1490
+ trailing: true
1491
+ }), [
1492
+ delay
1493
+ ]);
1494
+ (0, import_react22.useEffect)(function() {
1495
+ cbRef.current = cb;
1618
1496
  });
1497
+ (0, import_react22.useEffect)(throttledCb, [
1498
+ throttledCb
1499
+ ].concat(_to_consumable_array(additionalDeps)));
1619
1500
  };
1620
- // src/components/runSteps/RunStep/ToolCalls/ToolCall/Fn/index.tsx
1621
- var import_jsx_runtime14 = // @ts-ignore-next-line
1622
- require("react/jsx-runtime");
1623
- var Fn = function(param) {
1624
- var fn = param.fn, runStep = param.runStep;
1625
- var functionComponentsContext = (0, import_react20.useContext)(FunctionComponentsContext);
1626
- var Component = functionComponentsContext[fn.name] || DefaultFunction;
1627
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Component, {
1628
- fn: fn,
1629
- runStep: runStep
1630
- });
1501
+ // src/hooks/misc/useInfiniteScroll/index.tsx
1502
+ var useInfiniteScroll = function(param) {
1503
+ var isFetchingNextPage = param.isFetchingNextPage, hasNextPage = param.hasNextPage, fetchNextPage = param.fetchNextPage;
1504
+ var containerRef = (0, import_react23.useRef)(null);
1505
+ var _ref = (0, import_react_intersection_observer.useInView)({
1506
+ root: containerRef.current,
1507
+ rootMargin: "0px",
1508
+ threshold: 0.1
1509
+ }), loaderRef = _ref.ref, inView = _ref.inView;
1510
+ useThrottledEffect(function() {
1511
+ if (isFetchingNextPage) return;
1512
+ if (!inView) return;
1513
+ if (!hasNextPage) return;
1514
+ console.log("Fetching next page");
1515
+ fetchNextPage();
1516
+ }, 500, [
1517
+ inView,
1518
+ isFetchingNextPage,
1519
+ hasNextPage,
1520
+ fetchNextPage
1521
+ ]);
1522
+ return {
1523
+ containerRef: containerRef,
1524
+ loaderRef: loaderRef,
1525
+ inView: inView
1526
+ };
1631
1527
  };
1632
- // src/components/runSteps/RunStep/ToolCalls/ToolCall/CodeInterpreter/index.tsx
1633
- var import_themes11 = require("@radix-ui/themes");
1634
- var import_jsx_runtime15 = require("react/jsx-runtime");
1635
- var CodeInterpreter = function(param) {
1636
- var codeInterpreter = param.codeInterpreter;
1637
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_themes11.Flex, {
1638
- children: codeInterpreter.input
1639
- });
1528
+ // src/hooks/runs/useManageRuns/index.tsx
1529
+ var import_react_query6 = require("@tanstack/react-query");
1530
+ var import_react24 = require("react");
1531
+ // src/hooks/runs/useCreateRun/index.ts
1532
+ var import_radash4 = require("radash");
1533
+ var import_react_query5 = require("@tanstack/react-query");
1534
+ // src/lib/threads/mutationOptions/index.ts
1535
+ var mutationOptions = function(param) {
1536
+ var mutationKeyBase = param.mutationKeyBase, path = param.path, queryClient = param.queryClient, threadContext = param.threadContext, superinterfaceContext = param.superinterfaceContext;
1537
+ var mutationKey = _to_consumable_array(mutationKeyBase).concat([
1538
+ threadContext.variables
1539
+ ]);
1540
+ return _object_spread(_object_spread_props(_object_spread({
1541
+ mutationFn: function(variables) {
1542
+ return fetch("".concat(superinterfaceContext.baseUrl).concat(path), _object_spread({
1543
+ method: "POST",
1544
+ body: JSON.stringify(variables),
1545
+ credentials: "include"
1546
+ }, superinterfaceContext.publicApiKey ? {
1547
+ headers: {
1548
+ Authorization: "Bearer ".concat(superinterfaceContext.publicApiKey)
1549
+ }
1550
+ } : {})).then(function() {
1551
+ var _ref = _async_to_generator(function(response) {
1552
+ var errorResponse, error;
1553
+ return _ts_generator(this, function(_state) {
1554
+ switch(_state.label){
1555
+ case 0:
1556
+ if (!(response.status !== 200)) return [
1557
+ 3,
1558
+ 4
1559
+ ];
1560
+ _state.label = 1;
1561
+ case 1:
1562
+ _state.trys.push([
1563
+ 1,
1564
+ 3,
1565
+ ,
1566
+ 4
1567
+ ]);
1568
+ return [
1569
+ 4,
1570
+ response.json()
1571
+ ];
1572
+ case 2:
1573
+ errorResponse = _state.sent();
1574
+ throw new Error(errorResponse.error);
1575
+ case 3:
1576
+ error = _state.sent();
1577
+ throw new Error("Failed to fetch");
1578
+ case 4:
1579
+ return [
1580
+ 2,
1581
+ response.json()
1582
+ ];
1583
+ }
1584
+ });
1585
+ });
1586
+ return function(response) {
1587
+ return _ref.apply(this, arguments);
1588
+ };
1589
+ }());
1590
+ }
1591
+ }, queryClient.getMutationDefaults(mutationKey)), {
1592
+ mutationKey: mutationKey
1593
+ }), threadContext.defaultOptions.mutations);
1640
1594
  };
1641
- // src/components/runSteps/RunStep/ToolCalls/ToolCall/index.tsx
1642
- var import_jsx_runtime16 = require("react/jsx-runtime");
1643
- var ToolCall = function(param) {
1644
- var toolCall = param.toolCall, runStep = param.runStep;
1645
- if (toolCall.type === "function") {
1646
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Fn, {
1647
- fn: toolCall.function,
1648
- runStep: runStep
1595
+ // src/hooks/runs/useCreateRun/lib/onSuccess.ts
1596
+ var onSuccess = function(param) {
1597
+ var queryClient = param.queryClient;
1598
+ return function() {
1599
+ var _ref = _async_to_generator(function(data3, variables) {
1600
+ return _ts_generator(this, function(_state) {
1601
+ return [
1602
+ 2,
1603
+ queryClient.setQueryData([
1604
+ "runs",
1605
+ variables
1606
+ ], function(prevData) {
1607
+ if (!prevData) {
1608
+ return {
1609
+ pageParams: [],
1610
+ pages: [
1611
+ {
1612
+ data: [
1613
+ data3.run
1614
+ ],
1615
+ hasNextPage: false,
1616
+ lastId: data3.run.id
1617
+ }
1618
+ ]
1619
+ };
1620
+ }
1621
+ var _prevData_pages = _to_array(prevData.pages), latestPage = _prevData_pages[0], pagesRest = _prevData_pages.slice(1);
1622
+ return _object_spread_props(_object_spread({}, prevData), {
1623
+ pages: [
1624
+ _object_spread_props(_object_spread({}, latestPage), {
1625
+ data: [
1626
+ data3.run
1627
+ ].concat(_to_consumable_array(latestPage.data))
1628
+ })
1629
+ ].concat(_to_consumable_array(pagesRest))
1630
+ });
1631
+ })
1632
+ ];
1633
+ });
1649
1634
  });
1650
- }
1651
- if (toolCall.type === "code_interpreter") {
1652
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(CodeInterpreter, {
1653
- codeInterpreter: toolCall.code_interpreter,
1654
- runStep: runStep
1635
+ return function(data3, variables) {
1636
+ return _ref.apply(this, arguments);
1637
+ };
1638
+ }();
1639
+ };
1640
+ // src/hooks/runs/useCreateRun/lib/onSettled.ts
1641
+ var onSettled = function(param) {
1642
+ var queryClient = param.queryClient;
1643
+ return function() {
1644
+ var _ref = _async_to_generator(function(_data, _error, variables) {
1645
+ return _ts_generator(this, function(_state) {
1646
+ switch(_state.label){
1647
+ case 0:
1648
+ return [
1649
+ 4,
1650
+ queryClient.invalidateQueries({
1651
+ queryKey: [
1652
+ "messages",
1653
+ variables
1654
+ ]
1655
+ })
1656
+ ];
1657
+ case 1:
1658
+ _state.sent();
1659
+ return [
1660
+ 4,
1661
+ queryClient.invalidateQueries({
1662
+ queryKey: [
1663
+ "runs",
1664
+ variables
1665
+ ]
1666
+ })
1667
+ ];
1668
+ case 2:
1669
+ _state.sent();
1670
+ return [
1671
+ 2
1672
+ ];
1673
+ }
1674
+ });
1655
1675
  });
1656
- }
1657
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_themes12.Flex, {
1658
- children: toolCall.type
1659
- });
1676
+ return function(_data, _error, variables) {
1677
+ return _ref.apply(this, arguments);
1678
+ };
1679
+ }();
1660
1680
  };
1661
- // src/components/runSteps/RunStep/ToolCalls/Starting/index.tsx
1662
- var import_themes13 = require("@radix-ui/themes");
1663
- var import_react_icons3 = require("@radix-ui/react-icons");
1664
- var import_jsx_runtime17 = require("react/jsx-runtime");
1665
- var Starting = function() {
1666
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_themes13.PopoverRoot, {
1667
- children: [
1668
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(ToolCallBase, {
1669
- children: [
1670
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_react_icons3.CircleIcon, {}),
1671
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ToolCallTitle, {
1672
- children: "Starting actions"
1673
- })
1674
- ]
1675
- }),
1676
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_themes13.PopoverContent, {
1677
- style: {
1678
- maxHeight: "500px"
1679
- },
1680
- children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_themes13.Text, {
1681
- children: "Getting ready to connect to domain API"
1682
- })
1683
- })
1684
- ]
1685
- });
1681
+ // src/lib/optimistic/optimisticId.ts
1682
+ var import_radash3 = require("radash");
1683
+ var optimisticId = function() {
1684
+ return "-".concat((0, import_radash3.uid)(24));
1686
1685
  };
1687
- // src/components/runSteps/RunStep/ToolCalls/index.tsx
1688
- var import_jsx_runtime18 = require("react/jsx-runtime");
1689
- var ToolCalls = function(param) {
1690
- var stepDetails = param.stepDetails, runStep = param.runStep;
1691
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_themes14.Flex, {
1692
- direction: "column",
1693
- children: [
1694
- !stepDetails.tool_calls.length && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Starting, {}),
1695
- stepDetails.tool_calls.map(function(toolCall) {
1696
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ToolCall, {
1697
- toolCall: toolCall,
1698
- runStep: runStep
1699
- }, toolCall.id);
1686
+ // src/hooks/runs/useCreateRun/lib/onMutate/data.ts
1687
+ var data = function(prevData) {
1688
+ var run = {
1689
+ id: optimisticId(),
1690
+ object: "thread.run",
1691
+ created_at: +/* @__PURE__ */ new Date(),
1692
+ assistant_id: null,
1693
+ thread_id: null,
1694
+ status: "in_progress",
1695
+ expires_at: +/* @__PURE__ */ new Date() + 1e3 * 60 * 60 * 24,
1696
+ cancelled_at: null,
1697
+ failed_at: null,
1698
+ completed_at: null,
1699
+ required_action: null,
1700
+ last_error: null,
1701
+ model: null,
1702
+ instructions: null,
1703
+ tools: [],
1704
+ file_ids: [],
1705
+ metadata: {},
1706
+ usage: null
1707
+ };
1708
+ if (!prevData) {
1709
+ return {
1710
+ pageParams: [],
1711
+ pages: [
1712
+ {
1713
+ data: [
1714
+ run
1715
+ ],
1716
+ hasNextPage: false,
1717
+ lastId: run.id
1718
+ }
1719
+ ]
1720
+ };
1721
+ }
1722
+ var _prevData_pages = _to_array(prevData.pages), latestPage = _prevData_pages[0], pagesRest = _prevData_pages.slice(1);
1723
+ return _object_spread_props(_object_spread({}, prevData), {
1724
+ pages: [
1725
+ _object_spread_props(_object_spread({}, latestPage), {
1726
+ data: [
1727
+ run
1728
+ ].concat(_to_consumable_array(latestPage.data))
1700
1729
  })
1701
- ]
1730
+ ].concat(_to_consumable_array(pagesRest))
1702
1731
  });
1703
1732
  };
1704
- // src/components/runSteps/RunStep/index.tsx
1705
- var import_jsx_runtime19 = require("react/jsx-runtime");
1706
- var RunStep = function(param) {
1707
- var runStep = param.runStep;
1708
- if (runStep.step_details.type === "tool_calls") {
1709
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(ToolCalls, {
1710
- stepDetails: runStep.step_details,
1711
- runStep: runStep
1733
+ // src/hooks/runs/useCreateRun/lib/onMutate/index.ts
1734
+ var onMutate = function(param) {
1735
+ var queryClient = param.queryClient;
1736
+ return function() {
1737
+ var _ref = _async_to_generator(function(variables) {
1738
+ var queryKey, prevRuns;
1739
+ return _ts_generator(this, function(_state) {
1740
+ switch(_state.label){
1741
+ case 0:
1742
+ queryKey = [
1743
+ "runs",
1744
+ variables
1745
+ ];
1746
+ return [
1747
+ 4,
1748
+ queryClient.cancelQueries({
1749
+ queryKey: queryKey
1750
+ })
1751
+ ];
1752
+ case 1:
1753
+ _state.sent();
1754
+ prevRuns = queryClient.getQueryData(queryKey);
1755
+ queryClient.setQueryData(queryKey, data);
1756
+ return [
1757
+ 2,
1758
+ {
1759
+ prevRuns: prevRuns,
1760
+ variables: variables
1761
+ }
1762
+ ];
1763
+ }
1764
+ });
1712
1765
  });
1713
- }
1714
- return null;
1766
+ return function(variables) {
1767
+ return _ref.apply(this, arguments);
1768
+ };
1769
+ }();
1715
1770
  };
1716
- // src/components/runSteps/RunSteps/index.tsx
1717
- var import_jsx_runtime20 = require("react/jsx-runtime");
1718
- var RunSteps = function(param) {
1719
- var runSteps = param.runSteps;
1720
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_themes15.Flex, {
1721
- direction: "column-reverse",
1722
- children: runSteps.map(function(runStep) {
1723
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(RunStep, {
1724
- runStep: runStep
1725
- }, runStep.id);
1771
+ // src/hooks/runs/useCreateRun/index.ts
1772
+ var useCreateRun = function() {
1773
+ var queryClient = (0, import_react_query5.useQueryClient)();
1774
+ var superinterfaceContext = useSuperinterfaceContext();
1775
+ var threadContext = useSuperinterfaceContext();
1776
+ var props = (0, import_react_query5.useMutation)(_object_spread({
1777
+ onSuccess: onSuccess({
1778
+ queryClient: queryClient
1779
+ }),
1780
+ onSettled: onSettled({
1781
+ queryClient: queryClient
1782
+ }),
1783
+ onMutate: onMutate({
1784
+ queryClient: queryClient
1726
1785
  })
1786
+ }, mutationOptions({
1787
+ mutationKeyBase: [
1788
+ "createRun"
1789
+ ],
1790
+ path: "/runs",
1791
+ queryClient: queryClient,
1792
+ threadContext: threadContext,
1793
+ superinterfaceContext: superinterfaceContext
1794
+ })));
1795
+ return _object_spread_props(_object_spread({}, props), {
1796
+ createRun: (0, import_radash4.partob)(props.mutate, threadContext.variables)
1727
1797
  });
1728
1798
  };
1729
- // src/components/ThreadMessages/ThreadMessage/TextContent/index.tsx
1730
- var import_react22 = require("react");
1731
- var import_react_remark = require("react-remark");
1732
- // src/contexts/markdown/MarkdownContext/index.ts
1733
- var import_react21 = require("react");
1734
- // src/contexts/markdown/MarkdownContext/lib/components/Paragraph.tsx
1735
- var import_themes16 = require("@radix-ui/themes");
1736
- var import_jsx_runtime21 = require("react/jsx-runtime");
1737
- var Paragraph = function(param) {
1738
- var children = param.children;
1739
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_themes16.Box, {
1740
- pb: "3",
1741
- children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_themes16.Text, {
1742
- size: "3",
1743
- style: {
1744
- whiteSpace: "pre-line",
1745
- wordBreak: "break-word"
1746
- },
1747
- children: children
1748
- })
1749
- });
1799
+ // src/lib/optimistic/isOptimistic.ts
1800
+ var import_lodash6 = __toESM(require("lodash"), 1);
1801
+ var isOptimistic = function(param) {
1802
+ var id = param.id;
1803
+ return import_lodash6.default.startsWith(id, "-");
1750
1804
  };
1751
- // src/contexts/markdown/MarkdownContext/lib/components/Link.tsx
1752
- var import_themes17 = require("@radix-ui/themes");
1753
- var import_jsx_runtime22 = require("react/jsx-runtime");
1754
- var Link = function(param) {
1755
- var children = param.children, href = param.href;
1756
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_themes17.Link, {
1757
- href: href,
1758
- children: children
1759
- });
1805
+ // src/hooks/runs/useManageRuns/index.tsx
1806
+ var useManageRuns = function() {
1807
+ var queryClient = (0, import_react_query6.useQueryClient)();
1808
+ var latestRunProps = useLatestRun();
1809
+ var latestMessageProps = useLatestMessage();
1810
+ var createRunProps = useCreateRun();
1811
+ var threadContext = useSuperinterfaceContext();
1812
+ (0, import_react24.useEffect)(function() {
1813
+ if (createRunProps.isPending) return;
1814
+ if (latestRunProps.isFetching) return;
1815
+ if (latestMessageProps.isFetching) return;
1816
+ if (!latestMessageProps.latestMessage) return;
1817
+ if (latestMessageProps.latestMessage.role !== "user") return;
1818
+ if (isOptimistic({
1819
+ id: latestMessageProps.latestMessage.id
1820
+ })) return;
1821
+ if (latestRunProps.latestRun && latestRunProps.latestRun.created_at > latestMessageProps.latestMessage.created_at) {
1822
+ return;
1823
+ }
1824
+ var isMutating = queryClient.isMutating({
1825
+ mutationKey: [
1826
+ "createRun",
1827
+ threadContext.variables
1828
+ ]
1829
+ });
1830
+ if (isMutating) return;
1831
+ createRunProps.createRun();
1832
+ }, [
1833
+ threadContext,
1834
+ queryClient,
1835
+ createRunProps,
1836
+ latestRunProps,
1837
+ latestMessageProps
1838
+ ]);
1839
+ return null;
1760
1840
  };
1761
- // src/contexts/markdown/MarkdownContext/lib/components/UnorderedList.tsx
1762
- var import_themes18 = require("@radix-ui/themes");
1763
- var import_jsx_runtime23 = require("react/jsx-runtime");
1764
- var UnorderedList = function(param) {
1765
- var children = param.children;
1766
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_themes18.Box, {
1767
- pb: "3",
1768
- asChild: true,
1769
- children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("ul", {
1770
- style: {
1771
- listStylePosition: "inside"
1772
- },
1773
- children: children
1774
- })
1841
+ // src/hooks/runs/usePolling/index.tsx
1842
+ var import_react_query7 = require("@tanstack/react-query");
1843
+ var import_react_use = require("react-use");
1844
+ // src/hooks/runs/usePolling/lib/refetch.ts
1845
+ var refetch = function() {
1846
+ var _ref = _async_to_generator(function(param) {
1847
+ var queryClient, threadContext, _threadContext_defaultOptions_queries_queryKey, _threadContext_defaultOptions_queries_queryKey1;
1848
+ return _ts_generator(this, function(_state) {
1849
+ switch(_state.label){
1850
+ case 0:
1851
+ queryClient = param.queryClient, threadContext = param.threadContext;
1852
+ return [
1853
+ 4,
1854
+ queryClient.invalidateQueries({
1855
+ queryKey: (_threadContext_defaultOptions_queries_queryKey = threadContext.defaultOptions.queries.queryKey) !== null && _threadContext_defaultOptions_queries_queryKey !== void 0 ? _threadContext_defaultOptions_queries_queryKey : [
1856
+ "messages",
1857
+ threadContext.variables
1858
+ ]
1859
+ })
1860
+ ];
1861
+ case 1:
1862
+ _state.sent();
1863
+ return [
1864
+ 4,
1865
+ queryClient.invalidateQueries({
1866
+ queryKey: (_threadContext_defaultOptions_queries_queryKey1 = threadContext.defaultOptions.queries.queryKey) !== null && _threadContext_defaultOptions_queries_queryKey1 !== void 0 ? _threadContext_defaultOptions_queries_queryKey1 : [
1867
+ "runs",
1868
+ threadContext.variables
1869
+ ]
1870
+ })
1871
+ ];
1872
+ case 2:
1873
+ _state.sent();
1874
+ return [
1875
+ 2
1876
+ ];
1877
+ }
1878
+ });
1775
1879
  });
1880
+ return function refetch(_) {
1881
+ return _ref.apply(this, arguments);
1882
+ };
1883
+ }();
1884
+ // src/hooks/runs/usePolling/index.tsx
1885
+ var usePolling = function() {
1886
+ var threadContext = useSuperinterfaceContext();
1887
+ var queryClient = (0, import_react_query7.useQueryClient)();
1888
+ var isRunActiveProps = useIsRunActive();
1889
+ (0, import_react_use.useInterval)(function() {
1890
+ refetch({
1891
+ queryClient: queryClient,
1892
+ threadContext: threadContext
1893
+ });
1894
+ console.log("poll refetched");
1895
+ }, isRunActiveProps.isRunActive ? 3e3 : null);
1896
+ return null;
1776
1897
  };
1777
- // src/contexts/markdown/MarkdownContext/lib/components/OrderedList.tsx
1778
- var import_themes19 = require("@radix-ui/themes");
1779
- var import_jsx_runtime24 = require("react/jsx-runtime");
1780
- var OrderedList = function(param) {
1781
- var children = param.children;
1782
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_themes19.Box, {
1783
- pb: "3",
1784
- asChild: true,
1785
- children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("ol", {
1786
- style: {
1787
- listStylePosition: "inside"
1788
- },
1789
- children: children
1790
- })
1791
- });
1898
+ // src/hooks/actions/useManageActions/index.tsx
1899
+ var import_react_query9 = require("@tanstack/react-query");
1900
+ var import_react25 = require("react");
1901
+ // src/hooks/actions/useHandleAction/index.tsx
1902
+ var import_radash5 = require("radash");
1903
+ var import_react_query8 = require("@tanstack/react-query");
1904
+ // src/hooks/actions/useHandleAction/lib/onSettled.ts
1905
+ var onSettled2 = function(param) {
1906
+ var queryClient = param.queryClient;
1907
+ return function() {
1908
+ var _ref = _async_to_generator(function(_data, _error, variables) {
1909
+ return _ts_generator(this, function(_state) {
1910
+ switch(_state.label){
1911
+ case 0:
1912
+ return [
1913
+ 4,
1914
+ queryClient.invalidateQueries({
1915
+ queryKey: [
1916
+ "messages",
1917
+ variables
1918
+ ]
1919
+ })
1920
+ ];
1921
+ case 1:
1922
+ _state.sent();
1923
+ return [
1924
+ 4,
1925
+ queryClient.invalidateQueries({
1926
+ queryKey: [
1927
+ "runs",
1928
+ variables
1929
+ ]
1930
+ })
1931
+ ];
1932
+ case 2:
1933
+ _state.sent();
1934
+ return [
1935
+ 2
1936
+ ];
1937
+ }
1938
+ });
1939
+ });
1940
+ return function(_data, _error, variables) {
1941
+ return _ref.apply(this, arguments);
1942
+ };
1943
+ }();
1792
1944
  };
1793
- // src/contexts/markdown/MarkdownContext/lib/components/ListItem.tsx
1794
- var import_themes20 = require("@radix-ui/themes");
1795
- var import_jsx_runtime25 = require("react/jsx-runtime");
1796
- var ListItem = function(param) {
1797
- var children = param.children;
1798
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_themes20.Box, {
1799
- pb: "1",
1800
- children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("li", {
1801
- children: children
1945
+ // src/hooks/actions/useHandleAction/index.tsx
1946
+ var useHandleAction = function() {
1947
+ var queryClient = (0, import_react_query8.useQueryClient)();
1948
+ var superinterfaceContext = useSuperinterfaceContext();
1949
+ var threadContext = useSuperinterfaceContext();
1950
+ var props = (0, import_react_query8.useMutation)(_object_spread({
1951
+ onSettled: onSettled2({
1952
+ queryClient: queryClient
1802
1953
  })
1954
+ }, mutationOptions({
1955
+ mutationKeyBase: [
1956
+ "handleAction"
1957
+ ],
1958
+ path: "/actions",
1959
+ queryClient: queryClient,
1960
+ threadContext: threadContext,
1961
+ superinterfaceContext: superinterfaceContext
1962
+ })));
1963
+ return _object_spread_props(_object_spread({}, props), {
1964
+ handleAction: (0, import_radash5.partob)(props.mutate, threadContext.variables)
1803
1965
  });
1804
1966
  };
1805
- // src/contexts/markdown/MarkdownContext/lib/components/Strong.tsx
1806
- var import_themes21 = require("@radix-ui/themes");
1807
- var import_jsx_runtime26 = require("react/jsx-runtime");
1808
- var Strong = function(param) {
1809
- var children = param.children;
1810
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_themes21.Strong, {
1811
- children: children
1812
- });
1813
- };
1814
- // src/contexts/markdown/MarkdownContext/lib/components/index.tsx
1815
- var components = {
1816
- p: Paragraph,
1817
- a: Link,
1818
- strong: Strong,
1819
- ul: UnorderedList,
1820
- ol: OrderedList,
1821
- li: ListItem
1822
- };
1823
- // src/contexts/markdown/MarkdownContext/index.ts
1824
- var MarkdownContext = (0, import_react21.createContext)({
1825
- remarkPlugins: [],
1826
- rehypeReactOptions: {
1827
- components: components
1828
- }
1829
- });
1830
- // src/components/ThreadMessages/ThreadMessage/TextContent/index.tsx
1831
- var TextContent = function(param) {
1832
- var content = param.content;
1833
- var markdownContext = (0, import_react22.useContext)(MarkdownContext);
1834
- return (0, import_react_remark.useRemarkSync)(content.text.value, markdownContext);
1835
- };
1836
- // src/components/ThreadMessages/ThreadMessage/index.tsx
1837
- var import_jsx_runtime27 = require("react/jsx-runtime");
1838
- var ThreadMessage = function(param) {
1839
- var threadMessage = param.threadMessage;
1840
- var _ref = _sliced_to_array((0, import_react23.useMemo)(function() {
1841
- if (!threadMessage.runSteps.length) return [
1842
- [],
1843
- []
1844
- ];
1845
- var messageCreationRunStepIndex = threadMessage.runSteps.findIndex(function(runStep) {
1846
- if (runStep.step_details.type !== "message_creation") return;
1847
- return runStep.step_details.message_creation.message_id === threadMessage.id;
1967
+ // src/hooks/actions/useManageActions/index.tsx
1968
+ var useManageActions = function() {
1969
+ var queryClient = (0, import_react_query9.useQueryClient)();
1970
+ var threadContext = useSuperinterfaceContext();
1971
+ var latestRunProps = useLatestRun();
1972
+ var handleActionProps = useHandleAction();
1973
+ (0, import_react25.useEffect)(function() {
1974
+ if (handleActionProps.isPending) return;
1975
+ if (latestRunProps.isFetching) return;
1976
+ if (!latestRunProps.latestRun) return;
1977
+ if (latestRunProps.latestRun.status !== "requires_action") return;
1978
+ var isMutating = queryClient.isMutating({
1979
+ mutationKey: [
1980
+ "handleAction",
1981
+ threadContext.variables
1982
+ ]
1848
1983
  });
1849
- var nextRunStepIndex = threadMessage.runSteps.slice(0, messageCreationRunStepIndex).findLastIndex(function(runStep) {
1850
- return runStep.step_details.type === "message_creation";
1984
+ if (isMutating) return;
1985
+ console.log("requires action", {
1986
+ latestRunProps: latestRunProps
1851
1987
  });
1852
- if (nextRunStepIndex === -1) {
1853
- nextRunStepIndex = 0;
1854
- }
1855
- var laterRunSteps2 = threadMessage.runSteps.slice(nextRunStepIndex, messageCreationRunStepIndex);
1856
- var prevRunStepIndex = threadMessage.runSteps.slice(messageCreationRunStepIndex + 1).findIndex(function(runStep) {
1857
- return runStep.step_details.type === "message_creation";
1988
+ handleActionProps.handleAction({
1989
+ latestRun: latestRunProps.latestRun
1858
1990
  });
1859
- var olderRunSteps2;
1860
- if (prevRunStepIndex === -1) {
1861
- olderRunSteps2 = threadMessage.runSteps.slice(messageCreationRunStepIndex + 1);
1862
- } else {
1863
- olderRunSteps2 = threadMessage.runSteps.slice(messageCreationRunStepIndex + 1, messageCreationRunStepIndex + prevRunStepIndex);
1864
- }
1865
- return [
1866
- olderRunSteps2,
1867
- laterRunSteps2
1868
- ];
1869
1991
  }, [
1870
- threadMessage
1871
- ]), 2), olderRunSteps = _ref[0], laterRunSteps = _ref[1];
1872
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_themes22.Box, {
1873
- children: [
1874
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(RunSteps, {
1875
- runSteps: olderRunSteps
1876
- }),
1877
- threadMessage.content.map(function(content, index) {
1878
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_themes22.Box, {
1879
- children: content.type === "text" && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(TextContent, {
1880
- content: content
1881
- })
1882
- }, index);
1883
- }),
1884
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(RunSteps, {
1885
- runSteps: laterRunSteps
1886
- })
1887
- ]
1888
- });
1889
- };
1890
- // src/components/threadMessages/ThreadMessages/Content/ThreadMessageGroup/Content/index.tsx
1891
- var import_jsx_runtime28 = require("react/jsx-runtime");
1892
- var Content2 = function(param) {
1893
- var threadMessageGroup = param.threadMessageGroup;
1894
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_themes23.Flex, {
1895
- direction: "column-reverse",
1896
- children: threadMessageGroup.threadMessages.map(function(threadMessage) {
1897
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(ThreadMessage, {
1898
- threadMessage: threadMessage
1899
- }, threadMessage.id);
1900
- })
1901
- });
1902
- };
1903
- // src/components/threadMessages/ThreadMessages/Content/ThreadMessageGroup/index.tsx
1904
- var import_jsx_runtime29 = require("react/jsx-runtime");
1905
- var ThreadMessageGroup = function(param) {
1906
- var threadMessageGroup = param.threadMessageGroup;
1907
- var assistantNameContext = (0, import_react24.useContext)(AssistantNameContext);
1908
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(ThreadMessagesGroupBase, {
1909
- children: [
1910
- threadMessageGroup.role === "user" ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_themes24.Avatar, {
1911
- fallback: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_react_icons4.PersonIcon, {}),
1912
- size: "1"
1913
- }) : /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(AssistantAvatar, {}),
1914
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_themes24.Box, {
1915
- grow: "1",
1916
- children: [
1917
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Name, {
1918
- children: threadMessageGroup.role === "user" ? "You" : assistantNameContext
1919
- }),
1920
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Content2, {
1921
- threadMessageGroup: threadMessageGroup
1922
- })
1923
- ]
1924
- })
1925
- ]
1926
- });
1927
- };
1928
- // src/components/threadMessages/ThreadMessages/Content/index.tsx
1929
- var import_jsx_runtime30 = require("react/jsx-runtime");
1930
- var Content3 = function(param) {
1931
- var threadMessages2 = param.threadMessages, isLoading = param.isLoading, isLoadingError = param.isLoadingError;
1932
- var _useThreadMessageGroups = useThreadMessageGroups({
1933
- threadMessages: threadMessages2
1934
- }), threadMessageGroups2 = _useThreadMessageGroups.threadMessageGroups;
1935
- if (isLoading || isLoadingError) {
1936
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(ThreadMessagesSkeleton, {});
1937
- }
1938
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_jsx_runtime30.Fragment, {
1939
- children: threadMessageGroups2.map(function(threadMessageGroup) {
1940
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(ThreadMessageGroup, {
1941
- threadMessageGroup: threadMessageGroup
1942
- }, threadMessageGroup.id);
1943
- })
1944
- });
1945
- };
1946
- // src/components/threadMessages/ThreadMessages/Progress/index.tsx
1947
- var import_themes27 = require("@radix-ui/themes");
1948
- // src/components/skeletons/StartingContentSkeleton/index.tsx
1949
- var import_themes25 = require("@radix-ui/themes");
1950
- var import_jsx_runtime31 = require("react/jsx-runtime");
1951
- var StartingContentSkeleton = function() {
1952
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_themes25.Box, {
1953
- shrink: "0",
1954
- mt: "1",
1955
- style: {
1956
- animation: "pulse 2s cubic-bezier(.4,0,.6,1) infinite",
1957
- borderRadius: "var(--radius-3)",
1958
- backgroundColor: "var(--gray-12)",
1959
- height: "var(--space-4)",
1960
- width: "var(--space-4)"
1961
- }
1962
- });
1963
- };
1964
- // src/components/skeletons/StartingSkeleton/index.tsx
1965
- var import_react25 = require("react");
1966
- var import_themes26 = require("@radix-ui/themes");
1967
- var import_jsx_runtime32 = require("react/jsx-runtime");
1968
- var StartingSkeleton = function(param) {
1969
- var children = param.children;
1970
- var assistantNameContext = (0, import_react25.useContext)(AssistantNameContext);
1971
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(ThreadMessagesGroupBase, {
1972
- children: [
1973
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(AssistantAvatar, {}),
1974
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_themes26.Box, {
1975
- children: [
1976
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Name, {
1977
- children: assistantNameContext
1978
- }),
1979
- children,
1980
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(StartingContentSkeleton, {})
1981
- ]
1982
- })
1983
- ]
1984
- });
1992
+ handleActionProps,
1993
+ latestRunProps
1994
+ ]);
1995
+ return null;
1985
1996
  };
1986
- // src/components/threadMessages/ThreadMessages/Progress/index.tsx
1987
- var import_jsx_runtime33 = require("react/jsx-runtime");
1988
- var Progress = function(param) {
1989
- var latestThreadMessage = param.latestThreadMessage, isRunActive2 = param.isRunActive;
1990
- if (!latestThreadMessage) return null;
1991
- if (!isRunActive2) return null;
1992
- if (latestThreadMessage.role === "user") {
1993
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(StartingSkeleton, {});
1994
- }
1995
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(ThreadMessagesGroupBase, {
1996
- children: [
1997
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_themes27.Box, {
1998
- pl: "5"
1999
- }),
2000
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(StartingContentSkeleton, {})
2001
- ]
2002
- });
1997
+ // src/hooks/threads/useLifecycle/index.tsx
1998
+ var useLifecycle = function() {
1999
+ useManageRuns();
2000
+ useManageActions();
2001
+ usePolling();
2002
+ return null;
2003
2003
  };
2004
- // src/components/threadMessages/ThreadMessages/index.tsx
2004
+ // src/components/threads/Thread/Messages/Root/index.tsx
2005
2005
  var import_jsx_runtime34 = require("react/jsx-runtime");
2006
- var ThreadMessages = function(param) {
2006
+ var Root = function(param) {
2007
2007
  var children = param.children, _param_style = param.style, style = _param_style === void 0 ? {} : _param_style;
2008
- var _useThreadMessages = useThreadMessages(), threadMessages2 = _useThreadMessages.threadMessages, isFetchingNextPage = _useThreadMessages.isFetchingNextPage, hasNextPage = _useThreadMessages.hasNextPage, fetchNextPage = _useThreadMessages.fetchNextPage, isLoading = _useThreadMessages.isLoading, isLoadingError = _useThreadMessages.isLoadingError;
2009
- useThreadLifecycles();
2008
+ var _useMessages = useMessages(), isFetchingNextPage = _useMessages.isFetchingNextPage, hasNextPage = _useMessages.hasNextPage, fetchNextPage = _useMessages.fetchNextPage;
2009
+ useLifecycle();
2010
2010
  var _useInfiniteScroll = useInfiniteScroll({
2011
2011
  isFetchingNextPage: isFetchingNextPage,
2012
2012
  hasNextPage: hasNextPage,
2013
2013
  fetchNextPage: fetchNextPage
2014
2014
  }), containerRef = _useInfiniteScroll.containerRef, loaderRef = _useInfiniteScroll.loaderRef;
2015
- var _useIsRunActive = useIsRunActive(), isRunActive2 = _useIsRunActive.isRunActive;
2016
- var latestThreadMessage = useLatestThreadMessage().latestThreadMessage;
2017
2015
  return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_themes28.Flex, {
2018
2016
  ref: containerRef,
2019
2017
  direction: "column-reverse",
2020
- grow: "1",
2018
+ flexGrow: "1",
2021
2019
  style: _object_spread_props(_object_spread({}, style), {
2022
2020
  overflow: "auto"
2023
2021
  }),
2024
2022
  children: [
2025
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_themes28.Flex, {
2026
- shrink: "0",
2027
- style: {
2028
- height: "var(--space-3)"
2029
- }
2030
- }),
2031
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Progress, {
2032
- latestThreadMessage: latestThreadMessage,
2033
- isRunActive: isRunActive2
2034
- }),
2035
2023
  children,
2036
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Content3, {
2037
- threadMessages: threadMessages2,
2038
- isLoading: isLoading,
2039
- isLoadingError: isLoadingError
2040
- }),
2041
- hasNextPage && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(ThreadMessagesSkeleton, {
2024
+ hasNextPage && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_themes28.Flex, {
2042
2025
  ref: loaderRef
2043
2026
  }),
2044
2027
  /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_themes28.Flex, {
2045
- shrink: "0",
2046
- grow: "1"
2028
+ flexShrink: "0",
2029
+ flexGrow: "1"
2030
+ })
2031
+ ]
2032
+ });
2033
+ };
2034
+ // src/components/threads/Thread/Messages/NextPageSkeleton.tsx
2035
+ var import_jsx_runtime35 = require("react/jsx-runtime");
2036
+ var NextPageSkeleton = function() {
2037
+ var hasNextPage = useMessages().hasNextPage;
2038
+ if (!hasNextPage) {
2039
+ return null;
2040
+ }
2041
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(MessagesSkeleton, {});
2042
+ };
2043
+ // src/components/threads/Thread/Messages/index.tsx
2044
+ var import_jsx_runtime36 = require("react/jsx-runtime");
2045
+ var Messages = function(param) {
2046
+ var children = param.children, _param_style = param.style, style = _param_style === void 0 ? {} : _param_style;
2047
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(Root, {
2048
+ style: style,
2049
+ children: [
2050
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_themes29.Flex, {
2051
+ flexShrink: "0",
2052
+ height: "var(--space-3)"
2053
+ }),
2054
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Progress, {}),
2055
+ children,
2056
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Content3, {}),
2057
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(NextPageSkeleton, {}),
2058
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_themes29.Flex, {
2059
+ flexShrink: "0",
2060
+ flexGrow: "1"
2047
2061
  })
2048
2062
  ]
2049
2063
  });
2050
2064
  };
2051
- // src/components/threadMessages/ThreadMessageForm/index.tsx
2052
- var import_themes30 = require("@radix-ui/themes");
2065
+ Messages.Root = Root;
2066
+ Messages.Message = Message;
2067
+ Messages.NextPageSkeleton = NextPageSkeleton;
2068
+ // src/components/threads/Thread/MessageForm/index.tsx
2069
+ var import_themes32 = require("@radix-ui/themes");
2070
+ // src/components/threads/Thread/MessageForm/Submit/index.tsx
2071
+ var import_react_icons5 = require("@radix-ui/react-icons");
2072
+ var import_themes30 = require("@radix-ui/themes");
2073
+ // src/components/spinners/Spinner/index.tsx
2074
+ var import_jsx_runtime37 = require("react/jsx-runtime");
2075
+ var Spinner = function(props) {
2076
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("svg", _object_spread_props(_object_spread({
2077
+ xmlns: "http://www.w3.org/2000/svg",
2078
+ width: "24",
2079
+ height: "24",
2080
+ viewBox: "0 0 24 24",
2081
+ fill: "none",
2082
+ stroke: "currentColor",
2083
+ strokeWidth: "2",
2084
+ strokeLinecap: "round",
2085
+ strokeLinejoin: "round",
2086
+ style: {
2087
+ height: "var(--space-4)",
2088
+ width: "var(--space-4)",
2089
+ animation: "spin 1s linear infinite"
2090
+ }
2091
+ }, props), {
2092
+ children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("path", {
2093
+ d: "M21 12a9 9 0 1 1-6.219-8.56"
2094
+ })
2095
+ }));
2096
+ };
2097
+ // src/hooks/messages/useMessageFormContext/index.ts
2053
2098
  var import_react27 = require("react");
2054
- var import_react_hook_form = require("react-hook-form");
2055
- var import_react_use2 = require("react-use");
2056
- // src/components/textareas/TextareaBase/index.tsx
2099
+ // src/contexts/messages/MessageFormContext/index.ts
2057
2100
  var import_react26 = require("react");
2058
- var import_react_textarea_autosize = __toESM(require("react-textarea-autosize"), 1);
2059
- var import_jsx_runtime35 = require("react/jsx-runtime");
2060
- var UPSCALE_RATIO = 16 / 14;
2061
- var TextareaBase = (0, import_react26.forwardRef)(function TextareaBase2(props, ref) {
2062
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_react_textarea_autosize.default, _object_spread({
2063
- ref: ref,
2064
- className: "textarea-base",
2065
- style: {
2066
- resize: "none",
2067
- fontSize: "".concat(14 * UPSCALE_RATIO, "px"),
2068
- lineHeight: "".concat(24 * UPSCALE_RATIO, "px"),
2069
- transform: "scale(".concat(1 / UPSCALE_RATIO, ")"),
2070
- margin: "0 ".concat((-100 * UPSCALE_RATIO + 100) / 2, "%"),
2071
- width: "".concat(100 * UPSCALE_RATIO, "%"),
2072
- maxWidth: "".concat(100 * UPSCALE_RATIO, "%"),
2073
- flexGrow: 1,
2074
- display: "flex"
2075
- }
2076
- }, props));
2101
+ var MessageFormContext = (0, import_react26.createContext)({
2102
+ isDisabled: false,
2103
+ isLoading: false
2077
2104
  });
2078
- // src/hooks/threadMessages/useCreateThreadMessage/index.ts
2105
+ // src/hooks/messages/useMessageFormContext/index.ts
2106
+ var useMessageFormContext = function() {
2107
+ return (0, import_react27.useContext)(MessageFormContext);
2108
+ };
2109
+ // src/components/threads/Thread/MessageForm/Submit/index.tsx
2110
+ var import_jsx_runtime38 = require("react/jsx-runtime");
2111
+ var Submit = function() {
2112
+ var _useMessageFormContext = useMessageFormContext(), isDisabled = _useMessageFormContext.isDisabled, isLoading = _useMessageFormContext.isLoading;
2113
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_themes30.Button, {
2114
+ type: "submit",
2115
+ radius: "large",
2116
+ disabled: isDisabled,
2117
+ children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Spinner, {}) : /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_react_icons5.ArrowUpIcon, {})
2118
+ });
2119
+ };
2120
+ // src/components/threads/Thread/MessageForm/Root/index.tsx
2121
+ var import_react28 = require("react");
2122
+ var import_react_hook_form = require("react-hook-form");
2123
+ // src/hooks/messages/useCreateMessage/index.ts
2079
2124
  var import_radash8 = require("radash");
2080
2125
  var import_react_query10 = require("@tanstack/react-query");
2081
- // src/hooks/threadMessages/useCreateThreadMessage/lib/mutationOptions/onMutate/index.ts
2126
+ // src/hooks/messages/useCreateMessage/lib/mutationOptions/onMutate/index.ts
2082
2127
  var import_radash6 = require("radash");
2083
- // src/hooks/threadMessages/useCreateThreadMessage/lib/mutationOptions/onMutate/data.ts
2128
+ // src/hooks/messages/useCreateMessage/lib/mutationOptions/onMutate/data.ts
2084
2129
  var data2 = function(param) {
2085
- var newThreadMessage = param.newThreadMessage;
2130
+ var newMessage = param.newMessage;
2086
2131
  return function(prevData) {
2087
2132
  var message = {
2088
2133
  id: optimisticId(),
@@ -2094,7 +2139,7 @@ var data2 = function(param) {
2094
2139
  type: "text",
2095
2140
  text: {
2096
2141
  annotations: [],
2097
- value: newThreadMessage.content
2142
+ value: newMessage.content
2098
2143
  }
2099
2144
  }
2100
2145
  ],
@@ -2131,18 +2176,18 @@ var data2 = function(param) {
2131
2176
  });
2132
2177
  };
2133
2178
  };
2134
- // src/hooks/threadMessages/useCreateThreadMessage/lib/mutationOptions/onMutate/index.ts
2179
+ // src/hooks/messages/useCreateMessage/lib/mutationOptions/onMutate/index.ts
2135
2180
  var onMutate2 = function(param) {
2136
2181
  var queryClient = param.queryClient;
2137
2182
  return function() {
2138
- var _ref = _async_to_generator(function(newThreadMessage) {
2139
- var queryKey, prevThreadMessages;
2183
+ var _ref = _async_to_generator(function(newMessage) {
2184
+ var queryKey, prevMessages;
2140
2185
  return _ts_generator(this, function(_state) {
2141
2186
  switch(_state.label){
2142
2187
  case 0:
2143
2188
  queryKey = [
2144
- "threadMessages",
2145
- (0, import_radash6.omit)(newThreadMessage, [
2189
+ "messages",
2190
+ (0, import_radash6.omit)(newMessage, [
2146
2191
  "content"
2147
2192
  ])
2148
2193
  ];
@@ -2154,26 +2199,26 @@ var onMutate2 = function(param) {
2154
2199
  ];
2155
2200
  case 1:
2156
2201
  _state.sent();
2157
- prevThreadMessages = queryClient.getQueryData(queryKey);
2202
+ prevMessages = queryClient.getQueryData(queryKey);
2158
2203
  queryClient.setQueryData(queryKey, data2({
2159
- newThreadMessage: newThreadMessage
2204
+ newMessage: newMessage
2160
2205
  }));
2161
2206
  return [
2162
2207
  2,
2163
2208
  {
2164
- prevThreadMessages: prevThreadMessages,
2165
- newThreadMessage: newThreadMessage
2209
+ prevMessages: prevMessages,
2210
+ newMessage: newMessage
2166
2211
  }
2167
2212
  ];
2168
2213
  }
2169
2214
  });
2170
2215
  });
2171
- return function(newThreadMessage) {
2216
+ return function(newMessage) {
2172
2217
  return _ref.apply(this, arguments);
2173
2218
  };
2174
2219
  }();
2175
2220
  };
2176
- // src/hooks/threadMessages/useCreateThreadMessage/lib/mutationOptions/onSettled.ts
2221
+ // src/hooks/messages/useCreateMessage/lib/mutationOptions/onSettled.ts
2177
2222
  var import_radash7 = require("radash");
2178
2223
  var onSettled3 = function(param) {
2179
2224
  var queryClient = param.queryClient;
@@ -2186,7 +2231,7 @@ var onSettled3 = function(param) {
2186
2231
  4,
2187
2232
  queryClient.invalidateQueries({
2188
2233
  queryKey: [
2189
- "threadMessages",
2234
+ "messages",
2190
2235
  (0, import_radash7.omit)(variables, [
2191
2236
  "content"
2192
2237
  ])
@@ -2219,8 +2264,8 @@ var onSettled3 = function(param) {
2219
2264
  };
2220
2265
  }();
2221
2266
  };
2222
- // src/hooks/threadMessages/useCreateThreadMessage/index.ts
2223
- var useCreateThreadMessage = function() {
2267
+ // src/hooks/messages/useCreateMessage/index.ts
2268
+ var useCreateMessage = function() {
2224
2269
  var queryClient = (0, import_react_query10.useQueryClient)();
2225
2270
  var superinterfaceContext = useSuperinterfaceContext();
2226
2271
  var threadContext = useSuperinterfaceContext();
@@ -2233,77 +2278,40 @@ var useCreateThreadMessage = function() {
2233
2278
  })
2234
2279
  }, mutationOptions({
2235
2280
  mutationKeyBase: [
2236
- "createThreadMessage"
2281
+ "createMessage"
2237
2282
  ],
2238
- path: "/thread-messages",
2283
+ path: "/messages",
2239
2284
  queryClient: queryClient,
2240
2285
  threadContext: threadContext,
2241
2286
  superinterfaceContext: superinterfaceContext
2242
2287
  })));
2243
2288
  return _object_spread_props(_object_spread({}, props), {
2244
- createThreadMessage: (0, import_radash8.partob)(props.mutateAsync, threadContext.variables)
2245
- });
2246
- };
2247
- // src/components/threadMessages/ThreadMessageForm/Submit/index.tsx
2248
- var import_react_icons5 = require("@radix-ui/react-icons");
2249
- var import_themes29 = require("@radix-ui/themes");
2250
- // src/components/spinners/Spinner/index.tsx
2251
- var import_jsx_runtime36 = require("react/jsx-runtime");
2252
- var Spinner = function(props) {
2253
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("svg", _object_spread_props(_object_spread({
2254
- xmlns: "http://www.w3.org/2000/svg",
2255
- width: "24",
2256
- height: "24",
2257
- viewBox: "0 0 24 24",
2258
- fill: "none",
2259
- stroke: "currentColor",
2260
- strokeWidth: "2",
2261
- strokeLinecap: "round",
2262
- strokeLinejoin: "round",
2263
- style: {
2264
- height: "var(--space-4)",
2265
- width: "var(--space-4)",
2266
- animation: "spin 1s linear infinite"
2267
- }
2268
- }, props), {
2269
- children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("path", {
2270
- d: "M21 12a9 9 0 1 1-6.219-8.56"
2271
- })
2272
- }));
2273
- };
2274
- // src/components/threadMessages/ThreadMessageForm/Submit/index.tsx
2275
- var import_jsx_runtime37 = require("react/jsx-runtime");
2276
- var Submit = function(param) {
2277
- var isLoading = param.isLoading, isDisabled = param.isDisabled;
2278
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_themes29.Button, {
2279
- type: "submit",
2280
- radius: "large",
2281
- disabled: isDisabled,
2282
- children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Spinner, {}) : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_react_icons5.ArrowUpIcon, {})
2289
+ createMessage: (0, import_radash8.partob)(props.mutateAsync, threadContext.variables)
2283
2290
  });
2284
2291
  };
2285
- // src/components/threadMessages/ThreadMessageForm/lib/useFormProps/index.ts
2292
+ // src/components/threads/Thread/MessageForm/Root/lib/formOptions.ts
2286
2293
  var import_zod = require("zod");
2287
2294
  var import_zod2 = require("@hookform/resolvers/zod");
2288
2295
  var schema = import_zod.z.object({
2289
2296
  content: import_zod.z.string().min(1)
2290
2297
  });
2291
- var useFormProps = {
2298
+ var formOptions = {
2292
2299
  resolver: (0, import_zod2.zodResolver)(schema)
2293
2300
  };
2294
- // src/components/threadMessages/ThreadMessageForm/index.tsx
2295
- var import_jsx_runtime38 = require("react/jsx-runtime");
2296
- var ThreadMessageForm = function() {
2297
- var _ref = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, children = _ref.children, tmp = _ref.useFormProps, useFormProps2 = tmp === void 0 ? useFormProps : tmp, _ref_style = _ref.style, style = _ref_style === void 0 ? {} : _ref_style;
2298
- var _ref1 = (0, import_react_hook_form.useForm)(useFormProps2), register = _ref1.register, handleSubmit = _ref1.handleSubmit, _ref_formState = _ref1.formState, errors = _ref_formState.errors, isSubmitting = _ref_formState.isSubmitting, reset = _ref1.reset;
2301
+ // src/components/threads/Thread/MessageForm/Root/index.tsx
2302
+ var import_jsx_runtime39 = require("react/jsx-runtime");
2303
+ var Root2 = function(param) {
2304
+ var children = param.children;
2305
+ var formProps = (0, import_react_hook_form.useForm)(formOptions);
2306
+ var handleSubmit = formProps.handleSubmit, isSubmitting = formProps.formState.isSubmitting, reset = formProps.reset;
2299
2307
  var _useIsRunActive = useIsRunActive(), isRunActive2 = _useIsRunActive.isRunActive;
2300
- var isLoading = (0, import_react27.useMemo)(function() {
2308
+ var isLoading = (0, import_react28.useMemo)(function() {
2301
2309
  return isRunActive2 || isSubmitting;
2302
2310
  }, [
2303
2311
  isRunActive2,
2304
2312
  isSubmitting
2305
2313
  ]);
2306
- var createThreadMessage = useCreateThreadMessage().createThreadMessage;
2314
+ var createMessage = useCreateMessage().createMessage;
2307
2315
  var onSubmit = function() {
2308
2316
  var _ref = _async_to_generator(function(data3) {
2309
2317
  return _ts_generator(this, function(_state) {
@@ -2312,7 +2320,7 @@ var ThreadMessageForm = function() {
2312
2320
  reset();
2313
2321
  return [
2314
2322
  4,
2315
- createThreadMessage({
2323
+ createMessage({
2316
2324
  content: data3.content
2317
2325
  })
2318
2326
  ];
@@ -2328,25 +2336,100 @@ var ThreadMessageForm = function() {
2328
2336
  return _ref.apply(this, arguments);
2329
2337
  };
2330
2338
  }();
2331
- var latestThreadMessage = useLatestThreadMessage().latestThreadMessage;
2332
- var isDisabled = (0, import_react27.useMemo)(function() {
2339
+ var latestMessage = useLatestMessage().latestMessage;
2340
+ var isDisabled = (0, import_react28.useMemo)(function() {
2333
2341
  var // @ts-ignore-next-line
2334
- _latestThreadMessage_metadata;
2335
- return latestThreadMessage === null || latestThreadMessage === void 0 ? void 0 : (_latestThreadMessage_metadata = latestThreadMessage.metadata) === null || _latestThreadMessage_metadata === void 0 ? void 0 : _latestThreadMessage_metadata.isBlocking;
2342
+ _latestMessage_metadata;
2343
+ return latestMessage === null || latestMessage === void 0 ? void 0 : (_latestMessage_metadata = latestMessage.metadata) === null || _latestMessage_metadata === void 0 ? void 0 : _latestMessage_metadata.isBlocking;
2336
2344
  }, [
2337
- latestThreadMessage,
2345
+ latestMessage,
2338
2346
  isLoading
2339
2347
  ]);
2340
- var isSubmitDisabled = (0, import_react27.useMemo)(function() {
2348
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(MessageFormContext.Provider, {
2349
+ value: {
2350
+ isDisabled: isDisabled,
2351
+ isLoading: isLoading
2352
+ },
2353
+ children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_hook_form.FormProvider, _object_spread_props(_object_spread({}, formProps), {
2354
+ children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("form", {
2355
+ onSubmit: handleSubmit(onSubmit),
2356
+ children: children
2357
+ })
2358
+ }))
2359
+ });
2360
+ };
2361
+ // src/components/threads/Thread/MessageForm/Field/index.tsx
2362
+ var import_react_use2 = require("react-use");
2363
+ var import_react30 = require("react");
2364
+ // src/components/textareas/TextareaBase/index.tsx
2365
+ var import_react29 = require("react");
2366
+ var import_react_textarea_autosize = __toESM(require("react-textarea-autosize"), 1);
2367
+ var import_jsx_runtime40 = require("react/jsx-runtime");
2368
+ var UPSCALE_RATIO = 16 / 14;
2369
+ var TextareaBase = (0, import_react29.forwardRef)(function TextareaBase2(props, ref) {
2370
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_react_textarea_autosize.default, _object_spread({
2371
+ ref: ref,
2372
+ className: "textarea-base",
2373
+ style: {
2374
+ resize: "none",
2375
+ fontSize: "".concat(14 * UPSCALE_RATIO, "px"),
2376
+ lineHeight: "".concat(24 * UPSCALE_RATIO, "px"),
2377
+ transform: "scale(".concat(1 / UPSCALE_RATIO, ")"),
2378
+ margin: "0 ".concat((-100 * UPSCALE_RATIO + 100) / 2, "%"),
2379
+ width: "".concat(100 * UPSCALE_RATIO, "%"),
2380
+ maxWidth: "".concat(100 * UPSCALE_RATIO, "%"),
2381
+ flexGrow: 1,
2382
+ display: "flex"
2383
+ }
2384
+ }, props));
2385
+ });
2386
+ // src/components/threads/Thread/MessageForm/Field/index.tsx
2387
+ var import_react_hook_form2 = require("react-hook-form");
2388
+ var import_themes31 = require("@radix-ui/themes");
2389
+ var import_jsx_runtime41 = require("react/jsx-runtime");
2390
+ var Root3 = function(param) {
2391
+ var children = param.children;
2392
+ var _ref = (0, import_react_hook_form2.useFormContext)(), errors = _ref.formState.errors;
2393
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_themes31.Container, {
2394
+ size: "2",
2395
+ flexGrow: "0",
2396
+ children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_themes31.Flex, {
2397
+ direction: "column",
2398
+ flexShrink: "0",
2399
+ children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_themes31.Flex, {
2400
+ direction: "column",
2401
+ flexShrink: "0",
2402
+ children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_themes31.Flex, {
2403
+ style: _object_spread({
2404
+ borderRadius: "var(--radius-2)",
2405
+ borderWidth: "1px",
2406
+ borderStyle: "solid",
2407
+ borderColor: errors.content ? "var(--red-9)" : "var(--gray-5)"
2408
+ }, errors.content ? {
2409
+ backgroundColor: "var(--red-2)"
2410
+ } : {}),
2411
+ p: "2",
2412
+ pl: "4",
2413
+ children: children
2414
+ })
2415
+ })
2416
+ })
2417
+ });
2418
+ };
2419
+ var Control = function() {
2420
+ var assistantNameContext = (0, import_react30.useContext)(AssistantNameContext);
2421
+ var register = (0, import_react_hook_form2.useFormContext)().register;
2422
+ var _useMessageFormContext = useMessageFormContext(), isDisabled = _useMessageFormContext.isDisabled, isLoading = _useMessageFormContext.isLoading;
2423
+ var isSubmitDisabled = (0, import_react30.useMemo)(function() {
2341
2424
  return isDisabled || isLoading;
2342
2425
  }, [
2343
2426
  isDisabled,
2344
2427
  isLoading
2345
2428
  ]);
2346
2429
  var isDisabledPrevious = (0, import_react_use2.usePrevious)(isDisabled);
2347
- var textareaRef = (0, import_react27.useRef)(null);
2430
+ var textareaRef = (0, import_react30.useRef)(null);
2348
2431
  var textareaProps = register("content");
2349
- (0, import_react27.useEffect)(function() {
2432
+ (0, import_react30.useEffect)(function() {
2350
2433
  if (isDisabled) return;
2351
2434
  if (!isDisabledPrevious) return;
2352
2435
  if (!textareaRef.current) return;
@@ -2356,123 +2439,108 @@ var ThreadMessageForm = function() {
2356
2439
  isDisabledPrevious,
2357
2440
  textareaProps
2358
2441
  ]);
2359
- var assistantNameContext = (0, import_react27.useContext)(AssistantNameContext);
2360
- return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_themes30.Container, {
2361
- size: "2",
2362
- grow: "0",
2363
- style: style,
2364
- children: [
2365
- children,
2366
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_themes30.Flex, {
2367
- direction: "column",
2368
- shrink: "0",
2369
- children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_themes30.Flex, {
2370
- direction: "column",
2371
- shrink: "0",
2372
- children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("form", {
2373
- onSubmit: handleSubmit(onSubmit),
2374
- children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_themes30.Flex, {
2375
- style: _object_spread({
2376
- borderRadius: "var(--radius-2)",
2377
- borderWidth: "1px",
2378
- borderStyle: "solid",
2379
- borderColor: errors.content ? "var(--red-9)" : "var(--gray-5)"
2380
- }, errors.content ? {
2381
- backgroundColor: "var(--red-2)"
2382
- } : {}),
2383
- p: "2",
2384
- pl: "4",
2385
- children: [
2386
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_themes30.Text, {
2387
- size: "2",
2388
- style: {
2389
- flexGrow: 1
2390
- },
2391
- children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_themes30.Flex, {
2392
- grow: "1",
2393
- direction: "column",
2394
- children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(TextareaBase, _object_spread_props(_object_spread({
2395
- minRows: 1,
2396
- placeholder: "Message ".concat(assistantNameContext, "..."),
2397
- disabled: isDisabled,
2398
- onKeyDown: function(e) {
2399
- if (e.key === "Enter" && !e.shiftKey) {
2400
- e.preventDefault();
2401
- if (isSubmitDisabled) return;
2402
- handleSubmit(onSubmit)();
2403
- }
2404
- },
2405
- autoFocus: true
2406
- }, textareaProps), {
2407
- ref: function(e) {
2408
- textareaProps.ref(e);
2409
- textareaRef.current = e;
2410
- }
2411
- }))
2412
- })
2413
- }),
2414
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_themes30.Flex, {
2415
- shrink: "0",
2416
- align: "end",
2417
- children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Submit, {
2418
- isLoading: isLoading,
2419
- isDisabled: isSubmitDisabled
2420
- })
2421
- })
2422
- ]
2423
- })
2424
- })
2425
- })
2426
- })
2427
- ]
2428
- });
2442
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(TextareaBase, _object_spread_props(_object_spread({
2443
+ minRows: 1,
2444
+ placeholder: "Message ".concat(assistantNameContext, "..."),
2445
+ disabled: isDisabled,
2446
+ onKeyDown: function(e) {
2447
+ if (e.key === "Enter" && !e.shiftKey) {
2448
+ var _e_currentTarget_form;
2449
+ e.preventDefault();
2450
+ if (isSubmitDisabled) return;
2451
+ (_e_currentTarget_form = e.currentTarget.form) === null || _e_currentTarget_form === void 0 ? void 0 : _e_currentTarget_form.requestSubmit();
2452
+ }
2453
+ }
2454
+ }, textareaProps), {
2455
+ ref: function(e) {
2456
+ textareaProps.ref(e);
2457
+ textareaRef.current = e;
2458
+ }
2459
+ }));
2429
2460
  };
2430
- // src/components/threads/Thread/index.tsx
2431
- var import_jsx_runtime39 = require("react/jsx-runtime");
2432
- var Thread = function(props) {
2433
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(SuperinterfaceProvider, _object_spread_props(_object_spread({}, props), {
2434
- children: /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_themes31.Flex, {
2435
- direction: "column",
2436
- grow: "1",
2461
+ var Field = {
2462
+ Root: Root3,
2463
+ Control: Control
2464
+ };
2465
+ // src/components/threads/Thread/MessageForm/index.tsx
2466
+ var import_jsx_runtime42 = require("react/jsx-runtime");
2467
+ var MessageForm = function() {
2468
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Root2, {
2469
+ children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(Field.Root, {
2437
2470
  children: [
2438
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(ThreadMessages, {
2471
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_themes32.Text, {
2472
+ size: "2",
2439
2473
  style: {
2440
- padding: "var(--space-5)"
2441
- }
2474
+ flexGrow: 1
2475
+ },
2476
+ children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_themes32.Flex, {
2477
+ flexGrow: "1",
2478
+ direction: "column",
2479
+ children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Field.Control, {})
2480
+ })
2442
2481
  }),
2443
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(ThreadMessageForm, {
2444
- style: {
2445
- paddingLeft: "var(--space-5)",
2446
- paddingRight: "var(--space-5)",
2447
- paddingBottom: "var(--space-5)"
2448
- }
2482
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_themes32.Flex, {
2483
+ flexShrink: "0",
2484
+ align: "end",
2485
+ children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Submit, {})
2449
2486
  })
2450
2487
  ]
2451
2488
  })
2489
+ });
2490
+ };
2491
+ MessageForm.Root = Root2;
2492
+ MessageForm.Field = Field;
2493
+ MessageForm.Submit = Submit;
2494
+ // src/components/threads/Thread/Root/index.tsx
2495
+ var import_themes33 = require("@radix-ui/themes");
2496
+ var import_jsx_runtime43 = require("react/jsx-runtime");
2497
+ var Root4 = function(_param) {
2498
+ var children = _param.children, rest = _object_without_properties(_param, [
2499
+ "children"
2500
+ ]);
2501
+ return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(SuperinterfaceProvider, _object_spread_props(_object_spread({}, rest), {
2502
+ children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_themes33.Flex, {
2503
+ direction: "column",
2504
+ flexGrow: "1",
2505
+ children: children
2506
+ })
2507
+ }));
2508
+ };
2509
+ // src/components/threads/Thread/index.tsx
2510
+ var import_jsx_runtime44 = require("react/jsx-runtime");
2511
+ var Thread = function(props) {
2512
+ return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(Root4, _object_spread_props(_object_spread({}, props), {
2513
+ children: [
2514
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Messages, {}),
2515
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(MessageForm, {})
2516
+ ]
2452
2517
  }));
2453
2518
  };
2519
+ Thread.Root = Root4;
2520
+ Thread.Messages = Messages;
2521
+ Thread.MessageForm = MessageForm;
2454
2522
  // src/components/threads/ThreadDialog/Root/index.tsx
2455
- var import_themes32 = require("@radix-ui/themes");
2523
+ var import_themes34 = require("@radix-ui/themes");
2456
2524
  // src/components/threads/ThreadDialog/Provider/index.tsx
2457
- var import_react30 = require("react");
2525
+ var import_react33 = require("react");
2458
2526
  // src/contexts/threads/ThreadDialogContext/index.ts
2459
- var import_react28 = require("react");
2460
- var ThreadDialogContext = (0, import_react28.createContext)({
2527
+ var import_react31 = require("react");
2528
+ var ThreadDialogContext = (0, import_react31.createContext)({
2461
2529
  isOpen: false,
2462
2530
  setIsOpen: function() {}
2463
2531
  });
2464
2532
  // src/hooks/threads/useThreadDialogContext/index.ts
2465
- var import_react29 = require("react");
2533
+ var import_react32 = require("react");
2466
2534
  var useThreadDialogContext = function() {
2467
- return (0, import_react29.useContext)(ThreadDialogContext);
2535
+ return (0, import_react32.useContext)(ThreadDialogContext);
2468
2536
  };
2469
2537
  // src/components/threads/ThreadDialog/Provider/index.tsx
2470
- var import_jsx_runtime40 = require("react/jsx-runtime");
2538
+ var import_jsx_runtime45 = require("react/jsx-runtime");
2471
2539
  var Provider = function(param) {
2472
2540
  var children = param.children;
2473
2541
  var threadDialogContext = useThreadDialogContext();
2474
- var _ref = _sliced_to_array((0, import_react30.useState)(threadDialogContext.isOpen), 2), isOpen = _ref[0], setIsOpen = _ref[1];
2475
- return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(ThreadDialogContext.Provider, {
2542
+ var _ref = _sliced_to_array((0, import_react33.useState)(threadDialogContext.isOpen), 2), isOpen = _ref[0], setIsOpen = _ref[1];
2543
+ return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(ThreadDialogContext.Provider, {
2476
2544
  value: {
2477
2545
  isOpen: isOpen,
2478
2546
  setIsOpen: setIsOpen
@@ -2481,11 +2549,11 @@ var Provider = function(param) {
2481
2549
  });
2482
2550
  };
2483
2551
  // src/components/threads/ThreadDialog/Root/index.tsx
2484
- var import_jsx_runtime41 = require("react/jsx-runtime");
2485
- var Root = function(param) {
2552
+ var import_jsx_runtime46 = require("react/jsx-runtime");
2553
+ var Root5 = function(param) {
2486
2554
  var children = param.children, _param_style = param.style, style = _param_style === void 0 ? {} : _param_style;
2487
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Provider, {
2488
- children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_themes32.Flex, {
2555
+ return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Provider, {
2556
+ children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_themes34.Flex, {
2489
2557
  direction: "column",
2490
2558
  justify: "end",
2491
2559
  align: "end",
@@ -2501,94 +2569,107 @@ var Root = function(param) {
2501
2569
  });
2502
2570
  };
2503
2571
  // src/components/threads/ThreadDialog/Trigger/index.tsx
2504
- var import_themes33 = require("@radix-ui/themes");
2505
- var import_jsx_runtime42 = require("react/jsx-runtime");
2572
+ var import_themes35 = require("@radix-ui/themes");
2573
+ var import_jsx_runtime47 = require("react/jsx-runtime");
2506
2574
  var Trigger = function(param) {
2507
2575
  var children = param.children;
2508
2576
  var setIsOpen = useThreadDialogContext().setIsOpen;
2509
- return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_themes33.Flex, {
2577
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_themes35.Flex, {
2510
2578
  onClick: function() {
2511
2579
  return setIsOpen(function(prev) {
2512
2580
  return !prev;
2513
2581
  });
2514
2582
  },
2515
2583
  direction: "column",
2516
- shrink: "0",
2584
+ flexShrink: "0",
2517
2585
  children: children
2518
2586
  });
2519
2587
  };
2520
2588
  // src/components/threads/ThreadDialog/Button/index.tsx
2521
- var import_themes34 = require("@radix-ui/themes");
2589
+ var import_themes36 = require("@radix-ui/themes");
2522
2590
  var import_react_icons6 = require("@radix-ui/react-icons");
2523
- var import_jsx_runtime43 = require("react/jsx-runtime");
2591
+ var import_jsx_runtime48 = require("react/jsx-runtime");
2524
2592
  var Button3 = function() {
2525
- return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_themes34.IconButton, {
2593
+ return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_themes36.IconButton, {
2526
2594
  size: "4",
2527
2595
  radius: "full",
2528
- children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_react_icons6.ChatBubbleIcon, {})
2596
+ children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_react_icons6.ChatBubbleIcon, {})
2529
2597
  });
2530
2598
  };
2531
2599
  // src/components/threads/ThreadDialog/Content/index.tsx
2532
- var import_themes35 = require("@radix-ui/themes");
2533
- var import_jsx_runtime44 = require("react/jsx-runtime");
2534
- var Content4 = function(param) {
2600
+ var import_themes37 = require("@radix-ui/themes");
2601
+ var import_jsx_runtime49 = require("react/jsx-runtime");
2602
+ var Root6 = function(param) {
2535
2603
  var children = param.children;
2536
2604
  var isOpen = useThreadDialogContext().isOpen;
2537
2605
  if (!isOpen) return null;
2538
- return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_jsx_runtime44.Fragment, {
2539
- children: [
2540
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("style", {
2541
- children: ".superinterface-thread-dialog-card .rt-CardInner { display: flex; }"
2542
- }),
2543
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_themes35.Card, {
2544
- className: "superinterface-thread-dialog-card",
2545
- mb: "3",
2546
- style: {
2547
- flexGrow: 1,
2548
- width: "100vw",
2549
- maxWidth: "400px",
2550
- maxHeight: "720px"
2551
- },
2552
- children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_themes35.Inset, {
2553
- clip: "padding-box",
2554
- side: "all",
2555
- pb: "current",
2606
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_themes37.Card, {
2607
+ mb: "3",
2608
+ style: {
2609
+ display: "flex",
2610
+ flexGrow: 1,
2611
+ width: "100vw",
2612
+ maxWidth: "400px",
2613
+ maxHeight: "720px"
2614
+ },
2615
+ children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_themes37.Inset, {
2616
+ clip: "padding-box",
2617
+ side: "all",
2618
+ pb: "current",
2619
+ style: {
2620
+ display: "flex",
2621
+ flexGrow: 1
2622
+ },
2623
+ children: children
2624
+ })
2625
+ });
2626
+ };
2627
+ var Content4 = function() {
2628
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Root6, {
2629
+ children: /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(Thread.Root, {
2630
+ children: [
2631
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Thread.Messages, {
2556
2632
  style: {
2557
- display: "flex",
2558
- flexGrow: 1
2559
- },
2560
- children: children
2633
+ padding: "var(--space-5)"
2634
+ }
2635
+ }),
2636
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_themes37.Flex, {
2637
+ direction: "column",
2638
+ pl: "5",
2639
+ pr: "5",
2640
+ pb: "3",
2641
+ flexShrink: "0",
2642
+ children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Thread.MessageForm, {})
2561
2643
  })
2562
- })
2563
- ]
2644
+ ]
2645
+ })
2564
2646
  });
2565
2647
  };
2648
+ Content4.Root = Root6;
2566
2649
  // src/components/threads/ThreadDialog/index.tsx
2567
- var import_jsx_runtime45 = require("react/jsx-runtime");
2650
+ var import_jsx_runtime50 = require("react/jsx-runtime");
2568
2651
  var ThreadDialog = function() {
2569
- return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(Root, {
2652
+ return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(Root5, {
2570
2653
  children: [
2571
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Content4, {
2572
- children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Thread, {})
2573
- }),
2574
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Trigger, {
2575
- children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Button3, {})
2654
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Content4, {}),
2655
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Trigger, {
2656
+ children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Button3, {})
2576
2657
  })
2577
2658
  ]
2578
2659
  });
2579
2660
  };
2580
- ThreadDialog.Root = Root;
2661
+ ThreadDialog.Root = Root5;
2581
2662
  ThreadDialog.Trigger = Trigger;
2582
2663
  ThreadDialog.Button = Button3;
2583
2664
  ThreadDialog.Content = Content4;
2584
2665
  // src/components/threads/AudioThread/Root/index.tsx
2585
2666
  var import_runtime = require("regenerator-runtime/runtime");
2586
- var import_react35 = require("react");
2587
- var import_themes36 = require("@radix-ui/themes");
2667
+ var import_react38 = require("react");
2668
+ var import_themes38 = require("@radix-ui/themes");
2588
2669
  var import_react_speech_recognition = __toESM(require("react-speech-recognition"), 1);
2589
2670
  // src/contexts/threads/AudioThreadContext/index.ts
2590
- var import_react31 = require("react");
2591
- var AudioThreadContext = (0, import_react31.createContext)({
2671
+ var import_react34 = require("react");
2672
+ var AudioThreadContext = (0, import_react34.createContext)({
2592
2673
  status: "idle",
2593
2674
  recorderProps: {
2594
2675
  status: "idle",
@@ -2646,13 +2727,13 @@ var AudioThreadContext = (0, import_react31.createContext)({
2646
2727
  // src/components/threads/AudioThread/Root/index.tsx
2647
2728
  var import_react_use4 = require("react-use");
2648
2729
  // src/hooks/audioThreads/useStatus/index.ts
2649
- var import_react32 = require("react");
2730
+ var import_react35 = require("react");
2650
2731
  var useStatus = function(param) {
2651
- var messageAudioProps = param.messageAudioProps, recorderProps = param.recorderProps, createThreadMessageProps = param.createThreadMessageProps;
2732
+ var messageAudioProps = param.messageAudioProps, recorderProps = param.recorderProps, createMessageProps = param.createMessageProps;
2652
2733
  var isRunActiveProps = useIsRunActive();
2653
- var status = (0, import_react32.useMemo)(function() {
2734
+ var status = (0, import_react35.useMemo)(function() {
2654
2735
  if (recorderProps.status === "recording") return "recording";
2655
- if (createThreadMessageProps.isPending) return "creatingMessage";
2736
+ if (createMessageProps.isPending) return "creatingMessage";
2656
2737
  if (isRunActiveProps.isRunActive) return "runActive";
2657
2738
  if (messageAudioProps.playing) return "playing";
2658
2739
  if (messageAudioProps.paused) return "playerPaused";
@@ -2663,7 +2744,7 @@ var useStatus = function(param) {
2663
2744
  }, [
2664
2745
  messageAudioProps,
2665
2746
  recorderProps,
2666
- createThreadMessageProps,
2747
+ createMessageProps,
2667
2748
  isRunActiveProps
2668
2749
  ]);
2669
2750
  return {
@@ -2673,19 +2754,19 @@ var useStatus = function(param) {
2673
2754
  // src/hooks/audioThreads/useRecorder/index.ts
2674
2755
  var import_dayjs = __toESM(require("dayjs"), 1);
2675
2756
  var import_use_audio_capture = require("use-audio-capture");
2676
- var import_react33 = require("react");
2757
+ var import_react36 = require("react");
2677
2758
  var import_react_use_audio_player = require("react-use-audio-player");
2678
2759
  var import_react_use3 = require("react-use");
2679
2760
  var useRecorder = function(param) {
2680
2761
  var isStopOnSilence = param.isStopOnSilence, onStart = param.onStart, onStop = param.onStop;
2681
- var _ref = _sliced_to_array((0, import_react33.useState)(null), 2), silenceStart = _ref[0], setSilenceStart = _ref[1];
2682
- var _ref1 = _sliced_to_array((0, import_react33.useState)(null), 2), noiseStart = _ref1[0], setNoiseStart = _ref1[1];
2683
- var _ref2 = _sliced_to_array((0, import_react33.useState)(null), 2), mediaStream = _ref2[0], setMediaStream = _ref2[1];
2684
- var _ref3 = _sliced_to_array((0, import_react33.useState)("idle"), 2), status = _ref3[0], setStatus = _ref3[1];
2762
+ var _ref = _sliced_to_array((0, import_react36.useState)(null), 2), silenceStart = _ref[0], setSilenceStart = _ref[1];
2763
+ var _ref1 = _sliced_to_array((0, import_react36.useState)(null), 2), noiseStart = _ref1[0], setNoiseStart = _ref1[1];
2764
+ var _ref2 = _sliced_to_array((0, import_react36.useState)(null), 2), mediaStream = _ref2[0], setMediaStream = _ref2[1];
2765
+ var _ref3 = _sliced_to_array((0, import_react36.useState)("idle"), 2), status = _ref3[0], setStatus = _ref3[1];
2685
2766
  var startAudioPlayer = (0, import_react_use_audio_player.useAudioPlayer)();
2686
2767
  var endAudioPlayer = (0, import_react_use_audio_player.useAudioPlayer)();
2687
- var _ref4 = _sliced_to_array((0, import_react33.useState)(false), 2), isLoaded = _ref4[0], setIsLoaded = _ref4[1];
2688
- (0, import_react33.useEffect)(function() {
2768
+ var _ref4 = _sliced_to_array((0, import_react36.useState)(false), 2), isLoaded = _ref4[0], setIsLoaded = _ref4[1];
2769
+ (0, import_react36.useEffect)(function() {
2689
2770
  if (isLoaded) return;
2690
2771
  setIsLoaded(true);
2691
2772
  startAudioPlayer.load("/sounds/warning.wav", {
@@ -2751,9 +2832,9 @@ var useRecorder = function(param) {
2751
2832
  setNoiseStart(null);
2752
2833
  }
2753
2834
  });
2754
- var _ref5 = _sliced_to_array((0, import_react33.useState)(null), 2), audioEngine = _ref5[0], setAudioEngine = _ref5[1];
2755
- var isInited = (0, import_react33.useRef)(false);
2756
- (0, import_react33.useEffect)(function() {
2835
+ var _ref5 = _sliced_to_array((0, import_react36.useState)(null), 2), audioEngine = _ref5[0], setAudioEngine = _ref5[1];
2836
+ var isInited = (0, import_react36.useRef)(false);
2837
+ (0, import_react36.useEffect)(function() {
2757
2838
  if (!mediaStream) return;
2758
2839
  if (isInited.current) return;
2759
2840
  isInited.current = true;
@@ -2766,7 +2847,7 @@ var useRecorder = function(param) {
2766
2847
  isInited,
2767
2848
  mediaStream
2768
2849
  ]);
2769
- var visualizationAnalyser = (0, import_react33.useMemo)(function() {
2850
+ var visualizationAnalyser = (0, import_react36.useMemo)(function() {
2770
2851
  if (!audioEngine) return null;
2771
2852
  var result = audioEngine.audioContext.createAnalyser();
2772
2853
  audioEngine.source.connect(result);
@@ -2774,7 +2855,7 @@ var useRecorder = function(param) {
2774
2855
  }, [
2775
2856
  audioEngine
2776
2857
  ]);
2777
- var silenceAnalyser = (0, import_react33.useMemo)(function() {
2858
+ var silenceAnalyser = (0, import_react36.useMemo)(function() {
2778
2859
  if (!audioEngine) return null;
2779
2860
  var result = audioEngine.audioContext.createAnalyser();
2780
2861
  result.minDecibels = -45;
@@ -2783,7 +2864,7 @@ var useRecorder = function(param) {
2783
2864
  }, [
2784
2865
  audioEngine
2785
2866
  ]);
2786
- var handleSilence = (0, import_react33.useCallback)(function() {
2867
+ var handleSilence = (0, import_react36.useCallback)(function() {
2787
2868
  if (!silenceAnalyser) return;
2788
2869
  var frequencyData = new Uint8Array(silenceAnalyser.frequencyBinCount);
2789
2870
  silenceAnalyser.getByteFrequencyData(frequencyData);
@@ -2806,7 +2887,7 @@ var useRecorder = function(param) {
2806
2887
  setNoiseStart,
2807
2888
  setSilenceStart
2808
2889
  ]);
2809
- (0, import_react33.useEffect)(function() {
2890
+ (0, import_react36.useEffect)(function() {
2810
2891
  if (!isStopOnSilence) return;
2811
2892
  requestAnimationFrame(function() {
2812
2893
  return handleSilence();
@@ -2829,14 +2910,14 @@ var useRecorder = function(param) {
2829
2910
  });
2830
2911
  };
2831
2912
  // src/hooks/audioThreads/useMessageAudio/index.ts
2832
- var import_react34 = require("react");
2913
+ var import_react37 = require("react");
2833
2914
  var import_howler = require("howler");
2834
2915
  var import_react_use_audio_player2 = require("react-use-audio-player");
2835
2916
  // src/hooks/audioThreads/useMessageAudio/lib/input.ts
2836
2917
  var import_radash9 = require("radash");
2837
2918
  var input = function(param) {
2838
- var threadMessage = param.threadMessage;
2839
- var textContents = threadMessage.content.filter(function(c) {
2919
+ var message = param.message;
2920
+ var textContents = message.content.filter(function(c) {
2840
2921
  return c.type === "text";
2841
2922
  });
2842
2923
  var result = textContents.map(function(c) {
@@ -2855,22 +2936,22 @@ var isHtmlAudioSupported = !unsupportedNames.includes(((_this = (0, import_detec
2855
2936
  // src/hooks/audioThreads/useMessageAudio/index.ts
2856
2937
  var useMessageAudio = function(param) {
2857
2938
  var onEnd = param.onEnd;
2858
- var _ref = _sliced_to_array((0, import_react34.useState)([]), 2), playedMessageIds = _ref[0], setPlayedMessageIds = _ref[1];
2939
+ var _ref = _sliced_to_array((0, import_react37.useState)([]), 2), playedMessageIds = _ref[0], setPlayedMessageIds = _ref[1];
2859
2940
  var audioPlayer = (0, import_react_use_audio_player2.useAudioPlayer)();
2860
2941
  var superinterfaceContext = useSuperinterfaceContext();
2861
- var latestThreadMessageProps = useLatestThreadMessage();
2862
- (0, import_react34.useEffect)(function() {
2942
+ var latestMessageProps = useLatestMessage();
2943
+ (0, import_react37.useEffect)(function() {
2863
2944
  if (audioPlayer.playing) return;
2864
- if (!latestThreadMessageProps.latestThreadMessage) return;
2865
- if (latestThreadMessageProps.latestThreadMessage.role !== "assistant") return;
2866
- if (playedMessageIds.includes(latestThreadMessageProps.latestThreadMessage.id)) return;
2945
+ if (!latestMessageProps.latestMessage) return;
2946
+ if (latestMessageProps.latestMessage.role !== "assistant") return;
2947
+ if (playedMessageIds.includes(latestMessageProps.latestMessage.id)) return;
2867
2948
  var input2 = input({
2868
- threadMessage: latestThreadMessageProps.latestThreadMessage
2949
+ message: latestMessageProps.latestMessage
2869
2950
  });
2870
2951
  if (!input2) return;
2871
2952
  setPlayedMessageIds(function(prev) {
2872
2953
  return _to_consumable_array(prev).concat([
2873
- latestThreadMessageProps.latestThreadMessage.id
2954
+ latestMessageProps.latestMessage.id
2874
2955
  ]);
2875
2956
  });
2876
2957
  audioPlayer.load("".concat(superinterfaceContext.baseUrl, "/tts?input=").concat(input2), {
@@ -2881,14 +2962,14 @@ var useMessageAudio = function(param) {
2881
2962
  });
2882
2963
  }, [
2883
2964
  superinterfaceContext,
2884
- latestThreadMessageProps,
2965
+ latestMessageProps,
2885
2966
  audioPlayer,
2886
2967
  playedMessageIds,
2887
2968
  onEnd
2888
2969
  ]);
2889
- var isInited = (0, import_react34.useRef)(false);
2890
- var _ref1 = _sliced_to_array((0, import_react34.useState)(null), 2), audioEngine = _ref1[0], setAudioEngine = _ref1[1];
2891
- (0, import_react34.useEffect)(function() {
2970
+ var isInited = (0, import_react37.useRef)(false);
2971
+ var _ref1 = _sliced_to_array((0, import_react37.useState)(null), 2), audioEngine = _ref1[0], setAudioEngine = _ref1[1];
2972
+ (0, import_react37.useEffect)(function() {
2892
2973
  if (!audioPlayer.playing) return;
2893
2974
  if (isInited.current) return;
2894
2975
  isInited.current = true;
@@ -2909,7 +2990,7 @@ var useMessageAudio = function(param) {
2909
2990
  audioPlayer,
2910
2991
  isInited
2911
2992
  ]);
2912
- var visualizationAnalyser = (0, import_react34.useMemo)(function() {
2993
+ var visualizationAnalyser = (0, import_react37.useMemo)(function() {
2913
2994
  if (!audioEngine) return null;
2914
2995
  var result = audioEngine.audioContext.createAnalyser();
2915
2996
  audioEngine.source.connect(audioEngine.audioContext.destination);
@@ -2923,19 +3004,14 @@ var useMessageAudio = function(param) {
2923
3004
  });
2924
3005
  };
2925
3006
  // src/components/threads/AudioThread/Root/index.tsx
2926
- var import_jsx_runtime46 = require("react/jsx-runtime");
2927
- var Root2 = function(param) {
3007
+ var import_jsx_runtime51 = require("react/jsx-runtime");
3008
+ var Root7 = function(param) {
2928
3009
  var children = param.children;
2929
- useThreadLifecycles();
2930
- var createThreadMessageProps = useCreateThreadMessage();
2931
- var _ref = (0, import_react_speech_recognition.useSpeechRecognition)(), transcript = _ref.transcript, listening = _ref.listening, resetTranscript = _ref.resetTranscript, browserSupportsSpeechRecognition = _ref.browserSupportsSpeechRecognition, rest = _object_without_properties(_ref, [
2932
- "transcript",
2933
- "listening",
2934
- "resetTranscript",
2935
- "browserSupportsSpeechRecognition"
2936
- ]);
2937
- var transcriptRef = (0, import_react35.useRef)(transcript);
2938
- (0, import_react35.useEffect)(function() {
3010
+ useLifecycle();
3011
+ var createMessageProps = useCreateMessage();
3012
+ var _ref = (0, import_react_speech_recognition.useSpeechRecognition)(), transcript = _ref.transcript, resetTranscript = _ref.resetTranscript;
3013
+ var transcriptRef = (0, import_react38.useRef)(transcript);
3014
+ (0, import_react38.useEffect)(function() {
2939
3015
  transcriptRef.current = transcript;
2940
3016
  }, [
2941
3017
  transcript
@@ -2955,20 +3031,21 @@ var Root2 = function(param) {
2955
3031
  });
2956
3032
  }),
2957
3033
  onStop: function() {
2958
- var _ref = _async_to_generator(function(_event, chunks) {
3034
+ var _ref = _async_to_generator(function(_event, _chunks) {
2959
3035
  return _ts_generator(this, function(_state) {
2960
3036
  console.log({
2961
3037
  transcript: transcriptRef.current
2962
3038
  });
2963
3039
  return [
2964
3040
  2,
2965
- createThreadMessageProps.createThreadMessage({
3041
+ createMessageProps.createMessage({
3042
+ // @ts-ignore-next-line
2966
3043
  content: transcriptRef.current
2967
3044
  })
2968
3045
  ];
2969
3046
  });
2970
3047
  });
2971
- return function(_event, chunks) {
3048
+ return function(_event, _chunks) {
2972
3049
  return _ref.apply(this, arguments);
2973
3050
  };
2974
3051
  }()
@@ -2985,47 +3062,47 @@ var Root2 = function(param) {
2985
3062
  });
2986
3063
  var status = useStatus({
2987
3064
  recorderProps: recorderProps,
2988
- createThreadMessageProps: createThreadMessageProps,
3065
+ createMessageProps: createMessageProps,
2989
3066
  messageAudioProps: messageAudioProps
2990
3067
  }).status;
2991
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(AudioThreadContext.Provider, {
3068
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(AudioThreadContext.Provider, {
2992
3069
  value: {
2993
3070
  status: status,
2994
3071
  recorderProps: recorderProps,
2995
3072
  messageAudioProps: messageAudioProps
2996
3073
  },
2997
- children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_themes36.Flex, {
3074
+ children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_themes38.Flex, {
2998
3075
  direction: "column",
2999
- grow: "1",
3076
+ flexGrow: "1",
3000
3077
  p: "5",
3001
3078
  children: children
3002
3079
  })
3003
3080
  });
3004
3081
  };
3005
3082
  // src/components/threads/AudioThread/Visualization/index.tsx
3006
- var import_themes37 = require("@radix-ui/themes");
3083
+ var import_themes39 = require("@radix-ui/themes");
3007
3084
  // src/hooks/threads/useAudioThreadContext/index.ts
3008
- var import_react36 = require("react");
3085
+ var import_react39 = require("react");
3009
3086
  var useAudioThreadContext = function() {
3010
- return (0, import_react36.useContext)(AudioThreadContext);
3087
+ return (0, import_react39.useContext)(AudioThreadContext);
3011
3088
  };
3012
3089
  // src/components/threads/AudioThread/Visualization/index.tsx
3013
- var import_jsx_runtime47 = require("react/jsx-runtime");
3090
+ var import_jsx_runtime52 = require("react/jsx-runtime");
3014
3091
  var Visualization = function() {
3015
3092
  var audioThreadContext = useAudioThreadContext();
3016
- return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_themes37.Flex, {
3093
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_themes39.Flex, {
3017
3094
  direction: "column",
3018
3095
  align: "center",
3019
3096
  justify: "center",
3020
3097
  mb: "3",
3021
- grow: "1",
3022
- children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_themes37.Flex, {
3098
+ flexGrow: "1",
3099
+ children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_themes39.Flex, {
3023
3100
  align: "center",
3024
3101
  justify: "center",
3102
+ height: "200px",
3103
+ width: "200px",
3025
3104
  style: {
3026
3105
  backgroundColor: "var(--".concat(audioThreadContext.status === "playing" ? "mint" : "gray", "-4)"),
3027
- height: "200px",
3028
- width: "200px",
3029
3106
  borderRadius: "9999px"
3030
3107
  }
3031
3108
  })
@@ -3033,22 +3110,22 @@ var Visualization = function() {
3033
3110
  };
3034
3111
  // src/components/threads/AudioThread/Form/index.tsx
3035
3112
  var import_react_icons8 = require("@radix-ui/react-icons");
3036
- var import_themes40 = require("@radix-ui/themes");
3113
+ var import_themes42 = require("@radix-ui/themes");
3037
3114
  // src/components/threads/AudioThread/Form/Visualizer/index.tsx
3038
3115
  var import_lodash7 = __toESM(require("lodash"), 1);
3039
- var import_themes38 = require("@radix-ui/themes");
3040
- var import_react37 = require("react");
3116
+ var import_themes40 = require("@radix-ui/themes");
3117
+ var import_react40 = require("react");
3041
3118
  var import_radash10 = require("radash");
3042
- var import_jsx_runtime48 = require("react/jsx-runtime");
3119
+ var import_jsx_runtime53 = require("react/jsx-runtime");
3043
3120
  var barCount = 4;
3044
3121
  var Visualizer = function() {
3045
3122
  var audioThreadContext = useAudioThreadContext();
3046
3123
  var visualizationAnalyser = audioThreadContext.recorderProps.visualizationAnalyser;
3047
- var _ref = _sliced_to_array((0, import_react37.useState)(function() {
3124
+ var _ref = _sliced_to_array((0, import_react40.useState)(function() {
3048
3125
  return new AudioContext().createAnalyser();
3049
3126
  }), 1), emptyVisualizer = _ref[0];
3050
- var _ref1 = _sliced_to_array((0, import_react37.useState)([]), 2), barHeights = _ref1[0], setBarHeights = _ref1[1];
3051
- var draw = (0, import_react37.useCallback)(function(param) {
3127
+ var _ref1 = _sliced_to_array((0, import_react40.useState)([]), 2), barHeights = _ref1[0], setBarHeights = _ref1[1];
3128
+ var draw = (0, import_react40.useCallback)(function(param) {
3052
3129
  var visualizationAnalyser2 = param.visualizationAnalyser;
3053
3130
  var frequencyData = new Uint8Array(visualizationAnalyser2.frequencyBinCount / 15);
3054
3131
  visualizationAnalyser2.getByteFrequencyData(frequencyData);
@@ -3062,7 +3139,7 @@ var Visualizer = function() {
3062
3139
  });
3063
3140
  });
3064
3141
  }, []);
3065
- (0, import_react37.useEffect)(function() {
3142
+ (0, import_react40.useEffect)(function() {
3066
3143
  draw({
3067
3144
  visualizationAnalyser: visualizationAnalyser || emptyVisualizer
3068
3145
  });
@@ -3071,7 +3148,7 @@ var Visualizer = function() {
3071
3148
  visualizationAnalyser,
3072
3149
  emptyVisualizer
3073
3150
  ]);
3074
- return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_themes38.Grid, {
3151
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_themes40.Grid, {
3075
3152
  columns: "".concat(barCount),
3076
3153
  gap: "1",
3077
3154
  width: "auto",
@@ -3080,21 +3157,19 @@ var Visualizer = function() {
3080
3157
  gridTemplateColumns: "repeat(4, minmax(0, 1fr))"
3081
3158
  },
3082
3159
  children: barHeights.map(function(barHeight, index) {
3083
- return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_themes38.Flex, {
3160
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_themes40.Flex, {
3084
3161
  direction: "column",
3085
3162
  align: "center",
3086
3163
  justify: "center",
3087
- style: {
3088
- height: "20px"
3089
- },
3090
- children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_themes38.Flex, {
3164
+ height: "20px",
3165
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_themes40.Flex, {
3166
+ minHeight: "50%",
3167
+ maxHeight: "100%",
3168
+ height: "".concat(barHeight + 20, "%"),
3169
+ width: "12px",
3091
3170
  style: {
3092
3171
  backgroundColor: "var(--".concat(audioThreadContext.status === "recording" ? "mint" : "gray", "-11)"),
3093
- borderRadius: "var(--radius-6)",
3094
- height: "".concat(barHeight + 20, "%"),
3095
- minHeight: "50%",
3096
- maxHeight: "100%",
3097
- width: "12px"
3172
+ borderRadius: "var(--radius-6)"
3098
3173
  }
3099
3174
  })
3100
3175
  }, index);
@@ -3102,31 +3177,31 @@ var Visualizer = function() {
3102
3177
  });
3103
3178
  };
3104
3179
  // src/components/threads/AudioThread/Form/ActionButton/index.tsx
3105
- var import_themes39 = require("@radix-ui/themes");
3180
+ var import_themes41 = require("@radix-ui/themes");
3106
3181
  var import_react_icons7 = require("@radix-ui/react-icons");
3107
- var import_jsx_runtime49 = require("react/jsx-runtime");
3182
+ var import_jsx_runtime54 = require("react/jsx-runtime");
3108
3183
  var ActionButton = function() {
3109
3184
  var audioThreadContext = useAudioThreadContext();
3110
3185
  if (audioThreadContext.status === "recording") {
3111
- return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_themes39.Flex, {
3186
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_themes41.Flex, {
3112
3187
  align: "center",
3113
3188
  children: [
3114
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_themes39.Flex, {
3189
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_themes41.Flex, {
3115
3190
  mr: "3",
3116
3191
  ml: "-7",
3117
- children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_themes39.IconButton, {
3192
+ children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_themes41.IconButton, {
3118
3193
  onClick: audioThreadContext.recorderProps.pause,
3119
3194
  color: "gray",
3120
3195
  radius: "full",
3121
3196
  size: "1",
3122
- children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_react_icons7.PauseIcon, {})
3197
+ children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_icons7.PauseIcon, {})
3123
3198
  })
3124
3199
  }),
3125
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_themes39.Tooltip, {
3200
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_themes41.Tooltip, {
3126
3201
  open: true,
3127
3202
  content: "Send your message",
3128
3203
  side: "bottom",
3129
- children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_themes39.IconButton, {
3204
+ children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_themes41.IconButton, {
3130
3205
  onClick: audioThreadContext.recorderProps.stop,
3131
3206
  color: "gray",
3132
3207
  highContrast: true,
@@ -3135,14 +3210,14 @@ var ActionButton = function() {
3135
3210
  style: {
3136
3211
  border: "2px solid var(--gray-8)"
3137
3212
  },
3138
- children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_react_icons7.ArrowUpIcon, {})
3213
+ children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_icons7.ArrowUpIcon, {})
3139
3214
  })
3140
3215
  })
3141
3216
  ]
3142
3217
  });
3143
3218
  }
3144
3219
  if (audioThreadContext.status === "recorderPaused") {
3145
- return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_themes39.IconButton, {
3220
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_themes41.IconButton, {
3146
3221
  onClick: audioThreadContext.recorderProps.resume,
3147
3222
  color: "red",
3148
3223
  radius: "full",
@@ -3150,11 +3225,11 @@ var ActionButton = function() {
3150
3225
  style: {
3151
3226
  border: "2px solid var(--gray-8)"
3152
3227
  },
3153
- children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_react_icons7.ResumeIcon, {})
3228
+ children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_icons7.ResumeIcon, {})
3154
3229
  });
3155
3230
  }
3156
3231
  if (audioThreadContext.status === "idle") {
3157
- return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_themes39.IconButton, {
3232
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_themes41.IconButton, {
3158
3233
  onClick: function() {
3159
3234
  return audioThreadContext.recorderProps.start();
3160
3235
  },
@@ -3167,7 +3242,7 @@ var ActionButton = function() {
3167
3242
  });
3168
3243
  }
3169
3244
  if (audioThreadContext.status === "playing") {
3170
- return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_themes39.IconButton, {
3245
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_themes41.IconButton, {
3171
3246
  onClick: function() {
3172
3247
  return audioThreadContext.messageAudioProps.pause();
3173
3248
  },
@@ -3177,11 +3252,11 @@ var ActionButton = function() {
3177
3252
  style: {
3178
3253
  border: "2px solid var(--gray-8)"
3179
3254
  },
3180
- children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_react_icons7.PauseIcon, {})
3255
+ children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_icons7.PauseIcon, {})
3181
3256
  });
3182
3257
  }
3183
3258
  if (audioThreadContext.status === "playerPaused") {
3184
- return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_themes39.IconButton, {
3259
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_themes41.IconButton, {
3185
3260
  onClick: function() {
3186
3261
  return audioThreadContext.messageAudioProps.play();
3187
3262
  },
@@ -3191,10 +3266,10 @@ var ActionButton = function() {
3191
3266
  style: {
3192
3267
  border: "2px solid var(--gray-8)"
3193
3268
  },
3194
- children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_react_icons7.ResumeIcon, {})
3269
+ children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_icons7.ResumeIcon, {})
3195
3270
  });
3196
3271
  }
3197
- return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_themes39.IconButton, {
3272
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_themes41.IconButton, {
3198
3273
  size: "4",
3199
3274
  color: "red",
3200
3275
  radius: "full",
@@ -3205,140 +3280,141 @@ var ActionButton = function() {
3205
3280
  });
3206
3281
  };
3207
3282
  // src/components/threads/AudioThread/Form/index.tsx
3208
- var import_jsx_runtime50 = require("react/jsx-runtime");
3283
+ var import_jsx_runtime55 = require("react/jsx-runtime");
3209
3284
  var Form = function() {
3210
3285
  var audioThreadContext = useAudioThreadContext();
3211
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_themes40.Flex, {
3286
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_themes42.Flex, {
3212
3287
  direction: "column",
3213
3288
  align: "center",
3214
3289
  children: [
3215
- /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_themes40.Flex, {
3290
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_themes42.Flex, {
3216
3291
  pb: "3",
3217
3292
  align: "center",
3218
3293
  children: [
3219
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_themes40.Flex, {
3294
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_themes42.Flex, {
3220
3295
  ml: "-5",
3221
3296
  mr: "2",
3222
3297
  align: "center",
3223
- children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_icons8.SpeakerModerateIcon, {
3298
+ children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_react_icons8.SpeakerModerateIcon, {
3224
3299
  style: {
3225
3300
  color: "var(--".concat(audioThreadContext.status === "recording" ? "mint" : "gray", "-12)")
3226
3301
  }
3227
3302
  })
3228
3303
  }),
3229
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_themes40.Flex, {
3304
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_themes42.Flex, {
3230
3305
  px: "2",
3231
3306
  py: "1",
3232
3307
  style: {
3233
3308
  backgroundColor: "var(--".concat(audioThreadContext.status === "recording" ? "mint" : "gray", "-4)"),
3234
3309
  borderRadius: "var(--radius-6)"
3235
3310
  },
3236
- children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Visualizer, {})
3311
+ children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Visualizer, {})
3237
3312
  })
3238
3313
  ]
3239
3314
  }),
3240
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(ActionButton, {})
3315
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(ActionButton, {})
3241
3316
  ]
3242
3317
  });
3243
3318
  };
3244
3319
  // src/components/threads/AudioThread/index.tsx
3245
- var import_jsx_runtime51 = require("react/jsx-runtime");
3320
+ var import_jsx_runtime56 = require("react/jsx-runtime");
3246
3321
  var AudioThread = function(props) {
3247
- return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(Root2, _object_spread_props(_object_spread({}, props), {
3322
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(Root7, _object_spread_props(_object_spread({}, props), {
3248
3323
  children: [
3249
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Visualization, {}),
3250
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Form, {})
3324
+ /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Visualization, {}),
3325
+ /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Form, {})
3251
3326
  ]
3252
3327
  }));
3253
3328
  };
3254
- AudioThread.Root = Root2;
3329
+ AudioThread.Root = Root7;
3255
3330
  AudioThread.Visualization = Visualization;
3256
3331
  AudioThread.Form = Form;
3257
3332
  // src/components/threads/AudioThreadDialog/index.tsx
3258
- var import_jsx_runtime52 = require("react/jsx-runtime");
3333
+ var import_jsx_runtime57 = require("react/jsx-runtime");
3259
3334
  var AudioThreadDialog = function() {
3260
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(Root, {
3335
+ return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(Root5, {
3261
3336
  children: [
3262
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Content4, {
3263
- children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(AudioThread, {})
3337
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Content4.Root, {
3338
+ children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(AudioThread, {})
3264
3339
  }),
3265
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Trigger, {
3266
- children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Button3, {})
3340
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Trigger, {
3341
+ children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Button3, {})
3267
3342
  })
3268
3343
  ]
3269
3344
  });
3270
3345
  };
3271
- AudioThreadDialog.Root = Root;
3346
+ AudioThreadDialog.Root = Root5;
3272
3347
  AudioThreadDialog.Trigger = Trigger;
3273
3348
  AudioThreadDialog.Button = Button3;
3274
3349
  AudioThreadDialog.Content = Content4;
3275
3350
  // src/components/suggestions/Suggestions/index.tsx
3276
- var import_react38 = require("react");
3277
- var import_themes42 = require("@radix-ui/themes");
3351
+ var import_react41 = require("react");
3352
+ var import_themes44 = require("@radix-ui/themes");
3278
3353
  // src/components/suggestions/Suggestion/index.tsx
3279
3354
  var import_react_icons9 = require("@radix-ui/react-icons");
3280
- var import_themes41 = require("@radix-ui/themes");
3281
- var import_jsx_runtime53 = require("react/jsx-runtime");
3355
+ var import_themes43 = require("@radix-ui/themes");
3356
+ var import_jsx_runtime58 = require("react/jsx-runtime");
3282
3357
  var Suggestion = function(param) {
3283
3358
  var suggestion = param.suggestion;
3284
- var createThreadMessage = useCreateThreadMessage().createThreadMessage;
3359
+ var createMessage = useCreateMessage().createMessage;
3285
3360
  var _useIsRunActive = useIsRunActive(), isRunActive2 = _useIsRunActive.isRunActive;
3286
- return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_themes41.Button, {
3361
+ return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(import_themes43.Button, {
3287
3362
  variant: "soft",
3288
3363
  style: {
3289
3364
  justifyContent: "space-between"
3290
3365
  },
3291
3366
  onClick: function() {
3292
- createThreadMessage({
3367
+ createMessage({
3368
+ // @ts-ignore-next-line
3293
3369
  content: suggestion
3294
3370
  });
3295
3371
  },
3296
3372
  disabled: isRunActive2,
3297
3373
  children: [
3298
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_themes41.Text, {
3374
+ /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_themes43.Text, {
3299
3375
  size: "1",
3300
3376
  weight: "regular",
3301
3377
  children: suggestion
3302
3378
  }),
3303
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_icons9.ArrowUpIcon, {})
3379
+ /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_icons9.ArrowUpIcon, {})
3304
3380
  ]
3305
3381
  });
3306
3382
  };
3307
3383
  // src/components/suggestions/Suggestions/index.tsx
3308
- var import_jsx_runtime54 = require("react/jsx-runtime");
3384
+ var import_jsx_runtime59 = require("react/jsx-runtime");
3309
3385
  var Suggestions = function(param) {
3310
3386
  var _param_emptyStateSuggestions = param.emptyStateSuggestions, emptyStateSuggestions = _param_emptyStateSuggestions === void 0 ? [] : _param_emptyStateSuggestions, _param_suggestions = param.suggestions, suggestions = _param_suggestions === void 0 ? [] : _param_suggestions;
3311
- var latestThreadMessageProps = useLatestThreadMessage();
3387
+ var latestMessageProps = useLatestMessage();
3312
3388
  var isRunActiveProps = useIsRunActive();
3313
- var isDisabled = (0, import_react38.useMemo)(function() {
3389
+ var isDisabled = (0, import_react41.useMemo)(function() {
3314
3390
  var // @ts-ignore-next-line
3315
- _latestThreadMessageProps_latestThreadMessage_metadata, _latestThreadMessageProps_latestThreadMessage;
3316
- return ((_latestThreadMessageProps_latestThreadMessage = latestThreadMessageProps.latestThreadMessage) === null || _latestThreadMessageProps_latestThreadMessage === void 0 ? void 0 : (_latestThreadMessageProps_latestThreadMessage_metadata = _latestThreadMessageProps_latestThreadMessage.metadata) === null || _latestThreadMessageProps_latestThreadMessage_metadata === void 0 ? void 0 : _latestThreadMessageProps_latestThreadMessage_metadata.isBlocking) || isRunActiveProps.isRunActive;
3391
+ _latestMessageProps_latestMessage_metadata, _latestMessageProps_latestMessage;
3392
+ return ((_latestMessageProps_latestMessage = latestMessageProps.latestMessage) === null || _latestMessageProps_latestMessage === void 0 ? void 0 : (_latestMessageProps_latestMessage_metadata = _latestMessageProps_latestMessage.metadata) === null || _latestMessageProps_latestMessage_metadata === void 0 ? void 0 : _latestMessageProps_latestMessage_metadata.isBlocking) || isRunActiveProps.isRunActive;
3317
3393
  }, [
3318
- latestThreadMessageProps,
3394
+ latestMessageProps,
3319
3395
  isRunActiveProps
3320
3396
  ]);
3321
- if (latestThreadMessageProps.isLoading) return null;
3397
+ if (latestMessageProps.isLoading) return null;
3322
3398
  if (isDisabled) return null;
3323
- if (!latestThreadMessageProps.latestThreadMessage && emptyStateSuggestions.length > 0) {
3324
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_themes42.Flex, {
3399
+ if (!latestMessageProps.latestMessage && emptyStateSuggestions.length > 0) {
3400
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_themes44.Flex, {
3325
3401
  gap: "2",
3326
3402
  py: "2",
3327
3403
  wrap: "wrap",
3328
3404
  children: emptyStateSuggestions.map(function(suggestion) {
3329
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Suggestion, {
3405
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Suggestion, {
3330
3406
  suggestion: suggestion
3331
3407
  }, suggestion);
3332
3408
  })
3333
3409
  });
3334
3410
  }
3335
- if (latestThreadMessageProps.latestThreadMessage.role === "assistant") {
3336
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_themes42.Flex, {
3411
+ if (latestMessageProps.latestMessage.role === "assistant") {
3412
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_themes44.Flex, {
3337
3413
  gap: "2",
3338
3414
  py: "2",
3339
3415
  wrap: "wrap",
3340
3416
  children: suggestions.map(function(suggestion) {
3341
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Suggestion, {
3417
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Suggestion, {
3342
3418
  suggestion: suggestion
3343
3419
  }, suggestion);
3344
3420
  })
@@ -3347,9 +3423,9 @@ var Suggestions = function(param) {
3347
3423
  return null;
3348
3424
  };
3349
3425
  // src/hooks/markdown/useMarkdownContext/index.ts
3350
- var import_react39 = require("react");
3426
+ var import_react42 = require("react");
3351
3427
  var useMarkdownContext = function() {
3352
- return (0, import_react39.useContext)(MarkdownContext);
3428
+ return (0, import_react42.useContext)(MarkdownContext);
3353
3429
  };
3354
3430
  // Annotate the CommonJS export names for ESM import in node:
3355
3431
  0 && (module.exports = {
@@ -3365,19 +3441,17 @@ var useMarkdownContext = function() {
3365
3441
  SuperinterfaceProvider: SuperinterfaceProvider,
3366
3442
  Thread: Thread,
3367
3443
  ThreadDialog: ThreadDialog,
3368
- ThreadMessageForm: ThreadMessageForm,
3369
- ThreadMessages: ThreadMessages,
3370
- ThreadProvider: ThreadProvider,
3444
+ ThreadDialogContext: ThreadDialogContext,
3445
+ useCreateMessage: useCreateMessage,
3371
3446
  useCreateRun: useCreateRun,
3372
- useCreateThreadMessage: useCreateThreadMessage,
3373
3447
  useIsRunActive: useIsRunActive,
3448
+ useLatestMessage: useLatestMessage,
3374
3449
  useLatestRun: useLatestRun,
3375
- useLatestThreadMessage: useLatestThreadMessage,
3450
+ useLifecycle: useLifecycle,
3376
3451
  useMarkdownContext: useMarkdownContext,
3452
+ useMessages: useMessages,
3377
3453
  useRuns: useRuns,
3378
3454
  useSuperinterfaceContext: useSuperinterfaceContext,
3379
- useThreadContext: useThreadContext,
3380
- useThreadLifecycles: useThreadLifecycles,
3381
- useThreadMessages: useThreadMessages
3455
+ useThreadContext: useThreadContext
3382
3456
  });
3383
3457
  //# sourceMappingURL=index.cjs.map