@assistant-ui/react 0.5.82 → 0.5.84
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/{edge-8bY1SEQ-.d.mts → edge-B3YIacNl.d.mts} +1 -1
- package/dist/{edge-8bY1SEQ-.d.ts → edge-B3YIacNl.d.ts} +1 -1
- package/dist/index.d.mts +1723 -688
- package/dist/index.d.ts +1723 -688
- package/dist/index.js +571 -329
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +515 -273
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
@@ -86,6 +86,10 @@ var { useToolUIs, useToolUIsStore } = createContextStoreHook(
|
|
86
86
|
useAssistantContext,
|
87
87
|
"useToolUIs"
|
88
88
|
);
|
89
|
+
var { useThreadManager } = createContextStoreHook(
|
90
|
+
useAssistantContext,
|
91
|
+
"useThreadManager"
|
92
|
+
);
|
89
93
|
|
90
94
|
// src/context/stores/AssistantToolUIs.ts
|
91
95
|
import { create } from "zustand";
|
@@ -260,16 +264,29 @@ var useAssistantRuntimeStore2 = (runtime) => {
|
|
260
264
|
var useAssistantToolUIsStore = () => {
|
261
265
|
return useMemo2(() => makeAssistantToolUIsStore(), []);
|
262
266
|
};
|
267
|
+
var useThreadManagerStore = (runtime) => {
|
268
|
+
const [store] = useState3(
|
269
|
+
() => create4(() => runtime.threadManager.getState())
|
270
|
+
);
|
271
|
+
useEffect3(() => {
|
272
|
+
const updateState = () => writableStore(store).setState(runtime.threadManager.getState(), true);
|
273
|
+
updateState();
|
274
|
+
return runtime.threadManager.subscribe(updateState);
|
275
|
+
}, [runtime, store]);
|
276
|
+
return store;
|
277
|
+
};
|
263
278
|
var AssistantRuntimeProviderImpl = ({ children, runtime }) => {
|
264
279
|
const useAssistantRuntime2 = useAssistantRuntimeStore2(runtime);
|
265
280
|
const useToolUIs2 = useAssistantToolUIsStore();
|
281
|
+
const useThreadManager2 = useThreadManagerStore(runtime);
|
266
282
|
const context = useMemo2(() => {
|
267
283
|
return {
|
268
284
|
useToolUIs: useToolUIs2,
|
269
285
|
useAssistantRuntime: useAssistantRuntime2,
|
270
|
-
useAssistantActions: useAssistantRuntime2
|
286
|
+
useAssistantActions: useAssistantRuntime2,
|
287
|
+
useThreadManager: useThreadManager2
|
271
288
|
};
|
272
|
-
}, [useAssistantRuntime2, useToolUIs2]);
|
289
|
+
}, [useAssistantRuntime2, useToolUIs2, useThreadManager2]);
|
273
290
|
return /* @__PURE__ */ jsx2(AssistantContext.Provider, { value: context, children: /* @__PURE__ */ jsx2(ThreadRuntimeProvider, { runtime: runtime.thread, children }) });
|
274
291
|
};
|
275
292
|
var AssistantRuntimeProvider = memo(AssistantRuntimeProviderImpl);
|
@@ -448,22 +465,20 @@ import { useEffect as useEffect5 } from "react";
|
|
448
465
|
var useAssistantTool = (tool) => {
|
449
466
|
const assistantRuntime = useAssistantRuntime();
|
450
467
|
const toolUIsStore = useToolUIsStore();
|
468
|
+
useEffect5(() => {
|
469
|
+
return tool.render ? toolUIsStore.getState().setToolUI(tool.toolName, tool.render) : void 0;
|
470
|
+
}, [toolUIsStore, tool.toolName, tool.render]);
|
451
471
|
useEffect5(() => {
|
452
472
|
const { toolName, render, ...rest } = tool;
|
453
473
|
const config = {
|
454
474
|
tools: {
|
455
|
-
[
|
475
|
+
[toolName]: rest
|
456
476
|
}
|
457
477
|
};
|
458
|
-
|
478
|
+
return assistantRuntime.registerModelConfigProvider({
|
459
479
|
getModelConfig: () => config
|
460
480
|
});
|
461
|
-
|
462
|
-
return () => {
|
463
|
-
unsub1();
|
464
|
-
unsub2?.();
|
465
|
-
};
|
466
|
-
}, [assistantRuntime, toolUIsStore, tool]);
|
481
|
+
}, [assistantRuntime, tool]);
|
467
482
|
};
|
468
483
|
|
469
484
|
// src/model-config/makeAssistantTool.tsx
|
@@ -482,9 +497,8 @@ var useAssistantToolUI = (tool) => {
|
|
482
497
|
const toolUIsStore = useToolUIsStore();
|
483
498
|
useEffect6(() => {
|
484
499
|
if (!tool) return;
|
485
|
-
|
486
|
-
|
487
|
-
}, [toolUIsStore, tool]);
|
500
|
+
return toolUIsStore.getState().setToolUI(tool.toolName, tool.render);
|
501
|
+
}, [toolUIsStore, tool?.toolName, tool?.render]);
|
488
502
|
};
|
489
503
|
|
490
504
|
// src/model-config/makeAssistantToolUI.tsx
|
@@ -511,8 +525,22 @@ var useAssistantInstructions = (instruction) => {
|
|
511
525
|
}, [assistantRuntime, instruction]);
|
512
526
|
};
|
513
527
|
|
528
|
+
// src/model-config/useInlineRender.tsx
|
529
|
+
import { useCallback as useCallback3, useEffect as useEffect8, useState as useState5 } from "react";
|
530
|
+
import { create as create6 } from "zustand";
|
531
|
+
var useInlineRender = (toolUI) => {
|
532
|
+
const [useToolUI] = useState5(() => create6(() => toolUI));
|
533
|
+
useEffect8(() => {
|
534
|
+
useToolUI.setState(toolUI);
|
535
|
+
});
|
536
|
+
return useCallback3((args) => {
|
537
|
+
const toolUI2 = useToolUI();
|
538
|
+
return toolUI2(args);
|
539
|
+
}, []);
|
540
|
+
};
|
541
|
+
|
514
542
|
// src/primitive-hooks/actionBar/useActionBarCopy.tsx
|
515
|
-
import { useCallback as
|
543
|
+
import { useCallback as useCallback4 } from "react";
|
516
544
|
var useActionBarCopy = ({
|
517
545
|
copiedDuration = 3e3
|
518
546
|
} = {}) => {
|
@@ -522,7 +550,7 @@ var useActionBarCopy = ({
|
|
522
550
|
const hasCopyableContent = useMessage((message) => {
|
523
551
|
return (message.role !== "assistant" || message.status.type !== "running") && message.content.some((c) => c.type === "text" && c.text.length > 0);
|
524
552
|
});
|
525
|
-
const callback =
|
553
|
+
const callback = useCallback4(() => {
|
526
554
|
const { isEditing, text: composerValue } = composerRuntime.getState();
|
527
555
|
const valueToCopy = isEditing ? composerValue : messageRuntime.unstable_getCopyText();
|
528
556
|
navigator.clipboard.writeText(valueToCopy).then(() => {
|
@@ -535,11 +563,11 @@ var useActionBarCopy = ({
|
|
535
563
|
};
|
536
564
|
|
537
565
|
// src/primitive-hooks/actionBar/useActionBarEdit.tsx
|
538
|
-
import { useCallback as
|
566
|
+
import { useCallback as useCallback5 } from "react";
|
539
567
|
var useActionBarEdit = () => {
|
540
568
|
const messageRuntime = useMessageRuntime();
|
541
569
|
const disabled = useEditComposer((c) => c.isEditing);
|
542
|
-
const callback =
|
570
|
+
const callback = useCallback5(() => {
|
543
571
|
messageRuntime.composer.beginEdit();
|
544
572
|
}, [messageRuntime]);
|
545
573
|
if (disabled) return null;
|
@@ -547,7 +575,7 @@ var useActionBarEdit = () => {
|
|
547
575
|
};
|
548
576
|
|
549
577
|
// src/primitive-hooks/actionBar/useActionBarReload.tsx
|
550
|
-
import { useCallback as
|
578
|
+
import { useCallback as useCallback6 } from "react";
|
551
579
|
|
552
580
|
// src/utils/combined/useCombinedStore.ts
|
553
581
|
import { useMemo as useMemo4 } from "react";
|
@@ -583,7 +611,7 @@ var useActionBarReload = () => {
|
|
583
611
|
[threadRuntime, messageRuntime],
|
584
612
|
(t, m) => t.isRunning || t.isDisabled || m.role !== "assistant"
|
585
613
|
);
|
586
|
-
const callback =
|
614
|
+
const callback = useCallback6(() => {
|
587
615
|
messageRuntime.reload();
|
588
616
|
}, [messageRuntime]);
|
589
617
|
if (disabled) return null;
|
@@ -591,10 +619,10 @@ var useActionBarReload = () => {
|
|
591
619
|
};
|
592
620
|
|
593
621
|
// src/primitive-hooks/actionBar/useActionBarSpeak.tsx
|
594
|
-
import { useCallback as
|
622
|
+
import { useCallback as useCallback7 } from "react";
|
595
623
|
var useActionBarSpeak = () => {
|
596
624
|
const messageRunime = useMessageRuntime();
|
597
|
-
const callback =
|
625
|
+
const callback = useCallback7(async () => {
|
598
626
|
messageRunime.speak();
|
599
627
|
}, [messageRunime]);
|
600
628
|
const hasSpeakableContent = useMessage((m) => {
|
@@ -605,11 +633,11 @@ var useActionBarSpeak = () => {
|
|
605
633
|
};
|
606
634
|
|
607
635
|
// src/primitive-hooks/actionBar/useActionBarStopSpeaking.tsx
|
608
|
-
import { useCallback as
|
636
|
+
import { useCallback as useCallback8 } from "react";
|
609
637
|
var useActionBarStopSpeaking = () => {
|
610
638
|
const messageRuntime = useMessageRuntime();
|
611
639
|
const isSpeaking = useMessage((u) => u.speech != null);
|
612
|
-
const callback =
|
640
|
+
const callback = useCallback8(async () => {
|
613
641
|
messageRuntime.stopSpeaking();
|
614
642
|
}, [messageRuntime]);
|
615
643
|
if (!isSpeaking) return null;
|
@@ -617,20 +645,20 @@ var useActionBarStopSpeaking = () => {
|
|
617
645
|
};
|
618
646
|
|
619
647
|
// src/primitive-hooks/actionBar/useActionBarFeedbackPositive.tsx
|
620
|
-
import { useCallback as
|
648
|
+
import { useCallback as useCallback9 } from "react";
|
621
649
|
var useActionBarFeedbackPositive = () => {
|
622
650
|
const messageRuntime = useMessageRuntime();
|
623
|
-
const callback =
|
651
|
+
const callback = useCallback9(() => {
|
624
652
|
messageRuntime.submitFeedback({ type: "positive" });
|
625
653
|
}, [messageRuntime]);
|
626
654
|
return callback;
|
627
655
|
};
|
628
656
|
|
629
657
|
// src/primitive-hooks/actionBar/useActionBarFeedbackNegative.tsx
|
630
|
-
import { useCallback as
|
658
|
+
import { useCallback as useCallback10 } from "react";
|
631
659
|
var useActionBarFeedbackNegative = () => {
|
632
660
|
const messageRuntime = useMessageRuntime();
|
633
|
-
const callback =
|
661
|
+
const callback = useCallback10(() => {
|
634
662
|
messageRuntime.submitFeedback({ type: "negative" });
|
635
663
|
}, [messageRuntime]);
|
636
664
|
return callback;
|
@@ -643,11 +671,11 @@ var useBranchPickerCount = () => {
|
|
643
671
|
};
|
644
672
|
|
645
673
|
// src/primitive-hooks/branchPicker/useBranchPickerNext.tsx
|
646
|
-
import { useCallback as
|
674
|
+
import { useCallback as useCallback11 } from "react";
|
647
675
|
var useBranchPickerNext = () => {
|
648
676
|
const messageRuntime = useMessageRuntime();
|
649
677
|
const disabled = useMessage((m) => m.branchNumber >= m.branchCount);
|
650
|
-
const callback =
|
678
|
+
const callback = useCallback11(() => {
|
651
679
|
messageRuntime.switchToBranch({ position: "next" });
|
652
680
|
}, [messageRuntime]);
|
653
681
|
if (disabled) return null;
|
@@ -661,11 +689,11 @@ var useBranchPickerNumber = () => {
|
|
661
689
|
};
|
662
690
|
|
663
691
|
// src/primitive-hooks/branchPicker/useBranchPickerPrevious.tsx
|
664
|
-
import { useCallback as
|
692
|
+
import { useCallback as useCallback12 } from "react";
|
665
693
|
var useBranchPickerPrevious = () => {
|
666
694
|
const messageRuntime = useMessageRuntime();
|
667
695
|
const disabled = useMessage((m) => m.branchNumber <= 1);
|
668
|
-
const callback =
|
696
|
+
const callback = useCallback12(() => {
|
669
697
|
messageRuntime.switchToBranch({ position: "previous" });
|
670
698
|
}, [messageRuntime]);
|
671
699
|
if (disabled) return null;
|
@@ -673,11 +701,11 @@ var useBranchPickerPrevious = () => {
|
|
673
701
|
};
|
674
702
|
|
675
703
|
// src/primitive-hooks/composer/useComposerCancel.tsx
|
676
|
-
import { useCallback as
|
704
|
+
import { useCallback as useCallback13 } from "react";
|
677
705
|
var useComposerCancel = () => {
|
678
706
|
const composerRuntime = useComposerRuntime();
|
679
707
|
const disabled = useComposer((c) => !c.canCancel);
|
680
|
-
const callback =
|
708
|
+
const callback = useCallback13(() => {
|
681
709
|
composerRuntime.cancel();
|
682
710
|
}, [composerRuntime]);
|
683
711
|
if (disabled) return null;
|
@@ -694,7 +722,7 @@ var useComposerIf = (props) => {
|
|
694
722
|
};
|
695
723
|
|
696
724
|
// src/primitive-hooks/composer/useComposerSend.tsx
|
697
|
-
import { useCallback as
|
725
|
+
import { useCallback as useCallback14 } from "react";
|
698
726
|
var useComposerSend = () => {
|
699
727
|
const composerRuntime = useComposerRuntime();
|
700
728
|
const threadRuntime = useThreadRuntime();
|
@@ -702,7 +730,7 @@ var useComposerSend = () => {
|
|
702
730
|
[threadRuntime, composerRuntime],
|
703
731
|
(t, c) => t.isRunning || !c.isEditing || c.isEmpty
|
704
732
|
);
|
705
|
-
const callback =
|
733
|
+
const callback = useCallback14(() => {
|
706
734
|
if (!composerRuntime.getState().isEditing) return;
|
707
735
|
composerRuntime.send();
|
708
736
|
}, [threadRuntime]);
|
@@ -711,11 +739,11 @@ var useComposerSend = () => {
|
|
711
739
|
};
|
712
740
|
|
713
741
|
// src/primitive-hooks/composer/useComposerAddAttachment.tsx
|
714
|
-
import { useCallback as
|
742
|
+
import { useCallback as useCallback15 } from "react";
|
715
743
|
var useComposerAddAttachment = () => {
|
716
744
|
const disabled = useComposer((c) => !c.isEditing);
|
717
745
|
const composerRuntime = useComposerRuntime();
|
718
|
-
const callback =
|
746
|
+
const callback = useCallback15(() => {
|
719
747
|
const input = document.createElement("input");
|
720
748
|
input.type = "file";
|
721
749
|
const attachmentAccept = composerRuntime.getAttachmentAccept();
|
@@ -825,11 +853,11 @@ var useThreadEmpty = () => {
|
|
825
853
|
};
|
826
854
|
|
827
855
|
// src/primitive-hooks/thread/useThreadScrollToBottom.tsx
|
828
|
-
import { useCallback as
|
856
|
+
import { useCallback as useCallback16 } from "react";
|
829
857
|
var useThreadScrollToBottom = () => {
|
830
858
|
const isAtBottom = useThreadViewport((s) => s.isAtBottom);
|
831
859
|
const threadViewportStore = useThreadViewportStore();
|
832
|
-
const handleScrollToBottom =
|
860
|
+
const handleScrollToBottom = useCallback16(() => {
|
833
861
|
threadViewportStore.getState().scrollToBottom();
|
834
862
|
}, [threadViewportStore]);
|
835
863
|
if (isAtBottom) return null;
|
@@ -837,14 +865,14 @@ var useThreadScrollToBottom = () => {
|
|
837
865
|
};
|
838
866
|
|
839
867
|
// src/primitive-hooks/thread/useThreadSuggestion.tsx
|
840
|
-
import { useCallback as
|
868
|
+
import { useCallback as useCallback17 } from "react";
|
841
869
|
var useThreadSuggestion = ({
|
842
870
|
prompt,
|
843
871
|
autoSend
|
844
872
|
}) => {
|
845
873
|
const threadRuntime = useThreadRuntime();
|
846
874
|
const disabled = useThread((t) => t.isDisabled);
|
847
|
-
const callback =
|
875
|
+
const callback = useCallback17(() => {
|
848
876
|
if (autoSend && !threadRuntime.getState().isRunning) {
|
849
877
|
threadRuntime.append(prompt);
|
850
878
|
threadRuntime.composer.setText("");
|
@@ -1083,7 +1111,7 @@ __export(assistantModal_exports, {
|
|
1083
1111
|
});
|
1084
1112
|
|
1085
1113
|
// src/primitives/assistantModal/AssistantModalRoot.tsx
|
1086
|
-
import { useEffect as
|
1114
|
+
import { useEffect as useEffect9, useState as useState6 } from "react";
|
1087
1115
|
import * as PopoverPrimitive2 from "@radix-ui/react-popover";
|
1088
1116
|
import { composeEventHandlers as composeEventHandlers6 } from "@radix-ui/primitive";
|
1089
1117
|
|
@@ -1097,10 +1125,10 @@ var useAssistantModalOpenState = ({
|
|
1097
1125
|
defaultOpen = false,
|
1098
1126
|
unstable_openOnRunStart = true
|
1099
1127
|
}) => {
|
1100
|
-
const state =
|
1128
|
+
const state = useState6(defaultOpen);
|
1101
1129
|
const [, setOpen] = state;
|
1102
1130
|
const threadRuntime = useThreadRuntime();
|
1103
|
-
|
1131
|
+
useEffect9(() => {
|
1104
1132
|
if (!unstable_openOnRunStart) return void 0;
|
1105
1133
|
return threadRuntime.unstable_on("run-start", () => {
|
1106
1134
|
setOpen(true);
|
@@ -1294,10 +1322,10 @@ var AttachmentPrimitiveName = () => {
|
|
1294
1322
|
AttachmentPrimitiveName.displayName = "AttachmentPrimitive.Name";
|
1295
1323
|
|
1296
1324
|
// src/primitive-hooks/attachment/useAttachmentRemove.ts
|
1297
|
-
import { useCallback as
|
1325
|
+
import { useCallback as useCallback18 } from "react";
|
1298
1326
|
var useAttachmentRemove = () => {
|
1299
1327
|
const attachmentRuntime = useAttachmentRuntime();
|
1300
|
-
const handleRemoveAttachment =
|
1328
|
+
const handleRemoveAttachment = useCallback18(() => {
|
1301
1329
|
attachmentRuntime.remove();
|
1302
1330
|
}, [attachmentRuntime]);
|
1303
1331
|
return handleRemoveAttachment;
|
@@ -1365,14 +1393,14 @@ __export(message_exports, {
|
|
1365
1393
|
import { Primitive as Primitive9 } from "@radix-ui/react-primitive";
|
1366
1394
|
import {
|
1367
1395
|
forwardRef as forwardRef12,
|
1368
|
-
useCallback as
|
1396
|
+
useCallback as useCallback20
|
1369
1397
|
} from "react";
|
1370
1398
|
|
1371
1399
|
// src/utils/hooks/useManagedRef.ts
|
1372
|
-
import { useCallback as
|
1400
|
+
import { useCallback as useCallback19, useRef } from "react";
|
1373
1401
|
var useManagedRef = (callback) => {
|
1374
1402
|
const cleanupRef = useRef();
|
1375
|
-
const ref =
|
1403
|
+
const ref = useCallback19(
|
1376
1404
|
(el) => {
|
1377
1405
|
if (cleanupRef.current) {
|
1378
1406
|
cleanupRef.current();
|
@@ -1391,7 +1419,7 @@ import { useComposedRefs } from "@radix-ui/react-compose-refs";
|
|
1391
1419
|
import { jsx as jsx18 } from "react/jsx-runtime";
|
1392
1420
|
var useIsHoveringRef = () => {
|
1393
1421
|
const messageUtilsStore = useMessageUtilsStore();
|
1394
|
-
const callbackRef =
|
1422
|
+
const callbackRef = useCallback20(
|
1395
1423
|
(el) => {
|
1396
1424
|
const setIsHovering = messageUtilsStore.getState().setIsHovering;
|
1397
1425
|
const handleMouseEnter = () => {
|
@@ -1433,19 +1461,19 @@ MessagePrimitiveIf.displayName = "MessagePrimitive.If";
|
|
1433
1461
|
import { memo as memo2, useMemo as useMemo6 } from "react";
|
1434
1462
|
|
1435
1463
|
// src/context/providers/ContentPartRuntimeProvider.tsx
|
1436
|
-
import { useEffect as
|
1437
|
-
import { create as
|
1464
|
+
import { useEffect as useEffect10, useState as useState7 } from "react";
|
1465
|
+
import { create as create7 } from "zustand";
|
1438
1466
|
import { jsx as jsx19 } from "react/jsx-runtime";
|
1439
1467
|
var useContentPartRuntimeStore = (runtime) => {
|
1440
|
-
const [store] =
|
1441
|
-
|
1468
|
+
const [store] = useState7(() => create7(() => runtime));
|
1469
|
+
useEffect10(() => {
|
1442
1470
|
writableStore(store).setState(runtime, true);
|
1443
1471
|
}, [runtime, store]);
|
1444
1472
|
return store;
|
1445
1473
|
};
|
1446
1474
|
var useContentPartStore2 = (runtime) => {
|
1447
|
-
const [store] =
|
1448
|
-
|
1475
|
+
const [store] = useState7(() => create7(() => runtime.getState()));
|
1476
|
+
useEffect10(() => {
|
1449
1477
|
const updateState = () => writableStore(store).setState(runtime.getState(), true);
|
1450
1478
|
updateState();
|
1451
1479
|
return runtime.subscribe(updateState);
|
@@ -1458,7 +1486,7 @@ var ContentPartRuntimeProvider = ({
|
|
1458
1486
|
}) => {
|
1459
1487
|
const useContentPartRuntime2 = useContentPartRuntimeStore(runtime);
|
1460
1488
|
const useContentPart2 = useContentPartStore2(runtime);
|
1461
|
-
const [context] =
|
1489
|
+
const [context] = useState7(() => {
|
1462
1490
|
return { useContentPartRuntime: useContentPartRuntime2, useContentPart: useContentPart2 };
|
1463
1491
|
});
|
1464
1492
|
return /* @__PURE__ */ jsx19(ContentPartContext.Provider, { value: context, children });
|
@@ -1470,7 +1498,7 @@ import {
|
|
1470
1498
|
} from "react";
|
1471
1499
|
|
1472
1500
|
// src/utils/smooth/useSmooth.tsx
|
1473
|
-
import { useEffect as
|
1501
|
+
import { useEffect as useEffect11, useMemo as useMemo5, useRef as useRef2, useState as useState9 } from "react";
|
1474
1502
|
import { useCallbackRef } from "@radix-ui/react-use-callback-ref";
|
1475
1503
|
|
1476
1504
|
// src/utils/smooth/SmoothContext.tsx
|
@@ -1478,19 +1506,19 @@ import {
|
|
1478
1506
|
createContext as createContext6,
|
1479
1507
|
forwardRef as forwardRef13,
|
1480
1508
|
useContext as useContext3,
|
1481
|
-
useState as
|
1509
|
+
useState as useState8
|
1482
1510
|
} from "react";
|
1483
|
-
import { create as
|
1511
|
+
import { create as create8 } from "zustand";
|
1484
1512
|
import { jsx as jsx20 } from "react/jsx-runtime";
|
1485
1513
|
var SmoothContext = createContext6(null);
|
1486
1514
|
var makeSmoothContext = (initialState) => {
|
1487
|
-
const useSmoothStatus2 =
|
1515
|
+
const useSmoothStatus2 = create8(() => initialState);
|
1488
1516
|
return { useSmoothStatus: useSmoothStatus2 };
|
1489
1517
|
};
|
1490
1518
|
var SmoothContextProvider = ({ children }) => {
|
1491
1519
|
const outer = useSmoothContext({ optional: true });
|
1492
1520
|
const contentPartStore = useContentPartStore();
|
1493
|
-
const [context] =
|
1521
|
+
const [context] = useState8(
|
1494
1522
|
() => makeSmoothContext(contentPartStore.getState().status)
|
1495
1523
|
);
|
1496
1524
|
if (outer) return children;
|
@@ -1571,7 +1599,7 @@ var useSmooth = (state, smooth = false) => {
|
|
1571
1599
|
selector: (m) => m.id
|
1572
1600
|
});
|
1573
1601
|
const idRef = useRef2(id);
|
1574
|
-
const [displayedText, setDisplayedText] =
|
1602
|
+
const [displayedText, setDisplayedText] = useState9(text);
|
1575
1603
|
const smoothStatusStore = useSmoothStatusStore({ optional: true });
|
1576
1604
|
const setText = useCallbackRef((text2) => {
|
1577
1605
|
setDisplayedText(text2);
|
@@ -1581,17 +1609,17 @@ var useSmooth = (state, smooth = false) => {
|
|
1581
1609
|
);
|
1582
1610
|
}
|
1583
1611
|
});
|
1584
|
-
|
1612
|
+
useEffect11(() => {
|
1585
1613
|
if (smoothStatusStore) {
|
1586
1614
|
writableStore(smoothStatusStore).setState(
|
1587
1615
|
text !== state.text ? SMOOTH_STATUS : state.status
|
1588
1616
|
);
|
1589
1617
|
}
|
1590
1618
|
}, [smoothStatusStore, text, displayedText, state.status, state.text]);
|
1591
|
-
const [animatorRef] =
|
1619
|
+
const [animatorRef] = useState9(
|
1592
1620
|
new TextStreamAnimator(text, setText)
|
1593
1621
|
);
|
1594
|
-
|
1622
|
+
useEffect11(() => {
|
1595
1623
|
if (!smooth) {
|
1596
1624
|
animatorRef.stop();
|
1597
1625
|
return;
|
@@ -1607,7 +1635,7 @@ var useSmooth = (state, smooth = false) => {
|
|
1607
1635
|
animatorRef.targetText = text;
|
1608
1636
|
animatorRef.start();
|
1609
1637
|
}, [setText, animatorRef, id, smooth, text]);
|
1610
|
-
|
1638
|
+
useEffect11(() => {
|
1611
1639
|
return () => {
|
1612
1640
|
animatorRef.stop();
|
1613
1641
|
};
|
@@ -2374,22 +2402,22 @@ import { memo as memo3, useMemo as useMemo8 } from "react";
|
|
2374
2402
|
|
2375
2403
|
// src/context/providers/AttachmentRuntimeProvider.tsx
|
2376
2404
|
import {
|
2377
|
-
useEffect as
|
2405
|
+
useEffect as useEffect12,
|
2378
2406
|
useMemo as useMemo7,
|
2379
|
-
useState as
|
2407
|
+
useState as useState10
|
2380
2408
|
} from "react";
|
2381
|
-
import { create as
|
2409
|
+
import { create as create9 } from "zustand";
|
2382
2410
|
import { jsx as jsx24 } from "react/jsx-runtime";
|
2383
2411
|
var useAttachmentRuntimeStore = (runtime) => {
|
2384
|
-
const [store] =
|
2385
|
-
|
2412
|
+
const [store] = useState10(() => create9(() => runtime));
|
2413
|
+
useEffect12(() => {
|
2386
2414
|
writableStore(store).setState(runtime, true);
|
2387
2415
|
}, [runtime, store]);
|
2388
2416
|
return store;
|
2389
2417
|
};
|
2390
2418
|
var useAttachmentStore = (runtime) => {
|
2391
|
-
const [store] =
|
2392
|
-
|
2419
|
+
const [store] = useState10(() => create9(() => runtime.getState()));
|
2420
|
+
useEffect12(() => {
|
2393
2421
|
const updateState = () => writableStore(store).setState(runtime.getState(), true);
|
2394
2422
|
updateState();
|
2395
2423
|
return runtime.subscribe(updateState);
|
@@ -2514,8 +2542,8 @@ import { useComposedRefs as useComposedRefs2 } from "@radix-ui/react-compose-ref
|
|
2514
2542
|
import { Slot } from "@radix-ui/react-slot";
|
2515
2543
|
import {
|
2516
2544
|
forwardRef as forwardRef18,
|
2517
|
-
useCallback as
|
2518
|
-
useEffect as
|
2545
|
+
useCallback as useCallback21,
|
2546
|
+
useEffect as useEffect14,
|
2519
2547
|
useRef as useRef3
|
2520
2548
|
} from "react";
|
2521
2549
|
import TextareaAutosize from "react-textarea-autosize";
|
@@ -2523,11 +2551,11 @@ import { useEscapeKeydown as useEscapeKeydown2 } from "@radix-ui/react-use-escap
|
|
2523
2551
|
|
2524
2552
|
// src/utils/hooks/useOnScrollToBottom.tsx
|
2525
2553
|
import { useCallbackRef as useCallbackRef2 } from "@radix-ui/react-use-callback-ref";
|
2526
|
-
import { useEffect as
|
2554
|
+
import { useEffect as useEffect13 } from "react";
|
2527
2555
|
var useOnScrollToBottom = (callback) => {
|
2528
2556
|
const callbackRef = useCallbackRef2(callback);
|
2529
2557
|
const onScrollToBottom = useThreadViewport((vp) => vp.onScrollToBottom);
|
2530
|
-
|
2558
|
+
useEffect13(() => {
|
2531
2559
|
return onScrollToBottom(callbackRef);
|
2532
2560
|
}, [onScrollToBottom, callbackRef]);
|
2533
2561
|
};
|
@@ -2577,7 +2605,7 @@ var ComposerPrimitiveInput = forwardRef18(
|
|
2577
2605
|
}
|
2578
2606
|
};
|
2579
2607
|
const autoFocusEnabled = autoFocus && !isDisabled;
|
2580
|
-
const focus2 =
|
2608
|
+
const focus2 = useCallback21(() => {
|
2581
2609
|
const textarea = textareaRef.current;
|
2582
2610
|
if (!textarea || !autoFocusEnabled) return;
|
2583
2611
|
textarea.focus({ preventScroll: true });
|
@@ -2586,18 +2614,18 @@ var ComposerPrimitiveInput = forwardRef18(
|
|
2586
2614
|
textareaRef.current.value.length
|
2587
2615
|
);
|
2588
2616
|
}, [autoFocusEnabled]);
|
2589
|
-
|
2617
|
+
useEffect14(() => focus2(), [focus2]);
|
2590
2618
|
useOnScrollToBottom(() => {
|
2591
2619
|
if (composerRuntime.type === "thread" && unstable_focusOnScrollToBottom) {
|
2592
2620
|
focus2();
|
2593
2621
|
}
|
2594
2622
|
});
|
2595
|
-
|
2623
|
+
useEffect14(() => {
|
2596
2624
|
if (composerRuntime.type !== "thread" || !unstable_focusOnRunStart)
|
2597
2625
|
return void 0;
|
2598
2626
|
return threadRuntime.unstable_on("run-start", focus2);
|
2599
2627
|
}, [unstable_focusOnRunStart]);
|
2600
|
-
|
2628
|
+
useEffect14(() => {
|
2601
2629
|
if (composerRuntime.type !== "thread" || !unstable_focusOnThreadSwitched)
|
2602
2630
|
return void 0;
|
2603
2631
|
return threadRuntime.unstable_on("switched-to", focus2);
|
@@ -2754,14 +2782,14 @@ import { forwardRef as forwardRef20 } from "react";
|
|
2754
2782
|
|
2755
2783
|
// src/primitive-hooks/thread/useThreadViewportAutoScroll.tsx
|
2756
2784
|
import { useComposedRefs as useComposedRefs3 } from "@radix-ui/react-compose-refs";
|
2757
|
-
import { useEffect as
|
2785
|
+
import { useEffect as useEffect15, useRef as useRef4 } from "react";
|
2758
2786
|
|
2759
2787
|
// src/utils/hooks/useOnResizeContent.tsx
|
2760
2788
|
import { useCallbackRef as useCallbackRef3 } from "@radix-ui/react-use-callback-ref";
|
2761
|
-
import { useCallback as
|
2789
|
+
import { useCallback as useCallback22 } from "react";
|
2762
2790
|
var useOnResizeContent = (callback) => {
|
2763
2791
|
const callbackRef = useCallbackRef3(callback);
|
2764
|
-
const refCallback =
|
2792
|
+
const refCallback = useCallback22(
|
2765
2793
|
(el) => {
|
2766
2794
|
const resizeObserver = new ResizeObserver(() => {
|
2767
2795
|
callbackRef();
|
@@ -2846,7 +2874,7 @@ var useThreadViewportAutoScroll = ({
|
|
2846
2874
|
scrollToBottom("auto");
|
2847
2875
|
});
|
2848
2876
|
const threadRuntime = useThreadRuntime();
|
2849
|
-
|
2877
|
+
useEffect15(() => {
|
2850
2878
|
if (!unstable_scrollToBottomOnRunStart) return void 0;
|
2851
2879
|
return threadRuntime.unstable_on("run-start", focus);
|
2852
2880
|
}, [unstable_scrollToBottomOnRunStart]);
|
@@ -2868,12 +2896,12 @@ ThreadPrimitiveViewport.displayName = "ThreadPrimitive.Viewport";
|
|
2868
2896
|
import { memo as memo5, useMemo as useMemo10 } from "react";
|
2869
2897
|
|
2870
2898
|
// src/context/providers/MessageRuntimeProvider.tsx
|
2871
|
-
import { useEffect as
|
2872
|
-
import { create as
|
2899
|
+
import { useEffect as useEffect16, useState as useState11 } from "react";
|
2900
|
+
import { create as create11 } from "zustand";
|
2873
2901
|
|
2874
2902
|
// src/context/stores/MessageUtils.ts
|
2875
|
-
import { create as
|
2876
|
-
var makeMessageUtilsStore = () =>
|
2903
|
+
import { create as create10 } from "zustand";
|
2904
|
+
var makeMessageUtilsStore = () => create10((set) => {
|
2877
2905
|
return {
|
2878
2906
|
isCopied: false,
|
2879
2907
|
setIsCopied: (value) => {
|
@@ -2889,15 +2917,15 @@ var makeMessageUtilsStore = () => create9((set) => {
|
|
2889
2917
|
// src/context/providers/MessageRuntimeProvider.tsx
|
2890
2918
|
import { jsx as jsx32 } from "react/jsx-runtime";
|
2891
2919
|
var useMessageRuntimeStore = (runtime) => {
|
2892
|
-
const [store] =
|
2893
|
-
|
2920
|
+
const [store] = useState11(() => create11(() => runtime));
|
2921
|
+
useEffect16(() => {
|
2894
2922
|
writableStore(store).setState(runtime, true);
|
2895
2923
|
}, [runtime, store]);
|
2896
2924
|
return store;
|
2897
2925
|
};
|
2898
2926
|
var useMessageStore2 = (runtime) => {
|
2899
|
-
const [store] =
|
2900
|
-
|
2927
|
+
const [store] = useState11(() => create11(() => runtime.getState()));
|
2928
|
+
useEffect16(() => {
|
2901
2929
|
const updateState = () => writableStore(store).setState(runtime.getState(), true);
|
2902
2930
|
updateState();
|
2903
2931
|
return runtime.subscribe(updateState);
|
@@ -2905,13 +2933,13 @@ var useMessageStore2 = (runtime) => {
|
|
2905
2933
|
return store;
|
2906
2934
|
};
|
2907
2935
|
var useMessageUtilsStore2 = () => {
|
2908
|
-
const [store] =
|
2936
|
+
const [store] = useState11(() => makeMessageUtilsStore());
|
2909
2937
|
return store;
|
2910
2938
|
};
|
2911
2939
|
var useEditComposerStore2 = (useMessageRuntime2) => {
|
2912
2940
|
const runtime = useMessageRuntime2.getState().composer;
|
2913
|
-
const [store] =
|
2914
|
-
|
2941
|
+
const [store] = useState11(() => create11(() => runtime.getState()));
|
2942
|
+
useEffect16(() => {
|
2915
2943
|
const updateState = () => writableStore(store).setState(runtime.getState());
|
2916
2944
|
updateState();
|
2917
2945
|
return runtime.subscribe(updateState);
|
@@ -2926,7 +2954,7 @@ var MessageRuntimeProvider = ({
|
|
2926
2954
|
const useMessage2 = useMessageStore2(runtime);
|
2927
2955
|
const useMessageUtils2 = useMessageUtilsStore2();
|
2928
2956
|
const useEditComposer2 = useEditComposerStore2(useMessageRuntime2);
|
2929
|
-
const [context] =
|
2957
|
+
const [context] = useState11(() => {
|
2930
2958
|
return { useMessageRuntime: useMessageRuntime2, useMessage: useMessage2, useMessageUtils: useMessageUtils2, useEditComposer: useEditComposer2 };
|
2931
2959
|
});
|
2932
2960
|
return /* @__PURE__ */ jsx32(MessageContext.Provider, { value: context, children });
|
@@ -3018,13 +3046,13 @@ var subscribeToMainThread = (runtime, callback) => {
|
|
3018
3046
|
let cleanup;
|
3019
3047
|
const inner = () => {
|
3020
3048
|
cleanup?.();
|
3021
|
-
cleanup = runtime.
|
3049
|
+
cleanup = runtime.threadManager.mainThread.subscribe(callback);
|
3022
3050
|
if (!first) {
|
3023
3051
|
callback();
|
3024
3052
|
}
|
3025
3053
|
first = false;
|
3026
3054
|
};
|
3027
|
-
const unsubscribe = runtime.subscribe(inner);
|
3055
|
+
const unsubscribe = runtime.threadManager.mainThread.subscribe(inner);
|
3028
3056
|
inner();
|
3029
3057
|
return () => {
|
3030
3058
|
unsubscribe();
|
@@ -3033,29 +3061,44 @@ var subscribeToMainThread = (runtime, callback) => {
|
|
3033
3061
|
};
|
3034
3062
|
|
3035
3063
|
// src/runtimes/local/useLocalRuntime.tsx
|
3036
|
-
import {
|
3064
|
+
import { useEffect as useEffect17, useMemo as useMemo11, useState as useState13 } from "react";
|
3037
3065
|
|
3038
|
-
// src/
|
3039
|
-
var
|
3040
|
-
|
3041
|
-
|
3042
|
-
this.
|
3066
|
+
// src/utils/ProxyConfigProvider.ts
|
3067
|
+
var ProxyConfigProvider = class {
|
3068
|
+
_providers = /* @__PURE__ */ new Set();
|
3069
|
+
getModelConfig() {
|
3070
|
+
return mergeModelConfigs(this._providers);
|
3043
3071
|
}
|
3044
|
-
|
3045
|
-
|
3072
|
+
registerModelConfigProvider(provider) {
|
3073
|
+
this._providers.add(provider);
|
3074
|
+
const unsubscribe = provider.subscribe?.(() => {
|
3075
|
+
this.notifySubscribers();
|
3076
|
+
});
|
3077
|
+
this.notifySubscribers();
|
3078
|
+
return () => {
|
3079
|
+
this._providers.delete(provider);
|
3080
|
+
unsubscribe?.();
|
3081
|
+
this.notifySubscribers();
|
3082
|
+
};
|
3046
3083
|
}
|
3047
|
-
|
3048
|
-
|
3049
|
-
this.
|
3084
|
+
_subscribers = /* @__PURE__ */ new Set();
|
3085
|
+
notifySubscribers() {
|
3086
|
+
for (const callback of this._subscribers) callback();
|
3050
3087
|
}
|
3051
|
-
_subscriptions = /* @__PURE__ */ new Set();
|
3052
3088
|
subscribe(callback) {
|
3053
|
-
this.
|
3054
|
-
return () => this.
|
3089
|
+
this._subscribers.add(callback);
|
3090
|
+
return () => this._subscribers.delete(callback);
|
3091
|
+
}
|
3092
|
+
};
|
3093
|
+
|
3094
|
+
// src/runtimes/core/BaseAssistantRuntimeCore.tsx
|
3095
|
+
var BaseAssistantRuntimeCore = class {
|
3096
|
+
_proxyConfigProvider = new ProxyConfigProvider();
|
3097
|
+
constructor() {
|
3098
|
+
}
|
3099
|
+
registerModelConfigProvider(provider) {
|
3100
|
+
return this._proxyConfigProvider.registerModelConfigProvider(provider);
|
3055
3101
|
}
|
3056
|
-
subscriptionHandler = () => {
|
3057
|
-
for (const callback of this._subscriptions) callback();
|
3058
|
-
};
|
3059
3102
|
};
|
3060
3103
|
|
3061
3104
|
// src/internal.ts
|
@@ -3191,34 +3234,6 @@ var DefaultThreadComposerRuntimeCore = class extends BaseComposerRuntimeCore {
|
|
3191
3234
|
}
|
3192
3235
|
};
|
3193
3236
|
|
3194
|
-
// src/utils/ProxyConfigProvider.ts
|
3195
|
-
var ProxyConfigProvider = class {
|
3196
|
-
_providers = /* @__PURE__ */ new Set();
|
3197
|
-
getModelConfig() {
|
3198
|
-
return mergeModelConfigs(this._providers);
|
3199
|
-
}
|
3200
|
-
registerModelConfigProvider(provider) {
|
3201
|
-
this._providers.add(provider);
|
3202
|
-
const unsubscribe = provider.subscribe?.(() => {
|
3203
|
-
this.notifySubscribers();
|
3204
|
-
});
|
3205
|
-
this.notifySubscribers();
|
3206
|
-
return () => {
|
3207
|
-
this._providers.delete(provider);
|
3208
|
-
unsubscribe?.();
|
3209
|
-
this.notifySubscribers();
|
3210
|
-
};
|
3211
|
-
}
|
3212
|
-
_subscribers = /* @__PURE__ */ new Set();
|
3213
|
-
notifySubscribers() {
|
3214
|
-
for (const callback of this._subscribers) callback();
|
3215
|
-
}
|
3216
|
-
subscribe(callback) {
|
3217
|
-
this._subscribers.add(callback);
|
3218
|
-
return () => this._subscribers.delete(callback);
|
3219
|
-
}
|
3220
|
-
};
|
3221
|
-
|
3222
3237
|
// src/utils/idUtils.tsx
|
3223
3238
|
import { customAlphabet } from "nanoid/non-secure";
|
3224
3239
|
var generateId = customAlphabet(
|
@@ -3828,20 +3843,67 @@ var ThreadRuntimeImpl = class {
|
|
3828
3843
|
}
|
3829
3844
|
};
|
3830
3845
|
|
3846
|
+
// src/api/ThreadManagerRuntime.ts
|
3847
|
+
var getThreadManagerState = (threadManager) => {
|
3848
|
+
return {
|
3849
|
+
threads: threadManager.threads,
|
3850
|
+
archivedThreads: threadManager.archivedThreads
|
3851
|
+
};
|
3852
|
+
};
|
3853
|
+
var THREAD_MANAGER_PATH = {
|
3854
|
+
ref: "threadManager"
|
3855
|
+
};
|
3856
|
+
var ThreadManagerRuntimeImpl = class {
|
3857
|
+
constructor(_core) {
|
3858
|
+
this._core = _core;
|
3859
|
+
const stateBinding = new LazyMemoizeSubject({
|
3860
|
+
path: THREAD_MANAGER_PATH,
|
3861
|
+
getState: () => getThreadManagerState(_core),
|
3862
|
+
subscribe: (callback) => _core.subscribe(callback)
|
3863
|
+
});
|
3864
|
+
this._getState = stateBinding.getState.bind(stateBinding);
|
3865
|
+
}
|
3866
|
+
get path() {
|
3867
|
+
return THREAD_MANAGER_PATH;
|
3868
|
+
}
|
3869
|
+
_getState;
|
3870
|
+
getState() {
|
3871
|
+
return this._getState();
|
3872
|
+
}
|
3873
|
+
rename(threadId, newTitle) {
|
3874
|
+
return this._core.rename(threadId, newTitle);
|
3875
|
+
}
|
3876
|
+
archive(threadId) {
|
3877
|
+
return this._core.archive(threadId);
|
3878
|
+
}
|
3879
|
+
unarchive(threadId) {
|
3880
|
+
return this._core.unarchive(threadId);
|
3881
|
+
}
|
3882
|
+
delete(threadId) {
|
3883
|
+
return this._core.delete(threadId);
|
3884
|
+
}
|
3885
|
+
subscribe(callback) {
|
3886
|
+
return this._core.subscribe(callback);
|
3887
|
+
}
|
3888
|
+
};
|
3889
|
+
|
3831
3890
|
// src/api/AssistantRuntime.ts
|
3832
3891
|
var AssistantRuntimeImpl = class _AssistantRuntimeImpl {
|
3833
3892
|
constructor(_core, _thread) {
|
3834
3893
|
this._core = _core;
|
3835
3894
|
this._thread = _thread;
|
3895
|
+
this.threadManager = new ThreadManagerRuntimeImpl(_core.threadManager);
|
3836
3896
|
}
|
3897
|
+
threadManager;
|
3837
3898
|
get thread() {
|
3838
3899
|
return this._thread;
|
3839
3900
|
}
|
3840
3901
|
switchToNewThread() {
|
3841
|
-
return this._core.switchToNewThread();
|
3902
|
+
return this._core.threadManager.switchToNewThread();
|
3842
3903
|
}
|
3843
3904
|
switchToThread(threadId) {
|
3844
|
-
return this.
|
3905
|
+
if (threadId === null) return this.switchToNewThread();
|
3906
|
+
return this._core.threadManager.switchToThread(threadId);
|
3845
3907
|
}
|
3846
3908
|
registerModelConfigProvider(provider) {
|
3847
3909
|
return this._core.registerModelConfigProvider(provider);
|
@@ -3849,8 +3911,9 @@ var AssistantRuntimeImpl = class _AssistantRuntimeImpl {
|
|
3849
3911
|
/**
|
3850
3912
|
* @deprecated Thread is now static and never gets updated. This will be removed in 0.6.0.
|
3851
3913
|
*/
|
3852
|
-
subscribe(
|
3853
|
-
return
|
3914
|
+
subscribe() {
|
3915
|
+
return () => {
|
3916
|
+
};
|
3854
3917
|
}
|
3855
3918
|
static createMainThreadRuntime(_core, CustomThreadRuntime = ThreadRuntimeImpl) {
|
3856
3919
|
return new CustomThreadRuntime(
|
@@ -3859,8 +3922,8 @@ var AssistantRuntimeImpl = class _AssistantRuntimeImpl {
|
|
3859
3922
|
ref: "threads.main",
|
3860
3923
|
threadSelector: { type: "main" }
|
3861
3924
|
},
|
3862
|
-
getState: () => _core.
|
3863
|
-
subscribe: (callback) => _core.subscribe(callback)
|
3925
|
+
getState: () => _core.threadManager.mainThread,
|
3926
|
+
subscribe: (callback) => _core.threadManager.subscribe(callback)
|
3864
3927
|
})
|
3865
3928
|
);
|
3866
3929
|
}
|
@@ -4039,7 +4102,7 @@ var streamUtils = {
|
|
4039
4102
|
};
|
4040
4103
|
|
4041
4104
|
// src/runtimes/edge/useEdgeRuntime.ts
|
4042
|
-
import { useState as
|
4105
|
+
import { useState as useState12 } from "react";
|
4043
4106
|
|
4044
4107
|
// src/runtimes/edge/streams/assistantDecoderStream.ts
|
4045
4108
|
function assistantDecoderStream() {
|
@@ -4220,7 +4283,7 @@ var splitLocalRuntimeOptions = (options) => {
|
|
4220
4283
|
// src/runtimes/edge/useEdgeRuntime.ts
|
4221
4284
|
var useEdgeRuntime = (options) => {
|
4222
4285
|
const { localRuntimeOptions, otherOptions } = splitLocalRuntimeOptions(options);
|
4223
|
-
const [adapter] =
|
4286
|
+
const [adapter] = useState12(() => new EdgeChatAdapter(otherOptions));
|
4224
4287
|
return useLocalRuntime(adapter, localRuntimeOptions);
|
4225
4288
|
};
|
4226
4289
|
|
@@ -4272,9 +4335,6 @@ var DefaultEditComposerRuntimeCore = class extends BaseComposerRuntimeCore {
|
|
4272
4335
|
var BaseThreadRuntimeCore = class {
|
4273
4336
|
constructor(configProvider) {
|
4274
4337
|
this.configProvider = configProvider;
|
4275
|
-
this.configProvider.subscribe?.(() => {
|
4276
|
-
this._notifyEventSubscribers("model-config-update");
|
4277
|
-
});
|
4278
4338
|
}
|
4279
4339
|
_subscriptions = /* @__PURE__ */ new Set();
|
4280
4340
|
repository = new MessageRepository();
|
@@ -4376,6 +4436,10 @@ var BaseThreadRuntimeCore = class {
|
|
4376
4436
|
}
|
4377
4437
|
_eventSubscribers = /* @__PURE__ */ new Map();
|
4378
4438
|
unstable_on(event, callback) {
|
4439
|
+
if (event === "model-config-update") {
|
4440
|
+
return this.configProvider.subscribe?.(callback) ?? (() => {
|
4441
|
+
});
|
4442
|
+
}
|
4379
4443
|
const subscribers = this._eventSubscribers.get(event);
|
4380
4444
|
if (!subscribers) {
|
4381
4445
|
this._eventSubscribers.set(event, /* @__PURE__ */ new Set([callback]));
|
@@ -4391,19 +4455,10 @@ var BaseThreadRuntimeCore = class {
|
|
4391
4455
|
|
4392
4456
|
// src/runtimes/local/LocalThreadRuntimeCore.tsx
|
4393
4457
|
var LocalThreadRuntimeCore = class extends BaseThreadRuntimeCore {
|
4394
|
-
constructor(configProvider,
|
4458
|
+
constructor(configProvider, threadId, options) {
|
4395
4459
|
super(configProvider);
|
4396
|
-
this.
|
4397
|
-
this.
|
4398
|
-
this.options = options;
|
4399
|
-
if (initialMessages) {
|
4400
|
-
let parentId = null;
|
4401
|
-
const messages2 = fromCoreMessages(initialMessages);
|
4402
|
-
for (const message of messages2) {
|
4403
|
-
this.repository.addOrUpdateMessage(parentId, message);
|
4404
|
-
parentId = message.id;
|
4405
|
-
}
|
4406
|
-
}
|
4460
|
+
this.threadId = threadId;
|
4461
|
+
this._options = options;
|
4407
4462
|
}
|
4408
4463
|
capabilities = {
|
4409
4464
|
switchToBranch: true,
|
@@ -4416,20 +4471,17 @@ var LocalThreadRuntimeCore = class extends BaseThreadRuntimeCore {
|
|
4416
4471
|
feedback: false
|
4417
4472
|
};
|
4418
4473
|
abortController = null;
|
4419
|
-
threadId;
|
4420
4474
|
isDisabled = false;
|
4421
4475
|
suggestions = [];
|
4422
4476
|
get adapters() {
|
4423
|
-
return this.
|
4477
|
+
return this._options.adapters;
|
4424
4478
|
}
|
4425
4479
|
_options;
|
4426
|
-
get options() {
|
4427
|
-
return this._options;
|
4428
|
-
}
|
4429
4480
|
get extras() {
|
4430
4481
|
return void 0;
|
4431
4482
|
}
|
4432
|
-
|
4483
|
+
setOptions(options) {
|
4484
|
+
if (this._options === options) return;
|
4433
4485
|
this._options = options;
|
4434
4486
|
let hasUpdates = false;
|
4435
4487
|
const canSpeak = options.adapters?.speech !== void 0;
|
@@ -4505,7 +4557,7 @@ var LocalThreadRuntimeCore = class extends BaseThreadRuntimeCore {
|
|
4505
4557
|
this.repository.addOrUpdateMessage(parentId, message);
|
4506
4558
|
this._notifySubscribers();
|
4507
4559
|
};
|
4508
|
-
const maxSteps = this.
|
4560
|
+
const maxSteps = this._options.maxSteps ? this._options.maxSteps : (this._options.maxToolRoundtrips ?? 1) + 1;
|
4509
4561
|
const steps = message.metadata?.steps?.length ?? 0;
|
4510
4562
|
if (steps >= maxSteps) {
|
4511
4563
|
updateMessage({
|
@@ -4523,7 +4575,7 @@ var LocalThreadRuntimeCore = class extends BaseThreadRuntimeCore {
|
|
4523
4575
|
});
|
4524
4576
|
}
|
4525
4577
|
try {
|
4526
|
-
const promiseOrGenerator = this.
|
4578
|
+
const promiseOrGenerator = this.adapters.chatModel.run({
|
4527
4579
|
messages: messages2,
|
4528
4580
|
abortSignal: this.abortController.signal,
|
4529
4581
|
config: this.getModelConfig(),
|
@@ -4596,44 +4648,154 @@ var LocalThreadRuntimeCore = class extends BaseThreadRuntimeCore {
|
|
4596
4648
|
}
|
4597
4649
|
};
|
4598
4650
|
|
4599
|
-
// src/runtimes/local/
|
4600
|
-
var
|
4601
|
-
|
4602
|
-
|
4603
|
-
|
4604
|
-
super(new LocalThreadRuntimeCore(proxyConfigProvider, adapter, options));
|
4605
|
-
this._proxyConfigProvider = proxyConfigProvider;
|
4651
|
+
// src/runtimes/local/LocalThreadManagerRuntimeCore.tsx
|
4652
|
+
var LocalThreadManagerRuntimeCore = class {
|
4653
|
+
constructor(_threadFactory) {
|
4654
|
+
this._threadFactory = _threadFactory;
|
4655
|
+
this._mainThread = this._threadFactory(generateId(), { messages: [] });
|
4606
4656
|
}
|
4607
|
-
|
4608
|
-
|
4657
|
+
_threadData = /* @__PURE__ */ new Map();
|
4658
|
+
_threads = [];
|
4659
|
+
_archivedThreads = [];
|
4660
|
+
get threads() {
|
4661
|
+
return this._threads;
|
4609
4662
|
}
|
4610
|
-
|
4611
|
-
|
4612
|
-
|
4613
|
-
|
4614
|
-
|
4615
|
-
|
4616
|
-
);
|
4617
|
-
this.thread._notifyEventSubscribers("switched-to");
|
4663
|
+
get archivedThreads() {
|
4664
|
+
return this._archivedThreads;
|
4665
|
+
}
|
4666
|
+
_mainThread;
|
4667
|
+
get mainThread() {
|
4668
|
+
return this._mainThread;
|
4618
4669
|
}
|
4619
4670
|
switchToThread(threadId) {
|
4620
|
-
if (threadId
|
4621
|
-
|
4671
|
+
if (this._mainThread.threadId === threadId) return;
|
4672
|
+
const data = this._threadData.get(threadId);
|
4673
|
+
if (!data) throw new Error("Thread not found");
|
4674
|
+
const thread = this._threadFactory(threadId, data.data);
|
4675
|
+
this._performThreadSwitch(thread);
|
4676
|
+
}
|
4677
|
+
switchToNewThread() {
|
4678
|
+
if (!this._mainThread) return;
|
4679
|
+
const thread = this._threadFactory(generateId(), { messages: [] });
|
4680
|
+
this._performThreadSwitch(thread);
|
4681
|
+
}
|
4682
|
+
_performThreadSwitch(newThreadCore) {
|
4683
|
+
if (this._mainThread) {
|
4684
|
+
const data = this._threadData.get(this._mainThread.threadId);
|
4685
|
+
if (!data) throw new Error("Thread not found");
|
4686
|
+
const exprt = this._mainThread.export();
|
4687
|
+
data.data = exprt;
|
4622
4688
|
}
|
4623
|
-
this.
|
4689
|
+
this._mainThread._notifyEventSubscribers("switched-away");
|
4690
|
+
this._mainThread = newThreadCore;
|
4691
|
+
newThreadCore._notifyEventSubscribers("switched-to");
|
4692
|
+
this._notifySubscribers();
|
4693
|
+
}
|
4694
|
+
_performMoveOp(threadId, operation) {
|
4695
|
+
const data = this._threadData.get(threadId);
|
4696
|
+
if (!data) throw new Error("Thread not found");
|
4697
|
+
if (operation === "archive" && data.isArchived) return;
|
4698
|
+
if (operation === "unarchive" && !data.isArchived) return;
|
4699
|
+
if (operation === "archive") {
|
4700
|
+
data.isArchived = true;
|
4701
|
+
this._archivedThreads = [...this._archivedThreads, data.metadata];
|
4702
|
+
}
|
4703
|
+
if (operation === "unarchive") {
|
4704
|
+
data.isArchived = false;
|
4705
|
+
this._threads = [...this._threads, data.metadata];
|
4706
|
+
}
|
4707
|
+
if (operation === "delete") {
|
4708
|
+
this._threadData.delete(threadId);
|
4709
|
+
}
|
4710
|
+
if (operation === "archive" || operation === "delete" && data.isArchived) {
|
4711
|
+
this._archivedThreads = this._archivedThreads.filter(
|
4712
|
+
(t) => t.threadId !== threadId
|
4713
|
+
);
|
4714
|
+
}
|
4715
|
+
if (operation === "unarchive" || operation === "delete" && !data.isArchived) {
|
4716
|
+
this._threads = this._threads.filter((t) => t.threadId !== threadId);
|
4717
|
+
}
|
4718
|
+
this._notifySubscribers();
|
4719
|
+
}
|
4720
|
+
async rename(threadId, newTitle) {
|
4721
|
+
const data = this._threadData.get(threadId);
|
4722
|
+
if (!data) throw new Error("Thread not found");
|
4723
|
+
data.metadata = {
|
4724
|
+
...data.metadata,
|
4725
|
+
title: newTitle
|
4726
|
+
};
|
4727
|
+
const threadList = data.isArchived ? this.archivedThreads : this.threads;
|
4728
|
+
const idx = threadList.findIndex((t) => t.threadId === threadId);
|
4729
|
+
const updatedThreadList = threadList.toSpliced(idx, 1, data.metadata);
|
4730
|
+
if (data.isArchived) {
|
4731
|
+
this._archivedThreads = updatedThreadList;
|
4732
|
+
} else {
|
4733
|
+
this._threads = updatedThreadList;
|
4734
|
+
}
|
4735
|
+
this._notifySubscribers();
|
4736
|
+
}
|
4737
|
+
async archive(threadId) {
|
4738
|
+
this._performMoveOp(threadId, "archive");
|
4739
|
+
}
|
4740
|
+
async unarchive(threadId) {
|
4741
|
+
this._performMoveOp(threadId, "unarchive");
|
4742
|
+
}
|
4743
|
+
async delete(threadId) {
|
4744
|
+
this._performMoveOp(threadId, "delete");
|
4745
|
+
}
|
4746
|
+
_subscriptions = /* @__PURE__ */ new Set();
|
4747
|
+
subscribe(callback) {
|
4748
|
+
this._subscriptions.add(callback);
|
4749
|
+
return () => this._subscriptions.delete(callback);
|
4750
|
+
}
|
4751
|
+
_notifySubscribers() {
|
4752
|
+
for (const callback of this._subscriptions) callback();
|
4753
|
+
}
|
4754
|
+
};
|
4755
|
+
|
4756
|
+
// src/runtimes/local/LocalRuntimeCore.tsx
|
4757
|
+
var getExportFromInitialMessages = (initialMessages) => {
|
4758
|
+
const messages2 = fromCoreMessages(initialMessages);
|
4759
|
+
return {
|
4760
|
+
messages: messages2.map((m, idx) => ({
|
4761
|
+
parentId: messages2[idx - 1]?.id ?? null,
|
4762
|
+
message: m
|
4763
|
+
}))
|
4764
|
+
};
|
4765
|
+
};
|
4766
|
+
var LocalRuntimeCore = class extends BaseAssistantRuntimeCore {
|
4767
|
+
threadManager;
|
4768
|
+
_options;
|
4769
|
+
constructor(options, initialMessages) {
|
4770
|
+
super();
|
4771
|
+
this._options = options;
|
4772
|
+
this.threadManager = new LocalThreadManagerRuntimeCore((threadId, data) => {
|
4773
|
+
const thread = new LocalThreadRuntimeCore(
|
4774
|
+
this._proxyConfigProvider,
|
4775
|
+
threadId,
|
4776
|
+
this._options
|
4777
|
+
);
|
4778
|
+
thread.import(data);
|
4779
|
+
return thread;
|
4780
|
+
});
|
4781
|
+
if (initialMessages) {
|
4782
|
+
this.threadManager.mainThread.import(
|
4783
|
+
getExportFromInitialMessages(initialMessages)
|
4784
|
+
);
|
4785
|
+
}
|
4786
|
+
}
|
4787
|
+
setOptions(options) {
|
4788
|
+
this._options = options;
|
4789
|
+
this.threadManager.mainThread.setOptions(options);
|
4624
4790
|
}
|
4625
4791
|
reset({
|
4626
4792
|
initialMessages
|
4627
4793
|
} = {}) {
|
4628
|
-
this.
|
4794
|
+
this.threadManager.switchToNewThread();
|
4629
4795
|
if (!initialMessages) return;
|
4630
|
-
|
4631
|
-
|
4632
|
-
|
4633
|
-
parentId: messages2[idx - 1]?.id ?? null,
|
4634
|
-
message: m
|
4635
|
-
}))
|
4636
|
-
});
|
4796
|
+
this.threadManager.mainThread.import(
|
4797
|
+
getExportFromInitialMessages(initialMessages)
|
4798
|
+
);
|
4637
4799
|
}
|
4638
4800
|
};
|
4639
4801
|
|
@@ -4654,16 +4816,108 @@ var LocalRuntimeImpl = class _LocalRuntimeImpl extends AssistantRuntimeImpl {
|
|
4654
4816
|
}
|
4655
4817
|
};
|
4656
4818
|
var useLocalRuntime = (adapter, options = {}) => {
|
4657
|
-
const
|
4658
|
-
|
4659
|
-
|
4660
|
-
|
4819
|
+
const opt = {
|
4820
|
+
...options,
|
4821
|
+
adapters: {
|
4822
|
+
...options.adapters,
|
4823
|
+
chatModel: adapter
|
4824
|
+
}
|
4825
|
+
};
|
4826
|
+
const [runtime] = useState13(() => new LocalRuntimeCore(opt));
|
4827
|
+
useEffect17(() => {
|
4828
|
+
runtime.setOptions(opt);
|
4661
4829
|
});
|
4662
4830
|
return useMemo11(() => LocalRuntimeImpl.create(runtime), [runtime]);
|
4663
4831
|
};
|
4664
4832
|
|
4665
4833
|
// src/runtimes/external-store/useExternalStoreRuntime.tsx
|
4666
|
-
import { useEffect as
|
4834
|
+
import { useEffect as useEffect18, useMemo as useMemo12, useState as useState14 } from "react";
|
4835
|
+
|
4836
|
+
// src/runtimes/external-store/ExternalStoreThreadManagementAdapter.tsx
|
4837
|
+
var EMPTY_ARRAY2 = Object.freeze([]);
|
4838
|
+
var DEFAULT_THREAD_ID = "DEFAULT_THREAD_ID";
|
4839
|
+
var ExternalStoreThreadManagerRuntimeCore = class {
|
4840
|
+
constructor(adapter = {}, threadFactory) {
|
4841
|
+
this.adapter = adapter;
|
4842
|
+
this.threadFactory = threadFactory;
|
4843
|
+
this._mainThread = this.threadFactory(DEFAULT_THREAD_ID);
|
4844
|
+
}
|
4845
|
+
get threads() {
|
4846
|
+
return this.adapter.threads ?? EMPTY_ARRAY2;
|
4847
|
+
}
|
4848
|
+
get archivedThreads() {
|
4849
|
+
return this.adapter.archivedThreads ?? EMPTY_ARRAY2;
|
4850
|
+
}
|
4851
|
+
_mainThread;
|
4852
|
+
get mainThread() {
|
4853
|
+
return this._mainThread;
|
4854
|
+
}
|
4855
|
+
setAdapter(adapter) {
|
4856
|
+
const previousAdapter = this.adapter;
|
4857
|
+
this.adapter = adapter;
|
4858
|
+
const newThreadId = adapter.threadId ?? DEFAULT_THREAD_ID;
|
4859
|
+
const newThreads = adapter.threads ?? EMPTY_ARRAY2;
|
4860
|
+
const newArchivedThreads = adapter.archivedThreads ?? EMPTY_ARRAY2;
|
4861
|
+
if (previousAdapter.threadId === newThreadId && previousAdapter.threads === newThreads && previousAdapter.archivedThreads === newArchivedThreads) {
|
4862
|
+
return;
|
4863
|
+
}
|
4864
|
+
if (previousAdapter.threadId !== newThreadId) {
|
4865
|
+
this._mainThread._notifyEventSubscribers("switched-away");
|
4866
|
+
this._mainThread = this.threadFactory(newThreadId);
|
4867
|
+
this._mainThread._notifyEventSubscribers("switched-to");
|
4868
|
+
}
|
4869
|
+
this._notifySubscribers();
|
4870
|
+
}
|
4871
|
+
switchToThread(threadId) {
|
4872
|
+
if (this._mainThread?.threadId === threadId) return;
|
4873
|
+
const onSwitchToThread = this.adapter.onSwitchToThread;
|
4874
|
+
if (!onSwitchToThread)
|
4875
|
+
throw new Error(
|
4876
|
+
"External store adapter does not support switching to thread"
|
4877
|
+
);
|
4878
|
+
onSwitchToThread(threadId);
|
4879
|
+
}
|
4880
|
+
switchToNewThread() {
|
4881
|
+
const onSwitchToNewThread = this.adapter.onSwitchToNewThread;
|
4882
|
+
if (!onSwitchToNewThread)
|
4883
|
+
throw new Error(
|
4884
|
+
"External store adapter does not support switching to new thread"
|
4885
|
+
);
|
4886
|
+
onSwitchToNewThread();
|
4887
|
+
}
|
4888
|
+
async rename(threadId, newTitle) {
|
4889
|
+
const onRename = this.adapter.onRename;
|
4890
|
+
if (!onRename)
|
4891
|
+
throw new Error("External store adapter does not support renaming");
|
4892
|
+
onRename(threadId, newTitle);
|
4893
|
+
}
|
4894
|
+
async archive(threadId) {
|
4895
|
+
const onArchive = this.adapter.onArchive;
|
4896
|
+
if (!onArchive)
|
4897
|
+
throw new Error("External store adapter does not support archiving");
|
4898
|
+
onArchive(threadId);
|
4899
|
+
}
|
4900
|
+
async unarchive(threadId) {
|
4901
|
+
const onUnarchive = this.adapter.onUnarchive;
|
4902
|
+
if (!onUnarchive)
|
4903
|
+
throw new Error("External store adapter does not support unarchiving");
|
4904
|
+
onUnarchive(threadId);
|
4905
|
+
}
|
4906
|
+
async delete(threadId) {
|
4907
|
+
const onDelete = this.adapter.onDelete;
|
4908
|
+
if (!onDelete)
|
4909
|
+
throw new Error("External store adapter does not support deleting");
|
4910
|
+
onDelete(threadId);
|
4911
|
+
}
|
4912
|
+
_subscriptions = /* @__PURE__ */ new Set();
|
4913
|
+
subscribe(callback) {
|
4914
|
+
this._subscriptions.add(callback);
|
4915
|
+
return () => this._subscriptions.delete(callback);
|
4916
|
+
}
|
4917
|
+
_notifySubscribers() {
|
4918
|
+
for (const callback of this._subscriptions) callback();
|
4919
|
+
}
|
4920
|
+
};
|
4667
4921
|
|
4668
4922
|
// src/runtimes/external-store/getExternalStoreMessage.tsx
|
4669
4923
|
var symbolInnerMessage = Symbol("innerMessage");
|
@@ -4768,7 +5022,7 @@ var fromThreadMessageLike = (like, fallbackId, fallbackStatus) => {
|
|
4768
5022
|
};
|
4769
5023
|
|
4770
5024
|
// src/runtimes/external-store/ExternalStoreThreadRuntimeCore.tsx
|
4771
|
-
var
|
5025
|
+
var EMPTY_ARRAY3 = Object.freeze([]);
|
4772
5026
|
var hasUpcomingMessage = (isRunning, messages2) => {
|
4773
5027
|
return isRunning && messages2[messages2.length - 1]?.role !== "assistant";
|
4774
5028
|
};
|
@@ -4801,26 +5055,23 @@ var ExternalStoreThreadRuntimeCore = class extends BaseThreadRuntimeCore {
|
|
4801
5055
|
_converter = new ThreadMessageConverter();
|
4802
5056
|
_store;
|
4803
5057
|
beginEdit(messageId) {
|
4804
|
-
if (!this.
|
5058
|
+
if (!this._store.onEdit)
|
4805
5059
|
throw new Error("Runtime does not support editing.");
|
4806
5060
|
super.beginEdit(messageId);
|
4807
5061
|
}
|
4808
|
-
constructor(configProvider, store) {
|
5062
|
+
constructor(configProvider, threadId, store) {
|
4809
5063
|
super(configProvider);
|
4810
|
-
this.
|
4811
|
-
|
4812
|
-
get store() {
|
4813
|
-
return this._store;
|
5064
|
+
this.threadId = threadId;
|
5065
|
+
this.setStore(store);
|
4814
5066
|
}
|
4815
|
-
|
5067
|
+
setStore(store) {
|
4816
5068
|
if (this._store === store) return;
|
4817
|
-
this.threadId = store.threadId ?? this.threadId ?? generateId();
|
4818
5069
|
const isRunning = store.isRunning ?? false;
|
4819
5070
|
this.isDisabled = store.isDisabled ?? false;
|
4820
5071
|
const oldStore = this._store;
|
4821
5072
|
this._store = store;
|
4822
5073
|
this.extras = store.extras;
|
4823
|
-
this.suggestions = store.suggestions ??
|
5074
|
+
this.suggestions = store.suggestions ?? EMPTY_ARRAY3;
|
4824
5075
|
this._capabilities = {
|
4825
5076
|
switchToBranch: this._store.setMessages !== void 0,
|
4826
5077
|
edit: this._store.onEdit !== void 0,
|
@@ -4829,8 +5080,8 @@ var ExternalStoreThreadRuntimeCore = class extends BaseThreadRuntimeCore {
|
|
4829
5080
|
speech: this._store.adapters?.speech !== void 0,
|
4830
5081
|
unstable_copy: this._store.unstable_capabilities?.copy !== false,
|
4831
5082
|
// default true
|
4832
|
-
attachments: !!this.
|
4833
|
-
feedback: !!this.
|
5083
|
+
attachments: !!this._store.adapters?.attachments,
|
5084
|
+
feedback: !!this._store.adapters?.feedback
|
4834
5085
|
};
|
4835
5086
|
if (oldStore) {
|
4836
5087
|
if (oldStore.convertMessage !== store.convertMessage) {
|
@@ -4934,57 +5185,41 @@ var ExternalStoreThreadRuntimeCore = class extends BaseThreadRuntimeCore {
|
|
4934
5185
|
};
|
4935
5186
|
|
4936
5187
|
// src/runtimes/external-store/ExternalStoreRuntimeCore.tsx
|
5188
|
+
var getThreadManagerAdapter = (store) => {
|
5189
|
+
return {
|
5190
|
+
threadId: store.threadId,
|
5191
|
+
onSwitchToNewThread: store.onSwitchToNewThread,
|
5192
|
+
onSwitchToThread: store.onSwitchToThread,
|
5193
|
+
...store.adapters?.threadManager
|
5194
|
+
};
|
5195
|
+
};
|
4937
5196
|
var ExternalStoreRuntimeCore = class extends BaseAssistantRuntimeCore {
|
4938
|
-
|
5197
|
+
threadManager;
|
5198
|
+
_store;
|
4939
5199
|
constructor(store) {
|
4940
|
-
|
4941
|
-
|
4942
|
-
this.
|
4943
|
-
|
4944
|
-
|
4945
|
-
return this._proxyConfigProvider.getModelConfig();
|
4946
|
-
}
|
4947
|
-
registerModelConfigProvider(provider) {
|
4948
|
-
return this._proxyConfigProvider.registerModelConfigProvider(provider);
|
4949
|
-
}
|
4950
|
-
async switchToNewThread() {
|
4951
|
-
if (!this.thread.store.onSwitchToNewThread)
|
4952
|
-
throw new Error("Runtime does not support switching to new threads.");
|
4953
|
-
this.thread = new ExternalStoreThreadRuntimeCore(
|
4954
|
-
this._proxyConfigProvider,
|
4955
|
-
{
|
4956
|
-
...this.thread.store,
|
4957
|
-
messages: []
|
4958
|
-
}
|
4959
|
-
);
|
4960
|
-
await this.thread.store.onSwitchToNewThread();
|
4961
|
-
this.thread._notifyEventSubscribers("switched-to");
|
4962
|
-
}
|
4963
|
-
async switchToThread(threadId) {
|
4964
|
-
if (threadId !== null) {
|
4965
|
-
if (!this.thread.store.onSwitchToThread)
|
4966
|
-
throw new Error("Runtime does not support switching threads.");
|
4967
|
-
this.thread = new ExternalStoreThreadRuntimeCore(
|
5200
|
+
super();
|
5201
|
+
this._store = store;
|
5202
|
+
this.threadManager = new ExternalStoreThreadManagerRuntimeCore(
|
5203
|
+
getThreadManagerAdapter(store),
|
5204
|
+
(threadId) => new ExternalStoreThreadRuntimeCore(
|
4968
5205
|
this._proxyConfigProvider,
|
4969
|
-
|
4970
|
-
|
4971
|
-
|
4972
|
-
|
4973
|
-
|
4974
|
-
|
4975
|
-
|
4976
|
-
|
4977
|
-
|
4978
|
-
this.switchToNewThread();
|
4979
|
-
}
|
5206
|
+
threadId,
|
5207
|
+
this._store
|
5208
|
+
)
|
5209
|
+
);
|
5210
|
+
}
|
5211
|
+
setStore(store) {
|
5212
|
+
this._store = store;
|
5213
|
+
this.threadManager.setAdapter(getThreadManagerAdapter(store));
|
5214
|
+
this.threadManager.mainThread.setStore(store);
|
4980
5215
|
}
|
4981
5216
|
};
|
4982
5217
|
|
4983
5218
|
// src/runtimes/external-store/useExternalStoreRuntime.tsx
|
4984
5219
|
var useExternalStoreRuntime = (store) => {
|
4985
|
-
const [runtime] =
|
4986
|
-
|
4987
|
-
runtime.
|
5220
|
+
const [runtime] = useState14(() => new ExternalStoreRuntimeCore(store));
|
5221
|
+
useEffect18(() => {
|
5222
|
+
runtime.setStore(store);
|
4988
5223
|
});
|
4989
5224
|
return useMemo12(
|
4990
5225
|
() => AssistantRuntimeImpl.create(runtime, ThreadRuntimeImpl),
|
@@ -5139,7 +5374,7 @@ var shallowArrayEqual = (a, b) => {
|
|
5139
5374
|
};
|
5140
5375
|
|
5141
5376
|
// src/runtimes/dangerous-in-browser/useDangerousInBrowserRuntime.ts
|
5142
|
-
import { useState as
|
5377
|
+
import { useState as useState15 } from "react";
|
5143
5378
|
|
5144
5379
|
// src/runtimes/dangerous-in-browser/DangerousInBrowserAdapter.ts
|
5145
5380
|
var DangerousInBrowserAdapter = class {
|
@@ -5168,7 +5403,7 @@ var DangerousInBrowserAdapter = class {
|
|
5168
5403
|
// src/runtimes/dangerous-in-browser/useDangerousInBrowserRuntime.ts
|
5169
5404
|
var useDangerousInBrowserRuntime = (options) => {
|
5170
5405
|
const { localRuntimeOptions, otherOptions } = splitLocalRuntimeOptions(options);
|
5171
|
-
const [adapter] =
|
5406
|
+
const [adapter] = useState15(() => new DangerousInBrowserAdapter(otherOptions));
|
5172
5407
|
return useLocalRuntime(adapter, localRuntimeOptions);
|
5173
5408
|
};
|
5174
5409
|
|
@@ -5754,8 +5989,8 @@ CircleStopIcon.displayName = "CircleStopIcon";
|
|
5754
5989
|
// src/ui/attachment.tsx
|
5755
5990
|
import {
|
5756
5991
|
forwardRef as forwardRef28,
|
5757
|
-
useEffect as
|
5758
|
-
useState as
|
5992
|
+
useEffect as useEffect19,
|
5993
|
+
useState as useState16
|
5759
5994
|
} from "react";
|
5760
5995
|
import { CircleXIcon, FileIcon } from "lucide-react";
|
5761
5996
|
|
@@ -5798,8 +6033,8 @@ var AttachmentRoot = withDefaults(attachment_exports.Root, {
|
|
5798
6033
|
});
|
5799
6034
|
AttachmentRoot.displayName = "AttachmentRoot";
|
5800
6035
|
var useFileSrc = (file) => {
|
5801
|
-
const [src, setSrc] =
|
5802
|
-
|
6036
|
+
const [src, setSrc] = useState16(void 0);
|
6037
|
+
useEffect19(() => {
|
5803
6038
|
if (!file) {
|
5804
6039
|
setSrc(void 0);
|
5805
6040
|
return;
|
@@ -5823,7 +6058,7 @@ var useAttachmentSrc = () => {
|
|
5823
6058
|
return useFileSrc(file) ?? src;
|
5824
6059
|
};
|
5825
6060
|
var AttachmentPreview = ({ src }) => {
|
5826
|
-
const [isLoaded, setIsLoaded] =
|
6061
|
+
const [isLoaded, setIsLoaded] = useState16(false);
|
5827
6062
|
return (
|
5828
6063
|
// eslint-disable-next-line @next/next/no-img-element
|
5829
6064
|
/* @__PURE__ */ jsx46(
|
@@ -6069,8 +6304,13 @@ var ThreadWelcomeMessageStyled = withDefaults("p", {
|
|
6069
6304
|
className: "aui-thread-welcome-message"
|
6070
6305
|
});
|
6071
6306
|
var ThreadWelcomeMessage = forwardRef30(({ message: messageProp, ...rest }, ref) => {
|
6072
|
-
const {
|
6073
|
-
|
6307
|
+
const {
|
6308
|
+
welcome: { message } = {},
|
6309
|
+
strings: {
|
6310
|
+
welcome: { message: defaultMessage = "How can I help you today?" } = {}
|
6311
|
+
} = {}
|
6312
|
+
} = useThreadConfig();
|
6313
|
+
return /* @__PURE__ */ jsx48(ThreadWelcomeMessageStyled, { ...rest, ref, children: messageProp ?? message ?? defaultMessage });
|
6074
6314
|
});
|
6075
6315
|
ThreadWelcomeMessage.displayName = "ThreadWelcomeMessage";
|
6076
6316
|
var ThreadWelcomeSuggestionContainer = withDefaults("div", {
|
@@ -6504,6 +6744,7 @@ export {
|
|
6504
6744
|
useEditComposerStore,
|
6505
6745
|
useExternalMessageConverter,
|
6506
6746
|
useExternalStoreRuntime,
|
6747
|
+
useInlineRender,
|
6507
6748
|
useLocalRuntime,
|
6508
6749
|
useMessage,
|
6509
6750
|
useMessageContext,
|
@@ -6522,6 +6763,7 @@ export {
|
|
6522
6763
|
useThreadContext,
|
6523
6764
|
useThreadEmpty,
|
6524
6765
|
useThreadIf,
|
6766
|
+
useThreadManager,
|
6525
6767
|
useThreadMessages,
|
6526
6768
|
useThreadMessagesStore,
|
6527
6769
|
useThreadModelConfig,
|