@assistant-ui/react 0.5.77 → 0.5.79
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +37 -23
- package/dist/index.d.ts +37 -23
- package/dist/index.js +259 -258
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +169 -168
- package/dist/index.mjs.map +1 -1
- package/dist/styles/index.css +3 -1
- package/dist/styles/index.css.map +1 -1
- package/dist/styles/tailwindcss/base-components.css +5 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2; var _class3; var _class4; var _class5; var _class6; var _class7; var _class8; var _class9; var _class10; var _class11; var _class12; var _class13; var _class14; var _class15; var _class16; var _class17;
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2; var _class3; var _class4; var _class5; var _class6; var _class7; var _class8; var _class9; var _class10; var _class11; var _class12; var _class13; var _class14; var _class15; var _class16; var _class17;
|
2
2
|
|
3
3
|
|
4
4
|
|
@@ -411,15 +411,11 @@ function useComposerRuntime(options) {
|
|
411
411
|
|
412
412
|
var useAppendMessage = () => {
|
413
413
|
const threadRuntime = useThreadRuntime();
|
414
|
-
const threadViewportStore = useThreadViewportStore();
|
415
|
-
const threadComposerStore = useThreadComposerStore();
|
416
414
|
const append = _react.useCallback.call(void 0,
|
417
415
|
(message) => {
|
418
416
|
threadRuntime.append(message);
|
419
|
-
threadViewportStore.getState().scrollToBottom();
|
420
|
-
threadComposerStore.getState().focus();
|
421
417
|
},
|
422
|
-
[threadRuntime
|
418
|
+
[threadRuntime]
|
423
419
|
);
|
424
420
|
return append;
|
425
421
|
};
|
@@ -428,11 +424,9 @@ var useAppendMessage = () => {
|
|
428
424
|
|
429
425
|
var useSwitchToNewThread = () => {
|
430
426
|
const assistantRuntime = useAssistantRuntime();
|
431
|
-
const threadComposerStore = useThreadComposerStore();
|
432
427
|
const switchToNewThread = _react.useCallback.call(void 0, () => {
|
433
428
|
assistantRuntime.switchToNewThread();
|
434
|
-
|
435
|
-
}, [assistantRuntime, threadComposerStore]);
|
429
|
+
}, [assistantRuntime]);
|
436
430
|
return switchToNewThread;
|
437
431
|
};
|
438
432
|
|
@@ -545,25 +539,25 @@ var getThreadMessageText = (message) => {
|
|
545
539
|
var useActionBarCopy = ({
|
546
540
|
copiedDuration = 3e3
|
547
541
|
} = {}) => {
|
548
|
-
const
|
542
|
+
const messageRuntime = useMessageRuntime();
|
543
|
+
const composerRuntime = useComposerRuntime();
|
549
544
|
const messageUtilsStore = useMessageUtilsStore();
|
550
|
-
const editComposerStore = useEditComposerStore();
|
551
545
|
const hasCopyableContent = useCombinedStore(
|
552
|
-
[
|
546
|
+
[messageRuntime, composerRuntime],
|
553
547
|
(message, c) => {
|
554
548
|
return !c.isEditing && (message.role !== "assistant" || message.status.type !== "running") && message.content.some((c2) => c2.type === "text" && c2.text.length > 0);
|
555
549
|
}
|
556
550
|
);
|
557
551
|
const callback = _react.useCallback.call(void 0, () => {
|
558
|
-
const message =
|
552
|
+
const message = messageRuntime.getState();
|
559
553
|
const { setIsCopied } = messageUtilsStore.getState();
|
560
|
-
const { isEditing, text: composerValue } =
|
554
|
+
const { isEditing, text: composerValue } = composerRuntime.getState();
|
561
555
|
const valueToCopy = isEditing ? composerValue : getThreadMessageText(message);
|
562
556
|
navigator.clipboard.writeText(valueToCopy).then(() => {
|
563
557
|
setIsCopied(true);
|
564
558
|
setTimeout(() => setIsCopied(false), copiedDuration);
|
565
559
|
});
|
566
|
-
}, [
|
560
|
+
}, [messageRuntime, messageUtilsStore, composerRuntime, copiedDuration]);
|
567
561
|
if (!hasCopyableContent) return null;
|
568
562
|
return callback;
|
569
563
|
};
|
@@ -583,20 +577,15 @@ var useActionBarEdit = () => {
|
|
583
577
|
// src/primitive-hooks/actionBar/useActionBarReload.tsx
|
584
578
|
|
585
579
|
var useActionBarReload = () => {
|
586
|
-
const messageStore = useMessageStore();
|
587
|
-
const threadStore = useThreadStore();
|
588
580
|
const messageRuntime = useMessageRuntime();
|
589
|
-
const
|
590
|
-
const threadViewportStore = useThreadViewportStore();
|
581
|
+
const threadRuntime = useThreadRuntime();
|
591
582
|
const disabled = useCombinedStore(
|
592
|
-
[
|
583
|
+
[threadRuntime, messageRuntime],
|
593
584
|
(t, m) => t.isRunning || t.isDisabled || m.role !== "assistant"
|
594
585
|
);
|
595
586
|
const callback = _react.useCallback.call(void 0, () => {
|
596
587
|
messageRuntime.reload();
|
597
|
-
|
598
|
-
threadComposerStore.getState().focus();
|
599
|
-
}, [messageRuntime, threadComposerStore, threadViewportStore]);
|
588
|
+
}, [messageRuntime]);
|
600
589
|
if (disabled) return null;
|
601
590
|
return callback;
|
602
591
|
};
|
@@ -686,12 +675,11 @@ var useBranchPickerPrevious = () => {
|
|
686
675
|
// src/primitive-hooks/composer/useComposerCancel.tsx
|
687
676
|
|
688
677
|
var useComposerCancel = () => {
|
689
|
-
const
|
678
|
+
const composerRuntime = useComposerRuntime();
|
690
679
|
const disabled = useComposer((c) => !c.canCancel);
|
691
680
|
const callback = _react.useCallback.call(void 0, () => {
|
692
|
-
|
693
|
-
|
694
|
-
}, [composerStore]);
|
681
|
+
composerRuntime.cancel();
|
682
|
+
}, [composerRuntime]);
|
695
683
|
if (disabled) return null;
|
696
684
|
return callback;
|
697
685
|
};
|
@@ -708,21 +696,16 @@ var useComposerIf = (props) => {
|
|
708
696
|
// src/primitive-hooks/composer/useComposerSend.tsx
|
709
697
|
|
710
698
|
var useComposerSend = () => {
|
711
|
-
const
|
712
|
-
const
|
713
|
-
const composerStore = useComposerStore();
|
714
|
-
const threadComposerStore = useThreadComposerStore();
|
699
|
+
const composerRuntime = useComposerRuntime();
|
700
|
+
const threadRuntime = useThreadRuntime();
|
715
701
|
const disabled = useCombinedStore(
|
716
|
-
[
|
702
|
+
[threadRuntime, composerRuntime],
|
717
703
|
(t, c) => t.isRunning || !c.isEditing || c.isEmpty
|
718
704
|
);
|
719
705
|
const callback = _react.useCallback.call(void 0, () => {
|
720
|
-
|
721
|
-
|
722
|
-
|
723
|
-
threadViewportStore.getState().scrollToBottom();
|
724
|
-
threadComposerStore.getState().focus();
|
725
|
-
}, [threadComposerStore, composerStore, threadViewportStore]);
|
706
|
+
if (!composerRuntime.getState().isEditing) return;
|
707
|
+
composerRuntime.send();
|
708
|
+
}, [threadRuntime]);
|
726
709
|
if (disabled) return null;
|
727
710
|
return callback;
|
728
711
|
};
|
@@ -788,10 +771,10 @@ var useContentPartText = () => {
|
|
788
771
|
|
789
772
|
// src/primitive-hooks/message/useMessageIf.tsx
|
790
773
|
var useMessageIf = (props) => {
|
791
|
-
const
|
774
|
+
const messageRuntime = useMessageRuntime();
|
792
775
|
const messageUtilsStore = useMessageUtilsStore();
|
793
776
|
return useCombinedStore(
|
794
|
-
[
|
777
|
+
[messageRuntime, messageUtilsStore],
|
795
778
|
({
|
796
779
|
role,
|
797
780
|
attachments,
|
@@ -846,11 +829,9 @@ var useThreadEmpty = () => {
|
|
846
829
|
var useThreadScrollToBottom = () => {
|
847
830
|
const isAtBottom = useThreadViewport((s) => s.isAtBottom);
|
848
831
|
const threadViewportStore = useThreadViewportStore();
|
849
|
-
const threadComposerStore = useThreadComposerStore();
|
850
832
|
const handleScrollToBottom = _react.useCallback.call(void 0, () => {
|
851
833
|
threadViewportStore.getState().scrollToBottom();
|
852
|
-
|
853
|
-
}, [threadViewportStore, threadComposerStore]);
|
834
|
+
}, [threadViewportStore]);
|
854
835
|
if (isAtBottom) return null;
|
855
836
|
return handleScrollToBottom;
|
856
837
|
};
|
@@ -861,20 +842,16 @@ var useThreadSuggestion = ({
|
|
861
842
|
prompt,
|
862
843
|
autoSend
|
863
844
|
}) => {
|
864
|
-
const
|
865
|
-
const composerStore = useThreadComposerStore();
|
866
|
-
const append = useAppendMessage();
|
845
|
+
const threadRuntime = useThreadRuntime();
|
867
846
|
const disabled = useThread((t) => t.isDisabled);
|
868
847
|
const callback = _react.useCallback.call(void 0, () => {
|
869
|
-
|
870
|
-
|
871
|
-
|
872
|
-
append(prompt);
|
873
|
-
composer.setText("");
|
848
|
+
if (autoSend && !threadRuntime.getState().isRunning) {
|
849
|
+
threadRuntime.append(prompt);
|
850
|
+
threadRuntime.composer.setText("");
|
874
851
|
} else {
|
875
|
-
composer.setText(prompt);
|
852
|
+
threadRuntime.composer.setText(prompt);
|
876
853
|
}
|
877
|
-
}, [
|
854
|
+
}, [threadRuntime, autoSend, prompt]);
|
878
855
|
if (disabled) return null;
|
879
856
|
return callback;
|
880
857
|
};
|
@@ -902,11 +879,11 @@ var useActionBarFloatStatus = ({
|
|
902
879
|
autohide,
|
903
880
|
autohideFloat
|
904
881
|
}) => {
|
905
|
-
const
|
906
|
-
const
|
882
|
+
const threadRuntime = useThreadRuntime();
|
883
|
+
const messageRuntime = useMessageRuntime();
|
907
884
|
const messageUtilsStore = useMessageUtilsStore();
|
908
885
|
return useCombinedStore(
|
909
|
-
[
|
886
|
+
[threadRuntime, messageRuntime, messageUtilsStore],
|
910
887
|
(t, m, mu) => {
|
911
888
|
if (hideWhenRunning && t.isRunning) return "hidden" /* Hidden */;
|
912
889
|
const autohideEnabled = autohide === "always" || autohide === "not-last" && !m.isLast;
|
@@ -1110,42 +1087,40 @@ _chunkPZ5AY32Cjs.__export.call(void 0, assistantModal_exports, {
|
|
1110
1087
|
var _reactpopover = require('@radix-ui/react-popover'); var PopoverPrimitive2 = _interopRequireWildcard(_reactpopover); var PopoverPrimitive = _interopRequireWildcard(_reactpopover); var PopoverPrimitive3 = _interopRequireWildcard(_reactpopover); var PopoverPrimitive4 = _interopRequireWildcard(_reactpopover); var PopoverPrimitive5 = _interopRequireWildcard(_reactpopover);
|
1111
1088
|
|
1112
1089
|
|
1113
|
-
// src/utils/hooks/useOnComposerFocus.tsx
|
1114
|
-
var _reactusecallbackref = require('@radix-ui/react-use-callback-ref');
|
1115
|
-
|
1116
|
-
var useOnComposerFocus = (callback) => {
|
1117
|
-
const callbackRef = _reactusecallbackref.useCallbackRef.call(void 0, callback);
|
1118
|
-
const threadComposerStore = useThreadComposerStore();
|
1119
|
-
_react.useEffect.call(void 0, () => {
|
1120
|
-
return threadComposerStore.getState().onFocus(() => {
|
1121
|
-
callbackRef();
|
1122
|
-
});
|
1123
|
-
}, [threadComposerStore, callbackRef]);
|
1124
|
-
};
|
1125
|
-
|
1126
1090
|
// src/primitives/assistantModal/scope.tsx
|
1127
1091
|
|
1128
1092
|
var usePopoverScope = PopoverPrimitive.createPopoverScope();
|
1129
1093
|
|
1130
1094
|
// src/primitives/assistantModal/AssistantModalRoot.tsx
|
1131
1095
|
|
1132
|
-
var useAssistantModalOpenState = (
|
1096
|
+
var useAssistantModalOpenState = ({
|
1097
|
+
defaultOpen = false,
|
1098
|
+
unstable_openOnRunStart = true
|
1099
|
+
}) => {
|
1133
1100
|
const state = _react.useState.call(void 0, defaultOpen);
|
1134
1101
|
const [, setOpen] = state;
|
1135
|
-
|
1136
|
-
|
1137
|
-
|
1102
|
+
const threadRuntime = useThreadRuntime();
|
1103
|
+
_react.useEffect.call(void 0, () => {
|
1104
|
+
if (!unstable_openOnRunStart) return void 0;
|
1105
|
+
return threadRuntime.unstable_on("run-start", () => {
|
1106
|
+
setOpen(true);
|
1107
|
+
});
|
1108
|
+
}, [unstable_openOnRunStart]);
|
1138
1109
|
return state;
|
1139
1110
|
};
|
1140
1111
|
var AssistantModalPrimitiveRoot = ({
|
1141
1112
|
__scopeAssistantModal,
|
1142
1113
|
defaultOpen,
|
1114
|
+
unstable_openOnRunStart,
|
1143
1115
|
open,
|
1144
1116
|
onOpenChange,
|
1145
1117
|
...rest
|
1146
1118
|
}) => {
|
1147
1119
|
const scope = usePopoverScope(__scopeAssistantModal);
|
1148
|
-
const [modalOpen, setOpen] = useAssistantModalOpenState(
|
1120
|
+
const [modalOpen, setOpen] = useAssistantModalOpenState({
|
1121
|
+
defaultOpen,
|
1122
|
+
unstable_openOnRunStart
|
1123
|
+
});
|
1149
1124
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
1150
1125
|
PopoverPrimitive2.Root,
|
1151
1126
|
{
|
@@ -1496,7 +1471,7 @@ var ContentPartRuntimeProvider = ({
|
|
1496
1471
|
|
1497
1472
|
// src/utils/smooth/useSmooth.tsx
|
1498
1473
|
|
1499
|
-
|
1474
|
+
var _reactusecallbackref = require('@radix-ui/react-use-callback-ref');
|
1500
1475
|
|
1501
1476
|
// src/utils/smooth/SmoothContext.tsx
|
1502
1477
|
|
@@ -1836,7 +1811,7 @@ var METHOD_NOT_SUPPORTED = () => {
|
|
1836
1811
|
throw new Error("Composer is not available");
|
1837
1812
|
};
|
1838
1813
|
var EMPTY_ARRAY = Object.freeze([]);
|
1839
|
-
var getThreadComposerState = (runtime
|
1814
|
+
var getThreadComposerState = (runtime) => {
|
1840
1815
|
return Object.freeze({
|
1841
1816
|
type: "thread",
|
1842
1817
|
isEditing: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _24 => _24.isEditing]), () => ( false)),
|
@@ -1850,8 +1825,6 @@ var getThreadComposerState = (runtime, focus, onFocus) => {
|
|
1850
1825
|
// edit: beginEdit,
|
1851
1826
|
send: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _36 => _36.send, 'access', _37 => _37.bind, 'call', _38 => _38(runtime)]), () => ( METHOD_NOT_SUPPORTED)),
|
1852
1827
|
cancel: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _39 => _39.cancel, 'access', _40 => _40.bind, 'call', _41 => _41(runtime)]), () => ( METHOD_NOT_SUPPORTED)),
|
1853
|
-
focus,
|
1854
|
-
onFocus,
|
1855
1828
|
reset: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _42 => _42.reset, 'access', _43 => _43.bind, 'call', _44 => _44(runtime)]), () => ( METHOD_NOT_SUPPORTED)),
|
1856
1829
|
addAttachment: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _45 => _45.addAttachment, 'access', _46 => _46.bind, 'call', _47 => _47(runtime)]), () => ( METHOD_NOT_SUPPORTED)),
|
1857
1830
|
removeAttachment: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _48 => _48.removeAttachment, 'access', _49 => _49.bind, 'call', _50 => _50(runtime)]), () => ( METHOD_NOT_SUPPORTED))
|
@@ -1961,24 +1934,20 @@ var ComposerRuntimeImpl = class {
|
|
1961
1934
|
return core.getAttachmentAccept();
|
1962
1935
|
}
|
1963
1936
|
};
|
1964
|
-
var ThreadComposerRuntimeImpl =
|
1937
|
+
var ThreadComposerRuntimeImpl = class extends ComposerRuntimeImpl {
|
1965
1938
|
get type() {
|
1966
1939
|
return "thread";
|
1967
1940
|
}
|
1968
1941
|
|
1969
1942
|
constructor(core) {
|
1970
1943
|
const stateBinding = new LazyMemoizeSubject({
|
1971
|
-
getState: () => getThreadComposerState(
|
1972
|
-
core.getState(),
|
1973
|
-
this.focus.bind(this),
|
1974
|
-
this.onFocus.bind(this)
|
1975
|
-
),
|
1944
|
+
getState: () => getThreadComposerState(core.getState()),
|
1976
1945
|
subscribe: (callback) => core.subscribe(callback)
|
1977
1946
|
});
|
1978
1947
|
super({
|
1979
1948
|
getState: () => core.getState(),
|
1980
1949
|
subscribe: (callback) => stateBinding.subscribe(callback)
|
1981
|
-
});
|
1950
|
+
});
|
1982
1951
|
this._getState = stateBinding.getState.bind(stateBinding);
|
1983
1952
|
}
|
1984
1953
|
get attachments() {
|
@@ -1987,21 +1956,6 @@ var ThreadComposerRuntimeImpl = (_class5 = class extends ComposerRuntimeImpl {
|
|
1987
1956
|
getState() {
|
1988
1957
|
return this._getState();
|
1989
1958
|
}
|
1990
|
-
// TODO replace with events
|
1991
|
-
__init9() {this._focusListeners = /* @__PURE__ */ new Set()}
|
1992
|
-
/**
|
1993
|
-
* @deprecated This feature is being removed in 0.6.0. Submit feedback if you need it.
|
1994
|
-
*/
|
1995
|
-
focus() {
|
1996
|
-
this._focusListeners.forEach((callback) => callback());
|
1997
|
-
}
|
1998
|
-
/**
|
1999
|
-
* @deprecated This feature is being removed in 0.6.0. Submit feedback if you need it.
|
2000
|
-
*/
|
2001
|
-
onFocus(callback) {
|
2002
|
-
this._focusListeners.add(callback);
|
2003
|
-
return () => this._focusListeners.delete(callback);
|
2004
|
-
}
|
2005
1959
|
getAttachmentByIndex(idx) {
|
2006
1960
|
return new ThreadComposerAttachmentRuntimeImpl(
|
2007
1961
|
new ShallowMemoizeSubject({
|
@@ -2020,7 +1974,7 @@ var ThreadComposerRuntimeImpl = (_class5 = class extends ComposerRuntimeImpl {
|
|
2020
1974
|
this._core
|
2021
1975
|
);
|
2022
1976
|
}
|
2023
|
-
}
|
1977
|
+
};
|
2024
1978
|
var EditComposerRuntimeImpl = class extends ComposerRuntimeImpl {
|
2025
1979
|
constructor(core, _beginEdit) {
|
2026
1980
|
const stateBinding = new LazyMemoizeSubject({
|
@@ -2079,6 +2033,9 @@ var NestedSubscriptionSubject = class extends BaseSubject {
|
|
2079
2033
|
getState() {
|
2080
2034
|
return this.binding.getState();
|
2081
2035
|
}
|
2036
|
+
outerSubscribe(callback) {
|
2037
|
+
return this.binding.subscribe(callback);
|
2038
|
+
}
|
2082
2039
|
_connect() {
|
2083
2040
|
const callback = () => {
|
2084
2041
|
this.notifySubscribers();
|
@@ -2093,7 +2050,7 @@ var NestedSubscriptionSubject = class extends BaseSubject {
|
|
2093
2050
|
innerUnsubscribe = _optionalChain([this, 'access', _75 => _75.binding, 'access', _76 => _76.getState, 'call', _77 => _77(), 'optionalAccess', _78 => _78.subscribe, 'call', _79 => _79(callback)]);
|
2094
2051
|
callback();
|
2095
2052
|
};
|
2096
|
-
const outerUnsubscribe = this.
|
2053
|
+
const outerUnsubscribe = this.outerSubscribe(onRuntimeUpdate);
|
2097
2054
|
return () => {
|
2098
2055
|
_optionalChain([outerUnsubscribe, 'optionalCall', _80 => _80()]);
|
2099
2056
|
_optionalChain([innerUnsubscribe, 'optionalCall', _81 => _81()]);
|
@@ -2135,12 +2092,12 @@ var getContentPartState = (message, partIndex) => {
|
|
2135
2092
|
const status = toContentPartStatus(message, partIndex, part);
|
2136
2093
|
return Object.freeze({ ...part, part, status });
|
2137
2094
|
};
|
2138
|
-
var MessageRuntimeImpl = (
|
2139
|
-
constructor(_core, _threadBinding) {;
|
2095
|
+
var MessageRuntimeImpl = (_class5 = class {
|
2096
|
+
constructor(_core, _threadBinding) {;_class5.prototype.__init9.call(this);
|
2140
2097
|
this._core = _core;
|
2141
2098
|
this._threadBinding = _threadBinding;
|
2142
2099
|
}
|
2143
|
-
|
2100
|
+
__init9() {this.composer = new EditComposerRuntimeImpl(
|
2144
2101
|
new NestedSubscriptionSubject({
|
2145
2102
|
getState: () => this._threadBinding.getState().getEditComposer(this._core.getState().id),
|
2146
2103
|
subscribe: (callback) => this._threadBinding.subscribe(callback)
|
@@ -2235,7 +2192,7 @@ var MessageRuntimeImpl = (_class6 = class {
|
|
2235
2192
|
})
|
2236
2193
|
);
|
2237
2194
|
}
|
2238
|
-
},
|
2195
|
+
}, _class5);
|
2239
2196
|
|
2240
2197
|
// src/primitives/message/MessageContent.tsx
|
2241
2198
|
|
@@ -2264,8 +2221,7 @@ var MessageContentPartComponent = ({
|
|
2264
2221
|
tools: { by_name = {}, Fallback: Fallback2 = void 0 } = {}
|
2265
2222
|
} = {}
|
2266
2223
|
}) => {
|
2267
|
-
const
|
2268
|
-
const threadRuntime = useThreadRuntime();
|
2224
|
+
const contentPartRuntime = useContentPartRuntime();
|
2269
2225
|
const part = useContentPart();
|
2270
2226
|
const type = part.type;
|
2271
2227
|
switch (type) {
|
@@ -2286,12 +2242,7 @@ var MessageContentPartComponent = ({
|
|
2286
2242
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, UI, { ...part, part });
|
2287
2243
|
case "tool-call": {
|
2288
2244
|
const Tool = by_name[part.toolName] || Fallback2;
|
2289
|
-
const addResult = (result) =>
|
2290
|
-
messageId: messageStore.getState().id,
|
2291
|
-
toolName: part.toolName,
|
2292
|
-
toolCallId: part.toolCallId,
|
2293
|
-
result
|
2294
|
-
});
|
2245
|
+
const addResult = (result) => contentPartRuntime.addToolResult(result);
|
2295
2246
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ToolUIDisplay, { ...part, part, UI: Tool, addResult });
|
2296
2247
|
}
|
2297
2248
|
default:
|
@@ -2480,6 +2431,19 @@ var _reactslot = require('@radix-ui/react-slot');
|
|
2480
2431
|
var _reacttextareaautosize = require('react-textarea-autosize'); var _reacttextareaautosize2 = _interopRequireDefault(_reacttextareaautosize);
|
2481
2432
|
|
2482
2433
|
|
2434
|
+
// src/utils/hooks/useOnScrollToBottom.tsx
|
2435
|
+
|
2436
|
+
|
2437
|
+
var useOnScrollToBottom = (callback) => {
|
2438
|
+
const callbackRef = _reactusecallbackref.useCallbackRef.call(void 0, callback);
|
2439
|
+
const onScrollToBottom = useThreadViewport((vp) => vp.onScrollToBottom);
|
2440
|
+
_react.useEffect.call(void 0, () => {
|
2441
|
+
return onScrollToBottom(callbackRef);
|
2442
|
+
}, [onScrollToBottom, callbackRef]);
|
2443
|
+
};
|
2444
|
+
|
2445
|
+
// src/primitives/composer/ComposerInput.tsx
|
2446
|
+
|
2483
2447
|
var ComposerPrimitiveInput = _react.forwardRef.call(void 0,
|
2484
2448
|
({
|
2485
2449
|
autoFocus = false,
|
@@ -2489,10 +2453,13 @@ var ComposerPrimitiveInput = _react.forwardRef.call(void 0,
|
|
2489
2453
|
onKeyDown,
|
2490
2454
|
submitOnEnter = true,
|
2491
2455
|
cancelOnEscape = true,
|
2456
|
+
unstable_focusOnRunStart = true,
|
2457
|
+
unstable_focusOnScrollToBottom = true,
|
2458
|
+
unstable_focusOnThreadSwitched = true,
|
2492
2459
|
...rest
|
2493
2460
|
}, forwardedRef) => {
|
2494
|
-
const
|
2495
|
-
const
|
2461
|
+
const threadRuntime = useThreadRuntime();
|
2462
|
+
const composerRuntime = useComposerRuntime();
|
2496
2463
|
const value = useComposer((c) => {
|
2497
2464
|
if (!c.isEditing) return "";
|
2498
2465
|
return c.text;
|
@@ -2503,9 +2470,8 @@ var ComposerPrimitiveInput = _react.forwardRef.call(void 0,
|
|
2503
2470
|
const ref = _reactcomposerefs.useComposedRefs.call(void 0, forwardedRef, textareaRef);
|
2504
2471
|
_reactuseescapekeydown.useEscapeKeydown.call(void 0, (e) => {
|
2505
2472
|
if (!cancelOnEscape) return;
|
2506
|
-
|
2507
|
-
|
2508
|
-
composer.cancel();
|
2473
|
+
if (composerRuntime.getState().canCancel) {
|
2474
|
+
composerRuntime.cancel();
|
2509
2475
|
e.preventDefault();
|
2510
2476
|
}
|
2511
2477
|
});
|
@@ -2513,7 +2479,7 @@ var ComposerPrimitiveInput = _react.forwardRef.call(void 0,
|
|
2513
2479
|
if (isDisabled || !submitOnEnter) return;
|
2514
2480
|
if (e.nativeEvent.isComposing) return;
|
2515
2481
|
if (e.key === "Enter" && e.shiftKey === false) {
|
2516
|
-
const { isRunning } =
|
2482
|
+
const { isRunning } = threadRuntime.getState();
|
2517
2483
|
if (!isRunning) {
|
2518
2484
|
e.preventDefault();
|
2519
2485
|
_optionalChain([textareaRef, 'access', _123 => _123.current, 'optionalAccess', _124 => _124.closest, 'call', _125 => _125("form"), 'optionalAccess', _126 => _126.requestSubmit, 'call', _127 => _127()]);
|
@@ -2521,7 +2487,7 @@ var ComposerPrimitiveInput = _react.forwardRef.call(void 0,
|
|
2521
2487
|
}
|
2522
2488
|
};
|
2523
2489
|
const autoFocusEnabled = autoFocus && !isDisabled;
|
2524
|
-
const
|
2490
|
+
const focus2 = _react.useCallback.call(void 0, () => {
|
2525
2491
|
const textarea = textareaRef.current;
|
2526
2492
|
if (!textarea || !autoFocusEnabled) return;
|
2527
2493
|
textarea.focus({ preventScroll: true });
|
@@ -2530,12 +2496,22 @@ var ComposerPrimitiveInput = _react.forwardRef.call(void 0,
|
|
2530
2496
|
textareaRef.current.value.length
|
2531
2497
|
);
|
2532
2498
|
}, [autoFocusEnabled]);
|
2533
|
-
_react.useEffect.call(void 0, () =>
|
2534
|
-
|
2535
|
-
if (
|
2536
|
-
|
2499
|
+
_react.useEffect.call(void 0, () => focus2(), [focus2]);
|
2500
|
+
useOnScrollToBottom(() => {
|
2501
|
+
if (composerRuntime.type === "thread" && unstable_focusOnScrollToBottom) {
|
2502
|
+
focus2();
|
2537
2503
|
}
|
2538
2504
|
});
|
2505
|
+
_react.useEffect.call(void 0, () => {
|
2506
|
+
if (composerRuntime.type !== "thread" || !unstable_focusOnRunStart)
|
2507
|
+
return void 0;
|
2508
|
+
return threadRuntime.unstable_on("run-start", focus2);
|
2509
|
+
}, [unstable_focusOnRunStart]);
|
2510
|
+
_react.useEffect.call(void 0, () => {
|
2511
|
+
if (composerRuntime.type !== "thread" || !unstable_focusOnThreadSwitched)
|
2512
|
+
return void 0;
|
2513
|
+
return threadRuntime.unstable_on("switched-to", focus2);
|
2514
|
+
}, [unstable_focusOnThreadSwitched]);
|
2539
2515
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
2540
2516
|
Component,
|
2541
2517
|
{
|
@@ -2545,9 +2521,8 @@ var ComposerPrimitiveInput = _react.forwardRef.call(void 0,
|
|
2545
2521
|
ref,
|
2546
2522
|
disabled: isDisabled,
|
2547
2523
|
onChange: _primitive.composeEventHandlers.call(void 0, onChange, (e) => {
|
2548
|
-
|
2549
|
-
|
2550
|
-
return composerState.setText(e.target.value);
|
2524
|
+
if (!composerRuntime.getState().isEditing) return;
|
2525
|
+
return composerRuntime.setText(e.target.value);
|
2551
2526
|
}),
|
2552
2527
|
onKeyDown: _primitive.composeEventHandlers.call(void 0, onKeyDown, handleKeyPress)
|
2553
2528
|
}
|
@@ -2731,22 +2706,10 @@ var useOnResizeContent = (callback) => {
|
|
2731
2706
|
return useManagedRef(refCallback);
|
2732
2707
|
};
|
2733
2708
|
|
2734
|
-
// src/utils/hooks/useOnScrollToBottom.tsx
|
2735
|
-
|
2736
|
-
|
2737
|
-
var useOnScrollToBottom = (callback) => {
|
2738
|
-
const callbackRef = _reactusecallbackref.useCallbackRef.call(void 0, callback);
|
2739
|
-
const threadViewportStore = useThreadViewportStore();
|
2740
|
-
_react.useEffect.call(void 0, () => {
|
2741
|
-
return threadViewportStore.getState().onScrollToBottom(() => {
|
2742
|
-
callbackRef();
|
2743
|
-
});
|
2744
|
-
}, [threadViewportStore, callbackRef]);
|
2745
|
-
};
|
2746
|
-
|
2747
2709
|
// src/primitive-hooks/thread/useThreadViewportAutoScroll.tsx
|
2748
2710
|
var useThreadViewportAutoScroll = ({
|
2749
|
-
autoScroll = true
|
2711
|
+
autoScroll = true,
|
2712
|
+
unstable_scrollToBottomOnRunStart = true
|
2750
2713
|
}) => {
|
2751
2714
|
const divRef = _react.useRef.call(void 0, null);
|
2752
2715
|
const threadViewportStore = useThreadViewportStore();
|
@@ -2792,6 +2755,11 @@ var useThreadViewportAutoScroll = ({
|
|
2792
2755
|
useOnScrollToBottom(() => {
|
2793
2756
|
scrollToBottom("auto");
|
2794
2757
|
});
|
2758
|
+
const threadRuntime = useThreadRuntime();
|
2759
|
+
_react.useEffect.call(void 0, () => {
|
2760
|
+
if (!unstable_scrollToBottomOnRunStart) return void 0;
|
2761
|
+
return threadRuntime.unstable_on("run-start", focus);
|
2762
|
+
}, [unstable_scrollToBottomOnRunStart]);
|
2795
2763
|
return autoScrollRef;
|
2796
2764
|
};
|
2797
2765
|
|
@@ -2978,8 +2946,8 @@ var subscribeToMainThread = (runtime, callback) => {
|
|
2978
2946
|
|
2979
2947
|
|
2980
2948
|
// src/runtimes/core/BaseAssistantRuntimeCore.tsx
|
2981
|
-
var BaseAssistantRuntimeCore = (
|
2982
|
-
constructor(_thread) {;
|
2949
|
+
var BaseAssistantRuntimeCore = (_class6 = class {
|
2950
|
+
constructor(_thread) {;_class6.prototype.__init10.call(this);_class6.prototype.__init11.call(this);
|
2983
2951
|
this._thread = _thread;
|
2984
2952
|
this._thread = _thread;
|
2985
2953
|
}
|
@@ -2990,15 +2958,15 @@ var BaseAssistantRuntimeCore = (_class7 = class {
|
|
2990
2958
|
this._thread = thread;
|
2991
2959
|
this.subscriptionHandler();
|
2992
2960
|
}
|
2993
|
-
|
2961
|
+
__init10() {this._subscriptions = /* @__PURE__ */ new Set()}
|
2994
2962
|
subscribe(callback) {
|
2995
2963
|
this._subscriptions.add(callback);
|
2996
2964
|
return () => this._subscriptions.delete(callback);
|
2997
2965
|
}
|
2998
|
-
|
2966
|
+
__init11() {this.subscriptionHandler = () => {
|
2999
2967
|
for (const callback of this._subscriptions) callback();
|
3000
2968
|
}}
|
3001
|
-
},
|
2969
|
+
}, _class6);
|
3002
2970
|
|
3003
2971
|
// src/internal.ts
|
3004
2972
|
var internal_exports = {};
|
@@ -3018,12 +2986,12 @@ _chunkPZ5AY32Cjs.__export.call(void 0, internal_exports, {
|
|
3018
2986
|
|
3019
2987
|
// src/runtimes/composer/BaseComposerRuntimeCore.tsx
|
3020
2988
|
var isAttachmentComplete = (a) => a.status.type === "complete";
|
3021
|
-
var BaseComposerRuntimeCore = (
|
3022
|
-
|
2989
|
+
var BaseComposerRuntimeCore = (_class7 = class {constructor() { _class7.prototype.__init12.call(this);_class7.prototype.__init13.call(this);_class7.prototype.__init14.call(this);_class7.prototype.__init15.call(this); }
|
2990
|
+
__init12() {this.isEditing = true}
|
3023
2991
|
getAttachmentAccept() {
|
3024
2992
|
return _nullishCoalesce(_optionalChain([this, 'access', _152 => _152.getAttachmentAdapter, 'call', _153 => _153(), 'optionalAccess', _154 => _154.accept]), () => ( "*"));
|
3025
2993
|
}
|
3026
|
-
|
2994
|
+
__init13() {this._attachments = []}
|
3027
2995
|
set attachments(value) {
|
3028
2996
|
this._attachments = value;
|
3029
2997
|
this.notifySubscribers();
|
@@ -3034,7 +3002,7 @@ var BaseComposerRuntimeCore = (_class8 = class {constructor() { _class8.prototyp
|
|
3034
3002
|
get isEmpty() {
|
3035
3003
|
return !this.text.trim() && !this.attachments.length;
|
3036
3004
|
}
|
3037
|
-
|
3005
|
+
__init14() {this._text = ""}
|
3038
3006
|
get text() {
|
3039
3007
|
return this._text;
|
3040
3008
|
}
|
@@ -3087,7 +3055,7 @@ var BaseComposerRuntimeCore = (_class8 = class {constructor() { _class8.prototyp
|
|
3087
3055
|
this._attachments = this._attachments.toSpliced(index, 1);
|
3088
3056
|
this.notifySubscribers();
|
3089
3057
|
}
|
3090
|
-
|
3058
|
+
__init15() {this._subscriptions = /* @__PURE__ */ new Set()}
|
3091
3059
|
notifySubscribers() {
|
3092
3060
|
for (const callback of this._subscriptions) callback();
|
3093
3061
|
}
|
@@ -3095,16 +3063,16 @@ var BaseComposerRuntimeCore = (_class8 = class {constructor() { _class8.prototyp
|
|
3095
3063
|
this._subscriptions.add(callback);
|
3096
3064
|
return () => this._subscriptions.delete(callback);
|
3097
3065
|
}
|
3098
|
-
},
|
3066
|
+
}, _class7);
|
3099
3067
|
|
3100
3068
|
// src/runtimes/composer/DefaultThreadComposerRuntimeCore.tsx
|
3101
|
-
var DefaultThreadComposerRuntimeCore = (
|
3069
|
+
var DefaultThreadComposerRuntimeCore = (_class8 = class extends BaseComposerRuntimeCore {
|
3102
3070
|
constructor(runtime) {
|
3103
|
-
super();
|
3071
|
+
super();_class8.prototype.__init16.call(this);;
|
3104
3072
|
this.runtime = runtime;
|
3105
3073
|
this.connect();
|
3106
3074
|
}
|
3107
|
-
|
3075
|
+
__init16() {this._canCancel = false}
|
3108
3076
|
get canCancel() {
|
3109
3077
|
return this._canCancel;
|
3110
3078
|
}
|
@@ -3131,11 +3099,11 @@ var DefaultThreadComposerRuntimeCore = (_class9 = class extends BaseComposerRunt
|
|
3131
3099
|
async cancel() {
|
3132
3100
|
this.runtime.cancelRun();
|
3133
3101
|
}
|
3134
|
-
},
|
3102
|
+
}, _class8);
|
3135
3103
|
|
3136
3104
|
// src/utils/ProxyConfigProvider.ts
|
3137
|
-
var ProxyConfigProvider = (
|
3138
|
-
|
3105
|
+
var ProxyConfigProvider = (_class9 = class {constructor() { _class9.prototype.__init17.call(this); }
|
3106
|
+
__init17() {this._providers = /* @__PURE__ */ new Set()}
|
3139
3107
|
getModelConfig() {
|
3140
3108
|
return _chunkKVXP3Q6Kjs.mergeModelConfigs.call(void 0, this._providers);
|
3141
3109
|
}
|
@@ -3145,7 +3113,7 @@ var ProxyConfigProvider = (_class10 = class {constructor() { _class10.prototype.
|
|
3145
3113
|
this._providers.delete(provider);
|
3146
3114
|
};
|
3147
3115
|
}
|
3148
|
-
},
|
3116
|
+
}, _class9);
|
3149
3117
|
|
3150
3118
|
// src/utils/idUtils.tsx
|
3151
3119
|
var _nonsecure = require('nanoid/non-secure');
|
@@ -3212,11 +3180,11 @@ var findHead = (message) => {
|
|
3212
3180
|
if ("current" in message) return message;
|
3213
3181
|
return null;
|
3214
3182
|
};
|
3215
|
-
var MessageRepository = (
|
3216
|
-
|
3183
|
+
var MessageRepository = (_class10 = class {constructor() { _class10.prototype.__init18.call(this);_class10.prototype.__init19.call(this);_class10.prototype.__init20.call(this); }
|
3184
|
+
__init18() {this.messages = /* @__PURE__ */ new Map()}
|
3217
3185
|
// message_id -> item
|
3218
|
-
|
3219
|
-
|
3186
|
+
__init19() {this.head = null}
|
3187
|
+
__init20() {this.root = {
|
3220
3188
|
children: [],
|
3221
3189
|
next: null
|
3222
3190
|
}}
|
@@ -3394,7 +3362,7 @@ var MessageRepository = (_class11 = class {constructor() { _class11.prototype.__
|
|
3394
3362
|
}
|
3395
3363
|
this.resetHead(_nullishCoalesce(_nullishCoalesce(headId, () => ( _optionalChain([messages2, 'access', _176 => _176.at, 'call', _177 => _177(-1), 'optionalAccess', _178 => _178.message, 'access', _179 => _179.id]))), () => ( null)));
|
3396
3364
|
}
|
3397
|
-
},
|
3365
|
+
}, _class10);
|
3398
3366
|
|
3399
3367
|
// src/ui/base/tooltip-icon-button.tsx
|
3400
3368
|
|
@@ -3525,7 +3493,7 @@ var getThreadState = (runtime) => {
|
|
3525
3493
|
speech: runtime.speech
|
3526
3494
|
});
|
3527
3495
|
};
|
3528
|
-
var ThreadRuntimeImpl = (
|
3496
|
+
var ThreadRuntimeImpl = (_class11 = class {
|
3529
3497
|
// public path = "assistant.threads[main]"; // TODO
|
3530
3498
|
/**
|
3531
3499
|
* @deprecated Use `getState().threadId` instead. This will be removed in 0.6.0.
|
@@ -3579,7 +3547,7 @@ var ThreadRuntimeImpl = (_class12 = class {
|
|
3579
3547
|
return this._threadBinding.getState();
|
3580
3548
|
}
|
3581
3549
|
|
3582
|
-
constructor(threadBinding) {;
|
3550
|
+
constructor(threadBinding) {;_class11.prototype.__init21.call(this);_class11.prototype.__init22.call(this);
|
3583
3551
|
const stateBinding = new LazyMemoizeSubject({
|
3584
3552
|
getState: () => getThreadState(threadBinding.getState()),
|
3585
3553
|
subscribe: (callback) => threadBinding.subscribe(callback)
|
@@ -3587,10 +3555,11 @@ var ThreadRuntimeImpl = (_class12 = class {
|
|
3587
3555
|
this._threadBinding = {
|
3588
3556
|
getState: () => threadBinding.getState(),
|
3589
3557
|
getStateState: () => stateBinding.getState(),
|
3558
|
+
outerSubscribe: (callback) => threadBinding.outerSubscribe(callback),
|
3590
3559
|
subscribe: (callback) => threadBinding.subscribe(callback)
|
3591
3560
|
};
|
3592
3561
|
}
|
3593
|
-
|
3562
|
+
__init21() {this.composer = new ThreadComposerRuntimeImpl(
|
3594
3563
|
new NestedSubscriptionSubject({
|
3595
3564
|
getState: () => this._threadBinding.getState().composer,
|
3596
3565
|
subscribe: (callback) => this._threadBinding.subscribe(callback)
|
@@ -3699,7 +3668,21 @@ var ThreadRuntimeImpl = (_class12 = class {
|
|
3699
3668
|
this._threadBinding
|
3700
3669
|
);
|
3701
3670
|
}
|
3702
|
-
|
3671
|
+
__init22() {this._eventListenerNestedSubscriptions = /* @__PURE__ */ new Map()}
|
3672
|
+
unstable_on(event, callback) {
|
3673
|
+
let subject = this._eventListenerNestedSubscriptions.get(event);
|
3674
|
+
if (!subject) {
|
3675
|
+
subject = new NestedSubscriptionSubject({
|
3676
|
+
getState: () => ({
|
3677
|
+
subscribe: (callback2) => this._threadBinding.getState().unstable_on(event, callback2)
|
3678
|
+
}),
|
3679
|
+
subscribe: (callback2) => this._threadBinding.outerSubscribe(callback2)
|
3680
|
+
});
|
3681
|
+
this._eventListenerNestedSubscriptions.set(event, subject);
|
3682
|
+
}
|
3683
|
+
return subject.subscribe(callback);
|
3684
|
+
}
|
3685
|
+
}, _class11);
|
3703
3686
|
|
3704
3687
|
// src/api/AssistantRuntime.ts
|
3705
3688
|
var AssistantRuntimeImpl = class _AssistantRuntimeImpl {
|
@@ -3943,17 +3926,13 @@ function assistantDecoderStream() {
|
|
3943
3926
|
}
|
3944
3927
|
case "c" /* ToolCallDelta */: {
|
3945
3928
|
const { toolCallId, argsTextDelta } = value;
|
3946
|
-
|
3947
|
-
throw new Error(
|
3948
|
-
`Received tool call delta for unknown tool call "${toolCallId}".`
|
3949
|
-
);
|
3950
|
-
}
|
3929
|
+
const toolName = toolCallNames.get(toolCallId);
|
3951
3930
|
currentToolCall.argsText += argsTextDelta;
|
3952
3931
|
controller.enqueue({
|
3953
3932
|
type: "tool-call-delta",
|
3954
3933
|
toolCallType: "function",
|
3955
|
-
toolCallId
|
3956
|
-
toolName
|
3934
|
+
toolCallId,
|
3935
|
+
toolName,
|
3957
3936
|
argsTextDelta
|
3958
3937
|
});
|
3959
3938
|
break;
|
@@ -4090,7 +4069,7 @@ var useEdgeRuntime = (options) => {
|
|
4090
4069
|
};
|
4091
4070
|
|
4092
4071
|
// src/runtimes/local/shouldContinue.tsx
|
4093
|
-
var shouldContinue = (result) => _optionalChain([result, 'access',
|
4072
|
+
var shouldContinue = (result) => _optionalChain([result, 'access', _192 => _192.status, 'optionalAccess', _193 => _193.type]) === "requires-action" && result.status.reason === "tool-calls" && result.content.every((c) => c.type !== "tool-call" || !!c.result);
|
4094
4073
|
|
4095
4074
|
// src/runtimes/composer/DefaultEditComposerRuntimeCore.tsx
|
4096
4075
|
var DefaultEditComposerRuntimeCore = class extends BaseComposerRuntimeCore {
|
@@ -4110,7 +4089,7 @@ var DefaultEditComposerRuntimeCore = class extends BaseComposerRuntimeCore {
|
|
4110
4089
|
return true;
|
4111
4090
|
}
|
4112
4091
|
getAttachmentAdapter() {
|
4113
|
-
return _optionalChain([this, 'access',
|
4092
|
+
return _optionalChain([this, 'access', _194 => _194.runtime, 'access', _195 => _195.adapters, 'optionalAccess', _196 => _196.attachments]);
|
4114
4093
|
}
|
4115
4094
|
|
4116
4095
|
|
@@ -4134,8 +4113,8 @@ var DefaultEditComposerRuntimeCore = class extends BaseComposerRuntimeCore {
|
|
4134
4113
|
};
|
4135
4114
|
|
4136
4115
|
// src/runtimes/core/BaseThreadRuntimeCore.tsx
|
4137
|
-
var BaseThreadRuntimeCore = (
|
4138
|
-
constructor(configProvider) {;
|
4116
|
+
var BaseThreadRuntimeCore = (_class12 = class {
|
4117
|
+
constructor(configProvider) {;_class12.prototype.__init23.call(this);_class12.prototype.__init24.call(this);_class12.prototype.__init25.call(this);_class12.prototype.__init26.call(this);_class12.prototype.__init27.call(this);_class12.prototype.__init28.call(this);
|
4139
4118
|
this.configProvider = configProvider;
|
4140
4119
|
}
|
4141
4120
|
__init23() {this._subscriptions = /* @__PURE__ */ new Set()}
|
@@ -4162,18 +4141,23 @@ var BaseThreadRuntimeCore = (_class13 = class {
|
|
4162
4141
|
this.repository.getMessage(messageId)
|
4163
4142
|
)
|
4164
4143
|
);
|
4165
|
-
this.
|
4144
|
+
this._notifySubscribers();
|
4166
4145
|
}
|
4167
4146
|
getBranches(messageId) {
|
4168
4147
|
return this.repository.getBranches(messageId);
|
4169
4148
|
}
|
4170
4149
|
switchToBranch(branchId) {
|
4171
4150
|
this.repository.switchToBranch(branchId);
|
4172
|
-
this.
|
4151
|
+
this._notifySubscribers();
|
4173
4152
|
}
|
4174
|
-
|
4153
|
+
_notifySubscribers() {
|
4175
4154
|
for (const callback of this._subscriptions) callback();
|
4176
4155
|
}
|
4156
|
+
_notifyEventSubscribers(event) {
|
4157
|
+
const subscribers = this._eventSubscribers.get(event);
|
4158
|
+
if (!subscribers) return;
|
4159
|
+
for (const callback of subscribers) callback();
|
4160
|
+
}
|
4177
4161
|
subscribe(callback) {
|
4178
4162
|
this._subscriptions.add(callback);
|
4179
4163
|
return () => this._subscriptions.delete(callback);
|
@@ -4183,20 +4167,20 @@ var BaseThreadRuntimeCore = (_class13 = class {
|
|
4183
4167
|
return this._submittedFeedback[messageId];
|
4184
4168
|
}
|
4185
4169
|
submitFeedback({ messageId, type }) {
|
4186
|
-
const adapter = _optionalChain([this, 'access',
|
4170
|
+
const adapter = _optionalChain([this, 'access', _197 => _197.adapters, 'optionalAccess', _198 => _198.feedback]);
|
4187
4171
|
if (!adapter) throw new Error("Feedback adapter not configured");
|
4188
4172
|
const { message } = this.repository.getMessage(messageId);
|
4189
4173
|
adapter.submit({ message, type });
|
4190
4174
|
this._submittedFeedback[messageId] = { type };
|
4191
|
-
this.
|
4175
|
+
this._notifySubscribers();
|
4192
4176
|
}
|
4193
4177
|
|
4194
4178
|
|
4195
4179
|
speak(messageId) {
|
4196
|
-
const adapter = _optionalChain([this, 'access',
|
4180
|
+
const adapter = _optionalChain([this, 'access', _199 => _199.adapters, 'optionalAccess', _200 => _200.speech]);
|
4197
4181
|
if (!adapter) throw new Error("Speech adapter not configured");
|
4198
4182
|
const { message } = this.repository.getMessage(messageId);
|
4199
|
-
_optionalChain([this, 'access',
|
4183
|
+
_optionalChain([this, 'access', _201 => _201._stopSpeaking, 'optionalCall', _202 => _202()]);
|
4200
4184
|
const utterance = adapter.speak(message);
|
4201
4185
|
const unsub = utterance.subscribe(() => {
|
4202
4186
|
if (utterance.status.type === "ended") {
|
@@ -4205,10 +4189,10 @@ var BaseThreadRuntimeCore = (_class13 = class {
|
|
4205
4189
|
} else {
|
4206
4190
|
this.speech = { messageId, status: utterance.status };
|
4207
4191
|
}
|
4208
|
-
this.
|
4192
|
+
this._notifySubscribers();
|
4209
4193
|
});
|
4210
4194
|
this.speech = { messageId, status: utterance.status };
|
4211
|
-
this.
|
4195
|
+
this._notifySubscribers();
|
4212
4196
|
this._stopSpeaking = () => {
|
4213
4197
|
utterance.cancel();
|
4214
4198
|
unsub();
|
@@ -4219,21 +4203,34 @@ var BaseThreadRuntimeCore = (_class13 = class {
|
|
4219
4203
|
stopSpeaking() {
|
4220
4204
|
if (!this._stopSpeaking) throw new Error("No message is being spoken");
|
4221
4205
|
this._stopSpeaking();
|
4222
|
-
this.
|
4206
|
+
this._notifySubscribers();
|
4223
4207
|
}
|
4224
4208
|
export() {
|
4225
4209
|
return this.repository.export();
|
4226
4210
|
}
|
4227
4211
|
import(data) {
|
4228
4212
|
this.repository.import(data);
|
4229
|
-
this.
|
4213
|
+
this._notifySubscribers();
|
4230
4214
|
}
|
4231
|
-
|
4215
|
+
__init28() {this._eventSubscribers = /* @__PURE__ */ new Map()}
|
4216
|
+
unstable_on(event, callback) {
|
4217
|
+
const subscribers = this._eventSubscribers.get(event);
|
4218
|
+
if (!subscribers) {
|
4219
|
+
this._eventSubscribers.set(event, /* @__PURE__ */ new Set([callback]));
|
4220
|
+
} else {
|
4221
|
+
subscribers.add(callback);
|
4222
|
+
}
|
4223
|
+
return () => {
|
4224
|
+
const subscribers2 = this._eventSubscribers.get(event);
|
4225
|
+
subscribers2.delete(callback);
|
4226
|
+
};
|
4227
|
+
}
|
4228
|
+
}, _class12);
|
4232
4229
|
|
4233
4230
|
// src/runtimes/local/LocalThreadRuntimeCore.tsx
|
4234
|
-
var LocalThreadRuntimeCore = (
|
4231
|
+
var LocalThreadRuntimeCore = (_class13 = class extends BaseThreadRuntimeCore {
|
4235
4232
|
constructor(configProvider, adapter, { initialMessages, ...options }) {
|
4236
|
-
super(configProvider);
|
4233
|
+
super(configProvider);_class13.prototype.__init29.call(this);_class13.prototype.__init30.call(this);_class13.prototype.__init31.call(this);_class13.prototype.__init32.call(this);;
|
4237
4234
|
this.adapter = adapter;
|
4238
4235
|
this.threadId = generateId();
|
4239
4236
|
this.options = options;
|
@@ -4246,7 +4243,7 @@ var LocalThreadRuntimeCore = (_class14 = class extends BaseThreadRuntimeCore {
|
|
4246
4243
|
}
|
4247
4244
|
}
|
4248
4245
|
}
|
4249
|
-
|
4246
|
+
__init29() {this.capabilities = {
|
4250
4247
|
switchToBranch: true,
|
4251
4248
|
edit: true,
|
4252
4249
|
reload: true,
|
@@ -4256,10 +4253,10 @@ var LocalThreadRuntimeCore = (_class14 = class extends BaseThreadRuntimeCore {
|
|
4256
4253
|
attachments: false,
|
4257
4254
|
feedback: false
|
4258
4255
|
}}
|
4259
|
-
|
4256
|
+
__init30() {this.abortController = null}
|
4260
4257
|
|
4261
|
-
|
4262
|
-
|
4258
|
+
__init31() {this.isDisabled = false}
|
4259
|
+
__init32() {this.suggestions = []}
|
4263
4260
|
get adapters() {
|
4264
4261
|
return this.options.adapters;
|
4265
4262
|
}
|
@@ -4273,22 +4270,22 @@ var LocalThreadRuntimeCore = (_class14 = class extends BaseThreadRuntimeCore {
|
|
4273
4270
|
set options({ initialMessages, ...options }) {
|
4274
4271
|
this._options = options;
|
4275
4272
|
let hasUpdates = false;
|
4276
|
-
const canSpeak = _optionalChain([options, 'access',
|
4273
|
+
const canSpeak = _optionalChain([options, 'access', _203 => _203.adapters, 'optionalAccess', _204 => _204.speech]) !== void 0;
|
4277
4274
|
if (this.capabilities.speech !== canSpeak) {
|
4278
4275
|
this.capabilities.speech = canSpeak;
|
4279
4276
|
hasUpdates = true;
|
4280
4277
|
}
|
4281
|
-
const canAttach = _optionalChain([options, 'access',
|
4278
|
+
const canAttach = _optionalChain([options, 'access', _205 => _205.adapters, 'optionalAccess', _206 => _206.attachments]) !== void 0;
|
4282
4279
|
if (this.capabilities.attachments !== canAttach) {
|
4283
4280
|
this.capabilities.attachments = canAttach;
|
4284
4281
|
hasUpdates = true;
|
4285
4282
|
}
|
4286
|
-
const canFeedback = _optionalChain([options, 'access',
|
4283
|
+
const canFeedback = _optionalChain([options, 'access', _207 => _207.adapters, 'optionalAccess', _208 => _208.feedback]) !== void 0;
|
4287
4284
|
if (this.capabilities.feedback !== canFeedback) {
|
4288
4285
|
this.capabilities.feedback = canFeedback;
|
4289
4286
|
hasUpdates = true;
|
4290
4287
|
}
|
4291
|
-
if (hasUpdates) this.
|
4288
|
+
if (hasUpdates) this._notifySubscribers();
|
4292
4289
|
}
|
4293
4290
|
async append(message) {
|
4294
4291
|
const newMessage = fromCoreMessage(message, {
|
@@ -4299,7 +4296,7 @@ var LocalThreadRuntimeCore = (_class14 = class extends BaseThreadRuntimeCore {
|
|
4299
4296
|
await this.startRun(newMessage.id);
|
4300
4297
|
} else {
|
4301
4298
|
this.repository.resetHead(newMessage.id);
|
4302
|
-
this.
|
4299
|
+
this._notifySubscribers();
|
4303
4300
|
}
|
4304
4301
|
}
|
4305
4302
|
async startRun(parentId) {
|
@@ -4312,19 +4309,20 @@ var LocalThreadRuntimeCore = (_class14 = class extends BaseThreadRuntimeCore {
|
|
4312
4309
|
content: [],
|
4313
4310
|
createdAt: /* @__PURE__ */ new Date()
|
4314
4311
|
};
|
4312
|
+
this._notifyEventSubscribers("run-start");
|
4315
4313
|
do {
|
4316
4314
|
message = await this.performRoundtrip(parentId, message);
|
4317
4315
|
} while (shouldContinue(message));
|
4318
4316
|
}
|
4319
4317
|
async performRoundtrip(parentId, message) {
|
4320
4318
|
const messages2 = this.repository.getMessages();
|
4321
|
-
_optionalChain([this, 'access',
|
4319
|
+
_optionalChain([this, 'access', _209 => _209.abortController, 'optionalAccess', _210 => _210.abort, 'call', _211 => _211()]);
|
4322
4320
|
this.abortController = new AbortController();
|
4323
4321
|
const initialContent = message.content;
|
4324
|
-
const initialSteps = _optionalChain([message, 'access',
|
4325
|
-
const initalCustom = _optionalChain([message, 'access',
|
4322
|
+
const initialSteps = _optionalChain([message, 'access', _212 => _212.metadata, 'optionalAccess', _213 => _213.steps]);
|
4323
|
+
const initalCustom = _optionalChain([message, 'access', _214 => _214.metadata, 'optionalAccess', _215 => _215.custom]);
|
4326
4324
|
const updateMessage = (m) => {
|
4327
|
-
const newSteps = _optionalChain([m, 'access',
|
4325
|
+
const newSteps = _optionalChain([m, 'access', _216 => _216.metadata, 'optionalAccess', _217 => _217.steps]) || _optionalChain([m, 'access', _218 => _218.metadata, 'optionalAccess', _219 => _219.roundtrips]);
|
4328
4326
|
const steps2 = newSteps ? [..._nullishCoalesce(initialSteps, () => ( [])), ...newSteps] : void 0;
|
4329
4327
|
message = {
|
4330
4328
|
...message,
|
@@ -4336,17 +4334,17 @@ var LocalThreadRuntimeCore = (_class14 = class extends BaseThreadRuntimeCore {
|
|
4336
4334
|
metadata: {
|
4337
4335
|
...message.metadata,
|
4338
4336
|
...steps2 ? { roundtrips: steps2, steps: steps2 } : void 0,
|
4339
|
-
..._optionalChain([m, 'access',
|
4337
|
+
..._optionalChain([m, 'access', _220 => _220.metadata, 'optionalAccess', _221 => _221.custom]) ? {
|
4340
4338
|
custom: { ..._nullishCoalesce(initalCustom, () => ( {})), ...m.metadata.custom }
|
4341
4339
|
} : void 0
|
4342
4340
|
}
|
4343
4341
|
} : void 0
|
4344
4342
|
};
|
4345
4343
|
this.repository.addOrUpdateMessage(parentId, message);
|
4346
|
-
this.
|
4344
|
+
this._notifySubscribers();
|
4347
4345
|
};
|
4348
4346
|
const maxSteps = this.options.maxSteps ? this.options.maxSteps : (_nullishCoalesce(this.options.maxToolRoundtrips, () => ( 1))) + 1;
|
4349
|
-
const steps = _nullishCoalesce(_optionalChain([message, 'access',
|
4347
|
+
const steps = _nullishCoalesce(_optionalChain([message, 'access', _222 => _222.metadata, 'optionalAccess', _223 => _223.steps, 'optionalAccess', _224 => _224.length]), () => ( 0));
|
4350
4348
|
if (steps >= maxSteps) {
|
4351
4349
|
updateMessage({
|
4352
4350
|
status: {
|
@@ -4398,7 +4396,7 @@ var LocalThreadRuntimeCore = (_class14 = class extends BaseThreadRuntimeCore {
|
|
4398
4396
|
return message;
|
4399
4397
|
}
|
4400
4398
|
cancelRun() {
|
4401
|
-
_optionalChain([this, 'access',
|
4399
|
+
_optionalChain([this, 'access', _225 => _225.abortController, 'optionalAccess', _226 => _226.abort, 'call', _227 => _227()]);
|
4402
4400
|
this.abortController = null;
|
4403
4401
|
}
|
4404
4402
|
addToolResult({
|
@@ -4434,7 +4432,7 @@ var LocalThreadRuntimeCore = (_class14 = class extends BaseThreadRuntimeCore {
|
|
4434
4432
|
this.performRoundtrip(parentId, message);
|
4435
4433
|
}
|
4436
4434
|
}
|
4437
|
-
},
|
4435
|
+
}, _class13);
|
4438
4436
|
|
4439
4437
|
// src/runtimes/local/LocalRuntimeCore.tsx
|
4440
4438
|
var LocalRuntimeCore = class extends BaseAssistantRuntimeCore {
|
@@ -4454,6 +4452,7 @@ var LocalRuntimeCore = class extends BaseAssistantRuntimeCore {
|
|
4454
4452
|
this.thread.adapter,
|
4455
4453
|
options
|
4456
4454
|
);
|
4455
|
+
this.thread._notifyEventSubscribers("switched-to");
|
4457
4456
|
}
|
4458
4457
|
switchToThread(threadId) {
|
4459
4458
|
if (threadId !== null) {
|
@@ -4469,7 +4468,7 @@ var LocalRuntimeCore = class extends BaseAssistantRuntimeCore {
|
|
4469
4468
|
const messages2 = fromCoreMessages(initialMessages);
|
4470
4469
|
this.thread.import({
|
4471
4470
|
messages: messages2.map((m, idx) => ({
|
4472
|
-
parentId: _nullishCoalesce(_optionalChain([messages2, 'access',
|
4471
|
+
parentId: _nullishCoalesce(_optionalChain([messages2, 'access', _228 => _228[idx - 1], 'optionalAccess', _229 => _229.id]), () => ( null)),
|
4473
4472
|
message: m
|
4474
4473
|
}))
|
4475
4474
|
});
|
@@ -4511,8 +4510,8 @@ var getExternalStoreMessage = (message) => {
|
|
4511
4510
|
};
|
4512
4511
|
|
4513
4512
|
// src/runtimes/external-store/ThreadMessageConverter.ts
|
4514
|
-
var ThreadMessageConverter = (
|
4515
|
-
|
4513
|
+
var ThreadMessageConverter = (_class14 = class {constructor() { _class14.prototype.__init33.call(this); }
|
4514
|
+
__init33() {this.cache = /* @__PURE__ */ new WeakMap()}
|
4516
4515
|
convertMessages(messages2, converter) {
|
4517
4516
|
return messages2.map((m, idx) => {
|
4518
4517
|
const cached = this.cache.get(m);
|
@@ -4521,7 +4520,7 @@ var ThreadMessageConverter = (_class15 = class {constructor() { _class15.prototy
|
|
4521
4520
|
return newMessage;
|
4522
4521
|
});
|
4523
4522
|
}
|
4524
|
-
},
|
4523
|
+
}, _class14);
|
4525
4524
|
|
4526
4525
|
// src/runtimes/external-store/auto-status.tsx
|
4527
4526
|
var AUTO_STATUS_RUNNING = Object.freeze({ type: "running" });
|
@@ -4609,11 +4608,11 @@ var fromThreadMessageLike = (like, fallbackId, fallbackStatus) => {
|
|
4609
4608
|
// src/runtimes/external-store/ExternalStoreThreadRuntimeCore.tsx
|
4610
4609
|
var EMPTY_ARRAY2 = Object.freeze([]);
|
4611
4610
|
var hasUpcomingMessage = (isRunning, messages2) => {
|
4612
|
-
return isRunning && _optionalChain([messages2, 'access',
|
4611
|
+
return isRunning && _optionalChain([messages2, 'access', _230 => _230[messages2.length - 1], 'optionalAccess', _231 => _231.role]) !== "assistant";
|
4613
4612
|
};
|
4614
|
-
var ExternalStoreThreadRuntimeCore = (
|
4615
|
-
|
4616
|
-
|
4613
|
+
var ExternalStoreThreadRuntimeCore = (_class15 = class extends BaseThreadRuntimeCore {
|
4614
|
+
__init34() {this.assistantOptimisticId = null}
|
4615
|
+
__init35() {this._capabilities = {
|
4617
4616
|
switchToBranch: false,
|
4618
4617
|
edit: false,
|
4619
4618
|
reload: false,
|
@@ -4635,9 +4634,9 @@ var ExternalStoreThreadRuntimeCore = (_class16 = class extends BaseThreadRuntime
|
|
4635
4634
|
get adapters() {
|
4636
4635
|
return this._store.adapters;
|
4637
4636
|
}
|
4638
|
-
|
4639
|
-
|
4640
|
-
|
4637
|
+
__init36() {this.suggestions = []}
|
4638
|
+
__init37() {this.extras = void 0}
|
4639
|
+
__init38() {this._converter = new ThreadMessageConverter()}
|
4641
4640
|
|
4642
4641
|
beginEdit(messageId) {
|
4643
4642
|
if (!this.store.onEdit)
|
@@ -4645,7 +4644,7 @@ var ExternalStoreThreadRuntimeCore = (_class16 = class extends BaseThreadRuntime
|
|
4645
4644
|
super.beginEdit(messageId);
|
4646
4645
|
}
|
4647
4646
|
constructor(configProvider, store) {
|
4648
|
-
super(configProvider);
|
4647
|
+
super(configProvider);_class15.prototype.__init34.call(this);_class15.prototype.__init35.call(this);_class15.prototype.__init36.call(this);_class15.prototype.__init37.call(this);_class15.prototype.__init38.call(this);_class15.prototype.__init39.call(this);;
|
4649
4648
|
this.store = store;
|
4650
4649
|
}
|
4651
4650
|
get store() {
|
@@ -4665,17 +4664,17 @@ var ExternalStoreThreadRuntimeCore = (_class16 = class extends BaseThreadRuntime
|
|
4665
4664
|
edit: this._store.onEdit !== void 0,
|
4666
4665
|
reload: this._store.onReload !== void 0,
|
4667
4666
|
cancel: this._store.onCancel !== void 0,
|
4668
|
-
speech: _optionalChain([this, 'access',
|
4669
|
-
unstable_copy: _optionalChain([this, 'access',
|
4667
|
+
speech: _optionalChain([this, 'access', _235 => _235._store, 'access', _236 => _236.adapters, 'optionalAccess', _237 => _237.speech]) !== void 0,
|
4668
|
+
unstable_copy: _optionalChain([this, 'access', _238 => _238._store, 'access', _239 => _239.unstable_capabilities, 'optionalAccess', _240 => _240.copy]) !== false,
|
4670
4669
|
// default true
|
4671
|
-
attachments: !!_optionalChain([this, 'access',
|
4672
|
-
feedback: !!_optionalChain([this, 'access',
|
4670
|
+
attachments: !!_optionalChain([this, 'access', _241 => _241.store, 'access', _242 => _242.adapters, 'optionalAccess', _243 => _243.attachments]),
|
4671
|
+
feedback: !!_optionalChain([this, 'access', _244 => _244.store, 'access', _245 => _245.adapters, 'optionalAccess', _246 => _246.feedback])
|
4673
4672
|
};
|
4674
4673
|
if (oldStore) {
|
4675
4674
|
if (oldStore.convertMessage !== store.convertMessage) {
|
4676
4675
|
this._converter = new ThreadMessageConverter();
|
4677
4676
|
} else if (oldStore.isRunning === store.isRunning && oldStore.messages === store.messages) {
|
4678
|
-
this.
|
4677
|
+
this._notifySubscribers();
|
4679
4678
|
return;
|
4680
4679
|
}
|
4681
4680
|
}
|
@@ -4696,7 +4695,7 @@ var ExternalStoreThreadRuntimeCore = (_class16 = class extends BaseThreadRuntime
|
|
4696
4695
|
for (let i = 0; i < messages2.length; i++) {
|
4697
4696
|
const message = messages2[i];
|
4698
4697
|
const parent = messages2[i - 1];
|
4699
|
-
this.repository.addOrUpdateMessage(_nullishCoalesce(_optionalChain([parent, 'optionalAccess',
|
4698
|
+
this.repository.addOrUpdateMessage(_nullishCoalesce(_optionalChain([parent, 'optionalAccess', _247 => _247.id]), () => ( null)), message);
|
4700
4699
|
}
|
4701
4700
|
if (this.assistantOptimisticId) {
|
4702
4701
|
this.repository.deleteMessage(this.assistantOptimisticId);
|
@@ -4704,7 +4703,7 @@ var ExternalStoreThreadRuntimeCore = (_class16 = class extends BaseThreadRuntime
|
|
4704
4703
|
}
|
4705
4704
|
if (hasUpcomingMessage(isRunning, messages2)) {
|
4706
4705
|
this.assistantOptimisticId = this.repository.appendOptimisticMessage(
|
4707
|
-
_nullishCoalesce(_optionalChain([messages2, 'access',
|
4706
|
+
_nullishCoalesce(_optionalChain([messages2, 'access', _248 => _248.at, 'call', _249 => _249(-1), 'optionalAccess', _250 => _250.id]), () => ( null)),
|
4708
4707
|
{
|
4709
4708
|
role: "assistant",
|
4710
4709
|
content: []
|
@@ -4712,10 +4711,10 @@ var ExternalStoreThreadRuntimeCore = (_class16 = class extends BaseThreadRuntime
|
|
4712
4711
|
);
|
4713
4712
|
}
|
4714
4713
|
this.repository.resetHead(
|
4715
|
-
_nullishCoalesce(_nullishCoalesce(this.assistantOptimisticId, () => ( _optionalChain([messages2, 'access',
|
4714
|
+
_nullishCoalesce(_nullishCoalesce(this.assistantOptimisticId, () => ( _optionalChain([messages2, 'access', _251 => _251.at, 'call', _252 => _252(-1), 'optionalAccess', _253 => _253.id]))), () => ( null))
|
4716
4715
|
);
|
4717
4716
|
this._messages = this.repository.getMessages();
|
4718
|
-
this.
|
4717
|
+
this._notifySubscribers();
|
4719
4718
|
}
|
4720
4719
|
switchToBranch(branchId) {
|
4721
4720
|
if (!this._store.setMessages)
|
@@ -4724,7 +4723,7 @@ var ExternalStoreThreadRuntimeCore = (_class16 = class extends BaseThreadRuntime
|
|
4724
4723
|
this.updateMessages(this.repository.getMessages());
|
4725
4724
|
}
|
4726
4725
|
async append(message) {
|
4727
|
-
if (message.parentId !== (_nullishCoalesce(_optionalChain([this, 'access',
|
4726
|
+
if (message.parentId !== (_nullishCoalesce(_optionalChain([this, 'access', _254 => _254.messages, 'access', _255 => _255.at, 'call', _256 => _256(-1), 'optionalAccess', _257 => _257.id]), () => ( null)))) {
|
4728
4727
|
if (!this._store.onEdit)
|
4729
4728
|
throw new Error("Runtime does not support editing messages.");
|
4730
4729
|
await this._store.onEdit(message);
|
@@ -4747,14 +4746,14 @@ var ExternalStoreThreadRuntimeCore = (_class16 = class extends BaseThreadRuntime
|
|
4747
4746
|
}
|
4748
4747
|
let messages2 = this.repository.getMessages();
|
4749
4748
|
const previousMessage = messages2[messages2.length - 1];
|
4750
|
-
if (_optionalChain([previousMessage, 'optionalAccess',
|
4749
|
+
if (_optionalChain([previousMessage, 'optionalAccess', _258 => _258.role]) === "user" && previousMessage.id === _optionalChain([messages2, 'access', _259 => _259.at, 'call', _260 => _260(-1), 'optionalAccess', _261 => _261.id])) {
|
4751
4750
|
this.repository.deleteMessage(previousMessage.id);
|
4752
4751
|
if (!this.composer.text.trim()) {
|
4753
4752
|
this.composer.setText(getThreadMessageText(previousMessage));
|
4754
4753
|
}
|
4755
4754
|
messages2 = this.repository.getMessages();
|
4756
4755
|
} else {
|
4757
|
-
this.
|
4756
|
+
this._notifySubscribers();
|
4758
4757
|
}
|
4759
4758
|
setTimeout(() => {
|
4760
4759
|
this.updateMessages(messages2);
|
@@ -4765,12 +4764,12 @@ var ExternalStoreThreadRuntimeCore = (_class16 = class extends BaseThreadRuntime
|
|
4765
4764
|
throw new Error("Runtime does not support tool results.");
|
4766
4765
|
this._store.onAddToolResult(options);
|
4767
4766
|
}
|
4768
|
-
|
4769
|
-
_optionalChain([this, 'access',
|
4767
|
+
__init39() {this.updateMessages = (messages2) => {
|
4768
|
+
_optionalChain([this, 'access', _262 => _262._store, 'access', _263 => _263.setMessages, 'optionalCall', _264 => _264(
|
4770
4769
|
messages2.flatMap(getExternalStoreMessage).filter((m) => m != null)
|
4771
4770
|
)]);
|
4772
4771
|
}}
|
4773
|
-
},
|
4772
|
+
}, _class15);
|
4774
4773
|
|
4775
4774
|
// src/runtimes/external-store/ExternalStoreRuntimeCore.tsx
|
4776
4775
|
var ExternalStoreRuntimeCore = class extends BaseAssistantRuntimeCore {
|
@@ -4797,6 +4796,7 @@ var ExternalStoreRuntimeCore = class extends BaseAssistantRuntimeCore {
|
|
4797
4796
|
}
|
4798
4797
|
);
|
4799
4798
|
await this.thread.store.onSwitchToNewThread();
|
4799
|
+
this.thread._notifyEventSubscribers("switched-to");
|
4800
4800
|
}
|
4801
4801
|
async switchToThread(threadId) {
|
4802
4802
|
if (threadId !== null) {
|
@@ -4810,7 +4810,8 @@ var ExternalStoreRuntimeCore = class extends BaseAssistantRuntimeCore {
|
|
4810
4810
|
// ignore messages until rerender
|
4811
4811
|
}
|
4812
4812
|
);
|
4813
|
-
this.thread.store.onSwitchToThread(threadId);
|
4813
|
+
await this.thread.store.onSwitchToThread(threadId);
|
4814
|
+
this.thread._notifyEventSubscribers("switched-to");
|
4814
4815
|
} else {
|
4815
4816
|
this.switchToNewThread();
|
4816
4817
|
}
|
@@ -5051,8 +5052,8 @@ var WebSpeechSynthesisAdapter = class {
|
|
5051
5052
|
};
|
5052
5053
|
|
5053
5054
|
// src/runtimes/attachment/SimpleImageAttachmentAdapter.ts
|
5054
|
-
var SimpleImageAttachmentAdapter = (
|
5055
|
-
|
5055
|
+
var SimpleImageAttachmentAdapter = (_class16 = class {constructor() { _class16.prototype.__init40.call(this); }
|
5056
|
+
__init40() {this.accept = "image/*"}
|
5056
5057
|
async add(state) {
|
5057
5058
|
return {
|
5058
5059
|
id: state.file.name,
|
@@ -5077,7 +5078,7 @@ var SimpleImageAttachmentAdapter = (_class17 = class {constructor() { _class17.p
|
|
5077
5078
|
}
|
5078
5079
|
async remove() {
|
5079
5080
|
}
|
5080
|
-
},
|
5081
|
+
}, _class16);
|
5081
5082
|
var getFileDataURL = (file) => new Promise((resolve, reject) => {
|
5082
5083
|
const reader = new FileReader();
|
5083
5084
|
reader.onload = () => resolve(reader.result);
|
@@ -5086,8 +5087,8 @@ var getFileDataURL = (file) => new Promise((resolve, reject) => {
|
|
5086
5087
|
});
|
5087
5088
|
|
5088
5089
|
// src/runtimes/attachment/SimpleTextAttachmentAdapter.ts
|
5089
|
-
var SimpleTextAttachmentAdapter = (
|
5090
|
-
|
5090
|
+
var SimpleTextAttachmentAdapter = (_class17 = class {constructor() { _class17.prototype.__init41.call(this); }
|
5091
|
+
__init41() {this.accept = "text/plain,text/html,text/markdown,text/csv,text/xml,text/json,text/css"}
|
5091
5092
|
async add(state) {
|
5092
5093
|
return {
|
5093
5094
|
id: state.file.name,
|
@@ -5114,7 +5115,7 @@ ${await getFileText(attachment.file)}
|
|
5114
5115
|
}
|
5115
5116
|
async remove() {
|
5116
5117
|
}
|
5117
|
-
},
|
5118
|
+
}, _class17);
|
5118
5119
|
var getFileText = (file) => new Promise((resolve, reject) => {
|
5119
5120
|
const reader = new FileReader();
|
5120
5121
|
reader.onload = () => resolve(reader.result);
|
@@ -5215,7 +5216,7 @@ var ThreadConfigProvider = ({
|
|
5215
5216
|
}) => {
|
5216
5217
|
const hasAssistant = !!useAssistantRuntime({ optional: true });
|
5217
5218
|
const configProvider = config && Object.keys(_nullishCoalesce(config, () => ( {}))).length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ThreadConfigContext.Provider, { value: config, children }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children });
|
5218
|
-
if (!_optionalChain([config, 'optionalAccess',
|
5219
|
+
if (!_optionalChain([config, 'optionalAccess', _265 => _265.runtime])) return configProvider;
|
5219
5220
|
if (hasAssistant) {
|
5220
5221
|
throw new Error(
|
5221
5222
|
"You provided a runtime to <Thread> while simulataneously using <AssistantRuntimeProvider>. This is not allowed."
|
@@ -5543,7 +5544,7 @@ var AssistantMessageContent = _react.forwardRef.call(void 0, ({ components: comp
|
|
5543
5544
|
{
|
5544
5545
|
components: {
|
5545
5546
|
...componentsProp,
|
5546
|
-
Text: _nullishCoalesce(_nullishCoalesce(_optionalChain([componentsProp, 'optionalAccess',
|
5547
|
+
Text: _nullishCoalesce(_nullishCoalesce(_optionalChain([componentsProp, 'optionalAccess', _266 => _266.Text]), () => ( components.Text)), () => ( content_part_default.Text)),
|
5547
5548
|
tools: toolsComponents
|
5548
5549
|
}
|
5549
5550
|
}
|
@@ -5654,7 +5655,7 @@ var useAttachmentSrc = () => {
|
|
5654
5655
|
const { file, src } = useAttachment((a) => {
|
5655
5656
|
if (a.type !== "image") return {};
|
5656
5657
|
if (a.file) return { file: a.file };
|
5657
|
-
const src2 = _optionalChain([a, 'access',
|
5658
|
+
const src2 = _optionalChain([a, 'access', _267 => _267.content, 'optionalAccess', _268 => _268.filter, 'call', _269 => _269((c) => c.type === "image"), 'access', _270 => _270[0], 'optionalAccess', _271 => _271.image]);
|
5658
5659
|
if (!src2) return {};
|
5659
5660
|
return { src: src2 };
|
5660
5661
|
});
|
@@ -5798,7 +5799,7 @@ var ComposerAttachments = ({ components }) => {
|
|
5798
5799
|
{
|
5799
5800
|
components: {
|
5800
5801
|
...components,
|
5801
|
-
Attachment: _nullishCoalesce(_optionalChain([components, 'optionalAccess',
|
5802
|
+
Attachment: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _272 => _272.Attachment]), () => ( attachment_default))
|
5802
5803
|
}
|
5803
5804
|
}
|
5804
5805
|
) });
|
@@ -5926,7 +5927,7 @@ var ThreadWelcomeSuggestions = () => {
|
|
5926
5927
|
const suggestions2 = useThread((t) => t.suggestions);
|
5927
5928
|
const { welcome: { suggestions } = {} } = useThreadConfig();
|
5928
5929
|
const finalSuggestions = suggestions2.length ? suggestions2 : suggestions;
|
5929
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ThreadWelcomeSuggestionContainer, { children: _optionalChain([finalSuggestions, 'optionalAccess',
|
5930
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ThreadWelcomeSuggestionContainer, { children: _optionalChain([finalSuggestions, 'optionalAccess', _273 => _273.map, 'call', _274 => _274((suggestion, idx) => {
|
5930
5931
|
const key = `${suggestion.prompt}-${idx}`;
|
5931
5932
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ThreadWelcomeSuggestion, { suggestion }, key);
|
5932
5933
|
})]) });
|
@@ -6004,7 +6005,7 @@ var UserMessageContent = _react.forwardRef.call(void 0, ({ components, ...props
|
|
6004
6005
|
{
|
6005
6006
|
components: {
|
6006
6007
|
...components,
|
6007
|
-
Text: _nullishCoalesce(_optionalChain([components, 'optionalAccess',
|
6008
|
+
Text: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _275 => _275.Text]), () => ( content_part_default.Text))
|
6008
6009
|
}
|
6009
6010
|
}
|
6010
6011
|
) });
|
@@ -6021,7 +6022,7 @@ var UserMessageAttachments = ({
|
|
6021
6022
|
{
|
6022
6023
|
components: {
|
6023
6024
|
...components,
|
6024
|
-
Attachment: _nullishCoalesce(_optionalChain([components, 'optionalAccess',
|
6025
|
+
Attachment: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _276 => _276.Attachment]), () => ( attachment_default))
|
6025
6026
|
}
|
6026
6027
|
}
|
6027
6028
|
) }) });
|
@@ -6124,10 +6125,10 @@ var ThreadMessages = ({ components, unstable_flexGrowDiv: flexGrowDiv = true, ..
|
|
6124
6125
|
thread_exports.Messages,
|
6125
6126
|
{
|
6126
6127
|
components: {
|
6127
|
-
UserMessage: _nullishCoalesce(_optionalChain([components, 'optionalAccess',
|
6128
|
-
EditComposer: _nullishCoalesce(_optionalChain([components, 'optionalAccess',
|
6129
|
-
AssistantMessage: _nullishCoalesce(_optionalChain([components, 'optionalAccess',
|
6130
|
-
SystemMessage: _nullishCoalesce(_optionalChain([components, 'optionalAccess',
|
6128
|
+
UserMessage: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _277 => _277.UserMessage]), () => ( user_message_default)),
|
6129
|
+
EditComposer: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _278 => _278.EditComposer]), () => ( edit_composer_default)),
|
6130
|
+
AssistantMessage: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _279 => _279.AssistantMessage]), () => ( assistant_message_default)),
|
6131
|
+
SystemMessage: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _280 => _280.SystemMessage]), () => ( SystemMessage))
|
6131
6132
|
},
|
6132
6133
|
...rest
|
6133
6134
|
}
|
@@ -6138,7 +6139,7 @@ var ThreadMessages = ({ components, unstable_flexGrowDiv: flexGrowDiv = true, ..
|
|
6138
6139
|
ThreadMessages.displayName = "ThreadMessages";
|
6139
6140
|
var ThreadFollowupSuggestions = () => {
|
6140
6141
|
const suggestions = useThread((t) => t.suggestions);
|
6141
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, thread_exports.If, { empty: false, running: false, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "aui-thread-followup-suggestions", children: _optionalChain([suggestions, 'optionalAccess',
|
6142
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, thread_exports.If, { empty: false, running: false, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "aui-thread-followup-suggestions", children: _optionalChain([suggestions, 'optionalAccess', _281 => _281.map, 'call', _282 => _282((suggestion, idx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
6142
6143
|
thread_exports.Suggestion,
|
6143
6144
|
{
|
6144
6145
|
className: "aui-thread-followup-suggestion",
|