@assistant-ui/react 0.5.74 → 0.5.75
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/index.d.mts +521 -181
- package/dist/index.d.ts +521 -181
- package/dist/index.js +219 -182
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +152 -115
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
@@ -604,20 +604,13 @@ var useActionBarReload = () => {
|
|
604
604
|
// src/primitive-hooks/actionBar/useActionBarSpeak.tsx
|
605
605
|
|
606
606
|
var useActionBarSpeak = () => {
|
607
|
-
const messageStore = useMessageStore();
|
608
|
-
const editComposerStore = useEditComposerStore();
|
609
607
|
const messageRunime = useMessageRuntime();
|
610
|
-
const messageUtilsStore = useMessageUtilsStore();
|
611
|
-
const hasSpeakableContent = useCombinedStore(
|
612
|
-
[messageStore, editComposerStore],
|
613
|
-
(message, c) => {
|
614
|
-
return !c.isEditing && (message.role !== "assistant" || message.status.type !== "running") && message.content.some((c2) => c2.type === "text" && c2.text.length > 0);
|
615
|
-
}
|
616
|
-
);
|
617
608
|
const callback = _react.useCallback.call(void 0, async () => {
|
618
|
-
|
619
|
-
|
620
|
-
|
609
|
+
messageRunime.speak();
|
610
|
+
}, [messageRunime]);
|
611
|
+
const hasSpeakableContent = useMessage((m) => {
|
612
|
+
return (m.role !== "assistant" || m.status.type !== "running") && m.content.some((c) => c.type === "text" && c.text.length > 0);
|
613
|
+
});
|
621
614
|
if (!hasSpeakableContent) return null;
|
622
615
|
return callback;
|
623
616
|
};
|
@@ -625,11 +618,11 @@ var useActionBarSpeak = () => {
|
|
625
618
|
// src/primitive-hooks/actionBar/useActionBarStopSpeaking.tsx
|
626
619
|
|
627
620
|
var useActionBarStopSpeaking = () => {
|
628
|
-
const
|
629
|
-
const isSpeaking =
|
621
|
+
const messageRuntime = useMessageRuntime();
|
622
|
+
const isSpeaking = useMessage((u) => u.speech != null);
|
630
623
|
const callback = _react.useCallback.call(void 0, async () => {
|
631
|
-
|
632
|
-
}, [
|
624
|
+
messageRuntime.stopSpeaking();
|
625
|
+
}, [messageRuntime]);
|
633
626
|
if (!isSpeaking) return null;
|
634
627
|
return callback;
|
635
628
|
};
|
@@ -809,7 +802,7 @@ var useMessageIf = (props) => {
|
|
809
802
|
const messageUtilsStore = useMessageUtilsStore();
|
810
803
|
return useCombinedStore(
|
811
804
|
[messageStore, messageUtilsStore],
|
812
|
-
({ role, attachments, branchCount, isLast }, { isCopied, isHovering,
|
805
|
+
({ role, attachments, branchCount, isLast, speech }, { isCopied, isHovering, submittedFeedback }) => {
|
813
806
|
if (props.hasBranches === true && branchCount < 2) return false;
|
814
807
|
if (props.user && role !== "user") return false;
|
815
808
|
if (props.assistant && role !== "assistant") return false;
|
@@ -817,8 +810,8 @@ var useMessageIf = (props) => {
|
|
817
810
|
if (props.lastOrHover === true && !isHovering && !isLast) return false;
|
818
811
|
if (props.copied === true && !isCopied) return false;
|
819
812
|
if (props.copied === false && isCopied) return false;
|
820
|
-
if (props.speaking === true &&
|
821
|
-
if (props.speaking === false &&
|
813
|
+
if (props.speaking === true && speech == null) return false;
|
814
|
+
if (props.speaking === false && speech != null) return false;
|
822
815
|
if (props.hasAttachments === true && (role !== "user" || !attachments.length))
|
823
816
|
return false;
|
824
817
|
if (props.hasAttachments === false && role === "user" && !!attachments.length)
|
@@ -1347,7 +1340,7 @@ _chunkPZ5AY32Cjs.__export.call(void 0, branchPicker_exports, {
|
|
1347
1340
|
Count: () => BranchPickerPrimitiveCount,
|
1348
1341
|
Next: () => BranchPickerPrimitiveNext,
|
1349
1342
|
Number: () => BranchPickerPrimitiveNumber,
|
1350
|
-
Previous: () =>
|
1343
|
+
Previous: () => BranchPickerPrimitivePrevious,
|
1351
1344
|
Root: () => BranchPickerPrimitiveRoot
|
1352
1345
|
});
|
1353
1346
|
|
@@ -1358,7 +1351,7 @@ var BranchPickerPrimitiveNext = createActionButton(
|
|
1358
1351
|
);
|
1359
1352
|
|
1360
1353
|
// src/primitives/branchPicker/BranchPickerPrevious.tsx
|
1361
|
-
var
|
1354
|
+
var BranchPickerPrimitivePrevious = createActionButton(
|
1362
1355
|
"BranchPickerPrimitive.Previous",
|
1363
1356
|
useBranchPickerPrevious
|
1364
1357
|
);
|
@@ -2172,6 +2165,16 @@ var MessageRuntimeImpl = (_class6 = class {
|
|
2172
2165
|
if (!state) throw new Error("Message is not available");
|
2173
2166
|
return this._threadBinding.getState().speak(state.id);
|
2174
2167
|
}
|
2168
|
+
stopSpeaking() {
|
2169
|
+
const state = this._core.getState();
|
2170
|
+
if (!state) throw new Error("Message is not available");
|
2171
|
+
const thread = this._threadBinding.getState();
|
2172
|
+
if (_optionalChain([thread, 'access', _79 => _79.speech, 'optionalAccess', _80 => _80.messageId]) === state.id) {
|
2173
|
+
this._threadBinding.getState().stopSpeaking();
|
2174
|
+
} else {
|
2175
|
+
throw new Error("Message is not being spoken");
|
2176
|
+
}
|
2177
|
+
}
|
2175
2178
|
submitFeedback({ type }) {
|
2176
2179
|
const state = this._core.getState();
|
2177
2180
|
if (!state) throw new Error("Message is not available");
|
@@ -2223,7 +2226,7 @@ var MessageRuntimeImpl = (_class6 = class {
|
|
2223
2226
|
new ShallowMemoizeSubject({
|
2224
2227
|
getState: () => {
|
2225
2228
|
const attachments = this.getState().attachments;
|
2226
|
-
const attachment = _optionalChain([attachments, 'optionalAccess',
|
2229
|
+
const attachment = _optionalChain([attachments, 'optionalAccess', _81 => _81[idx]]);
|
2227
2230
|
if (!attachment) return SKIP_UPDATE;
|
2228
2231
|
return {
|
2229
2232
|
...attachment,
|
@@ -2312,7 +2315,7 @@ var MessageContentPartImpl = ({
|
|
2312
2315
|
};
|
2313
2316
|
var MessageContentPart = _react.memo.call(void 0,
|
2314
2317
|
MessageContentPartImpl,
|
2315
|
-
(prev, next) => prev.partIndex === next.partIndex && _optionalChain([prev, 'access',
|
2318
|
+
(prev, next) => prev.partIndex === next.partIndex && _optionalChain([prev, 'access', _82 => _82.components, 'optionalAccess', _83 => _83.Text]) === _optionalChain([next, 'access', _84 => _84.components, 'optionalAccess', _85 => _85.Text]) && _optionalChain([prev, 'access', _86 => _86.components, 'optionalAccess', _87 => _87.Image]) === _optionalChain([next, 'access', _88 => _88.components, 'optionalAccess', _89 => _89.Image]) && _optionalChain([prev, 'access', _90 => _90.components, 'optionalAccess', _91 => _91.UI]) === _optionalChain([next, 'access', _92 => _92.components, 'optionalAccess', _93 => _93.UI]) && _optionalChain([prev, 'access', _94 => _94.components, 'optionalAccess', _95 => _95.tools]) === _optionalChain([next, 'access', _96 => _96.components, 'optionalAccess', _97 => _97.tools])
|
2316
2319
|
);
|
2317
2320
|
var MessagePrimitiveContent = ({
|
2318
2321
|
components
|
@@ -2378,11 +2381,11 @@ var getComponent = (components, attachment) => {
|
|
2378
2381
|
const type = attachment.type;
|
2379
2382
|
switch (type) {
|
2380
2383
|
case "image":
|
2381
|
-
return _nullishCoalesce(_optionalChain([components, 'optionalAccess',
|
2384
|
+
return _nullishCoalesce(_optionalChain([components, 'optionalAccess', _98 => _98.Image]), () => ( _optionalChain([components, 'optionalAccess', _99 => _99.Attachment])));
|
2382
2385
|
case "document":
|
2383
|
-
return _nullishCoalesce(_optionalChain([components, 'optionalAccess',
|
2386
|
+
return _nullishCoalesce(_optionalChain([components, 'optionalAccess', _100 => _100.Document]), () => ( _optionalChain([components, 'optionalAccess', _101 => _101.Attachment])));
|
2384
2387
|
case "file":
|
2385
|
-
return _nullishCoalesce(_optionalChain([components, 'optionalAccess',
|
2388
|
+
return _nullishCoalesce(_optionalChain([components, 'optionalAccess', _102 => _102.File]), () => ( _optionalChain([components, 'optionalAccess', _103 => _103.Attachment])));
|
2386
2389
|
default:
|
2387
2390
|
const _exhaustiveCheck = type;
|
2388
2391
|
throw new Error(`Unknown attachment type: ${_exhaustiveCheck}`);
|
@@ -2405,7 +2408,7 @@ var MessageAttachmentImpl = ({ components, attachmentIndex }) => {
|
|
2405
2408
|
};
|
2406
2409
|
var MessageAttachment = _react.memo.call(void 0,
|
2407
2410
|
MessageAttachmentImpl,
|
2408
|
-
(prev, next) => prev.attachmentIndex === next.attachmentIndex && _optionalChain([prev, 'access',
|
2411
|
+
(prev, next) => prev.attachmentIndex === next.attachmentIndex && _optionalChain([prev, 'access', _104 => _104.components, 'optionalAccess', _105 => _105.Image]) === _optionalChain([next, 'access', _106 => _106.components, 'optionalAccess', _107 => _107.Image]) && _optionalChain([prev, 'access', _108 => _108.components, 'optionalAccess', _109 => _109.Document]) === _optionalChain([next, 'access', _110 => _110.components, 'optionalAccess', _111 => _111.Document]) && _optionalChain([prev, 'access', _112 => _112.components, 'optionalAccess', _113 => _113.File]) === _optionalChain([next, 'access', _114 => _114.components, 'optionalAccess', _115 => _115.File]) && _optionalChain([prev, 'access', _116 => _116.components, 'optionalAccess', _117 => _117.Attachment]) === _optionalChain([next, 'access', _118 => _118.components, 'optionalAccess', _119 => _119.Attachment])
|
2409
2412
|
);
|
2410
2413
|
var MessagePrimitiveAttachments = ({ components }) => {
|
2411
2414
|
const attachmentsCount = useMessage(({ message }) => {
|
@@ -2516,7 +2519,7 @@ var ComposerPrimitiveInput = _react.forwardRef.call(void 0,
|
|
2516
2519
|
const { isRunning } = threadStore.getState();
|
2517
2520
|
if (!isRunning) {
|
2518
2521
|
e.preventDefault();
|
2519
|
-
_optionalChain([textareaRef, 'access',
|
2522
|
+
_optionalChain([textareaRef, 'access', _120 => _120.current, 'optionalAccess', _121 => _121.closest, 'call', _122 => _122("form"), 'optionalAccess', _123 => _123.requestSubmit, 'call', _124 => _124()]);
|
2520
2523
|
}
|
2521
2524
|
}
|
2522
2525
|
};
|
@@ -2581,11 +2584,11 @@ var getComponent2 = (components, attachment) => {
|
|
2581
2584
|
const type = attachment.type;
|
2582
2585
|
switch (type) {
|
2583
2586
|
case "image":
|
2584
|
-
return _nullishCoalesce(_optionalChain([components, 'optionalAccess',
|
2587
|
+
return _nullishCoalesce(_optionalChain([components, 'optionalAccess', _125 => _125.Image]), () => ( _optionalChain([components, 'optionalAccess', _126 => _126.Attachment])));
|
2585
2588
|
case "document":
|
2586
|
-
return _nullishCoalesce(_optionalChain([components, 'optionalAccess',
|
2589
|
+
return _nullishCoalesce(_optionalChain([components, 'optionalAccess', _127 => _127.Document]), () => ( _optionalChain([components, 'optionalAccess', _128 => _128.Attachment])));
|
2587
2590
|
case "file":
|
2588
|
-
return _nullishCoalesce(_optionalChain([components, 'optionalAccess',
|
2591
|
+
return _nullishCoalesce(_optionalChain([components, 'optionalAccess', _129 => _129.File]), () => ( _optionalChain([components, 'optionalAccess', _130 => _130.Attachment])));
|
2589
2592
|
default:
|
2590
2593
|
const _exhaustiveCheck = type;
|
2591
2594
|
throw new Error(`Unknown attachment type: ${_exhaustiveCheck}`);
|
@@ -2608,7 +2611,7 @@ var ComposerAttachmentImpl = ({ components, attachmentIndex }) => {
|
|
2608
2611
|
};
|
2609
2612
|
var ComposerAttachment = _react.memo.call(void 0,
|
2610
2613
|
ComposerAttachmentImpl,
|
2611
|
-
(prev, next) => prev.attachmentIndex === next.attachmentIndex && _optionalChain([prev, 'access',
|
2614
|
+
(prev, next) => prev.attachmentIndex === next.attachmentIndex && _optionalChain([prev, 'access', _131 => _131.components, 'optionalAccess', _132 => _132.Image]) === _optionalChain([next, 'access', _133 => _133.components, 'optionalAccess', _134 => _134.Image]) && _optionalChain([prev, 'access', _135 => _135.components, 'optionalAccess', _136 => _136.Document]) === _optionalChain([next, 'access', _137 => _137.components, 'optionalAccess', _138 => _138.Document]) && _optionalChain([prev, 'access', _139 => _139.components, 'optionalAccess', _140 => _140.File]) === _optionalChain([next, 'access', _141 => _141.components, 'optionalAccess', _142 => _142.File]) && _optionalChain([prev, 'access', _143 => _143.components, 'optionalAccess', _144 => _144.Attachment]) === _optionalChain([next, 'access', _145 => _145.components, 'optionalAccess', _146 => _146.Attachment])
|
2612
2615
|
);
|
2613
2616
|
var ComposerPrimitiveAttachments = ({ components }) => {
|
2614
2617
|
const attachmentsCount = useComposer((s) => s.attachments.length);
|
@@ -2816,7 +2819,6 @@ ThreadPrimitiveViewport.displayName = "ThreadPrimitive.Viewport";
|
|
2816
2819
|
// src/context/stores/MessageUtils.ts
|
2817
2820
|
|
2818
2821
|
var makeMessageUtilsStore = () => _zustand.create.call(void 0, (set) => {
|
2819
|
-
let utterance = null;
|
2820
2822
|
return {
|
2821
2823
|
isCopied: false,
|
2822
2824
|
setIsCopied: (value) => {
|
@@ -2826,17 +2828,6 @@ var makeMessageUtilsStore = () => _zustand.create.call(void 0, (set) => {
|
|
2826
2828
|
setIsHovering: (value) => {
|
2827
2829
|
set({ isHovering: value });
|
2828
2830
|
},
|
2829
|
-
isSpeaking: false,
|
2830
|
-
stopSpeaking: () => {
|
2831
|
-
_optionalChain([utterance, 'optionalAccess', _145 => _145.cancel, 'call', _146 => _146()]);
|
2832
|
-
},
|
2833
|
-
addUtterance: (utt) => {
|
2834
|
-
utterance = utt;
|
2835
|
-
set({ isSpeaking: true });
|
2836
|
-
utt.onEnd(() => {
|
2837
|
-
set({ isSpeaking: false });
|
2838
|
-
});
|
2839
|
-
},
|
2840
2831
|
submittedFeedback: null,
|
2841
2832
|
setSubmittedFeedback: (feedback) => {
|
2842
2833
|
set({ submittedFeedback: feedback });
|
@@ -3570,7 +3561,8 @@ var getThreadState = (runtime) => {
|
|
3570
3561
|
isRunning: _optionalChain([lastMessage, 'optionalAccess', _178 => _178.role]) !== "assistant" ? false : lastMessage.status.type === "running",
|
3571
3562
|
messages: runtime.messages,
|
3572
3563
|
suggestions: runtime.suggestions,
|
3573
|
-
extras: runtime.extras
|
3564
|
+
extras: runtime.extras,
|
3565
|
+
speech: runtime.speech
|
3574
3566
|
});
|
3575
3567
|
};
|
3576
3568
|
var ThreadRuntimeImpl = (_class12 = class {
|
@@ -3617,6 +3609,12 @@ var ThreadRuntimeImpl = (_class12 = class {
|
|
3617
3609
|
get messages() {
|
3618
3610
|
return this._threadBinding.getState().messages;
|
3619
3611
|
}
|
3612
|
+
/**
|
3613
|
+
* @deprecated Use `getState().speechState` instead. This will be removed in 0.6.0.
|
3614
|
+
*/
|
3615
|
+
get speech() {
|
3616
|
+
return this._threadBinding.getState().speech;
|
3617
|
+
}
|
3620
3618
|
unstable_getCore() {
|
3621
3619
|
return this._threadBinding.getState();
|
3622
3620
|
}
|
@@ -3677,15 +3675,18 @@ var ThreadRuntimeImpl = (_class12 = class {
|
|
3677
3675
|
switchToBranch(branchId) {
|
3678
3676
|
return this._threadBinding.getState().switchToBranch(branchId);
|
3679
3677
|
}
|
3680
|
-
|
3681
|
-
|
3682
|
-
|
3678
|
+
/**
|
3679
|
+
* @deprecated Use `getMesssageById(id).speak()` instead. This will be removed in 0.6.0.
|
3680
|
+
*/
|
3683
3681
|
speak(messageId) {
|
3684
3682
|
return this._threadBinding.getState().speak(messageId);
|
3685
3683
|
}
|
3686
|
-
|
3687
|
-
|
3688
|
-
|
3684
|
+
stopSpeaking() {
|
3685
|
+
return this._threadBinding.getState().stopSpeaking();
|
3686
|
+
}
|
3687
|
+
/**
|
3688
|
+
* @deprecated Use `getMesssageById(id).submitFeedback({ type })` instead. This will be removed in 0.6.0.
|
3689
|
+
*/
|
3689
3690
|
submitFeedback(options) {
|
3690
3691
|
return this._threadBinding.getState().submitFeedback(options);
|
3691
3692
|
}
|
@@ -3712,7 +3713,7 @@ var ThreadRuntimeImpl = (_class12 = class {
|
|
3712
3713
|
return new MessageRuntimeImpl(
|
3713
3714
|
new ShallowMemoizeSubject({
|
3714
3715
|
getState: () => {
|
3715
|
-
const messages2 = this.getState()
|
3716
|
+
const { messages: messages2, speech: speechState } = this.getState();
|
3716
3717
|
const message = messages2[idx];
|
3717
3718
|
if (!message) return SKIP_UPDATE;
|
3718
3719
|
const branches = this._threadBinding.getState().getBranches(message.id);
|
@@ -3723,7 +3724,8 @@ var ThreadRuntimeImpl = (_class12 = class {
|
|
3723
3724
|
parentId: _nullishCoalesce(_optionalChain([messages2, 'access', _179 => _179[idx - 1], 'optionalAccess', _180 => _180.id]), () => ( null)),
|
3724
3725
|
branches,
|
3725
3726
|
branchNumber: branches.indexOf(message.id) + 1,
|
3726
|
-
branchCount: branches.length
|
3727
|
+
branchCount: branches.length,
|
3728
|
+
speech: _optionalChain([speechState, 'optionalAccess', _181 => _181.messageId]) === message.id ? speechState : null
|
3727
3729
|
};
|
3728
3730
|
},
|
3729
3731
|
subscribe: (callback) => this._threadBinding.subscribe(callback)
|
@@ -3799,7 +3801,7 @@ var fromLanguageModelMessages = (lm, { mergeSteps }) => {
|
|
3799
3801
|
});
|
3800
3802
|
if (mergeSteps) {
|
3801
3803
|
const previousMessage = messages2[messages2.length - 1];
|
3802
|
-
if (_optionalChain([previousMessage, 'optionalAccess',
|
3804
|
+
if (_optionalChain([previousMessage, 'optionalAccess', _182 => _182.role]) === "assistant") {
|
3803
3805
|
previousMessage.content.push(...newContent);
|
3804
3806
|
break;
|
3805
3807
|
}
|
@@ -3812,7 +3814,7 @@ var fromLanguageModelMessages = (lm, { mergeSteps }) => {
|
|
3812
3814
|
}
|
3813
3815
|
case "tool": {
|
3814
3816
|
const previousMessage = messages2[messages2.length - 1];
|
3815
|
-
if (_optionalChain([previousMessage, 'optionalAccess',
|
3817
|
+
if (_optionalChain([previousMessage, 'optionalAccess', _183 => _183.role]) !== "assistant")
|
3816
3818
|
throw new Error(
|
3817
3819
|
"A tool message must be preceded by an assistant message."
|
3818
3820
|
);
|
@@ -3934,7 +3936,7 @@ function assistantDecoderStream() {
|
|
3934
3936
|
}
|
3935
3937
|
case "c" /* ToolCallDelta */: {
|
3936
3938
|
const { toolCallId, argsTextDelta } = value;
|
3937
|
-
if (_optionalChain([currentToolCall, 'optionalAccess',
|
3939
|
+
if (_optionalChain([currentToolCall, 'optionalAccess', _184 => _184.id]) !== toolCallId) {
|
3938
3940
|
throw new Error(
|
3939
3941
|
`Received tool call delta for unknown tool call "${toolCallId}".`
|
3940
3942
|
);
|
@@ -4081,7 +4083,7 @@ var useEdgeRuntime = (options) => {
|
|
4081
4083
|
};
|
4082
4084
|
|
4083
4085
|
// src/runtimes/local/shouldContinue.tsx
|
4084
|
-
var shouldContinue = (result) => _optionalChain([result, 'access',
|
4086
|
+
var shouldContinue = (result) => _optionalChain([result, 'access', _185 => _185.status, 'optionalAccess', _186 => _186.type]) === "requires-action" && result.status.reason === "tool-calls" && result.content.every((c) => c.type !== "tool-call" || !!c.result);
|
4085
4087
|
|
4086
4088
|
// src/runtimes/composer/DefaultEditComposerRuntimeCore.tsx
|
4087
4089
|
var DefaultEditComposerRuntimeCore = class extends BaseComposerRuntimeCore {
|
@@ -4122,7 +4124,7 @@ var DefaultEditComposerRuntimeCore = class extends BaseComposerRuntimeCore {
|
|
4122
4124
|
|
4123
4125
|
// src/runtimes/local/LocalThreadRuntimeCore.tsx
|
4124
4126
|
var LocalThreadRuntimeCore = (_class13 = class {
|
4125
|
-
constructor(configProvider, adapter, { initialMessages, ...options }) {;_class13.prototype.__init24.call(this);_class13.prototype.__init25.call(this);_class13.prototype.__init26.call(this);_class13.prototype.__init27.call(this);_class13.prototype.__init28.call(this);_class13.prototype.__init29.call(this);_class13.prototype.__init30.call(this);_class13.prototype.__init31.call(this);
|
4127
|
+
constructor(configProvider, adapter, { initialMessages, ...options }) {;_class13.prototype.__init24.call(this);_class13.prototype.__init25.call(this);_class13.prototype.__init26.call(this);_class13.prototype.__init27.call(this);_class13.prototype.__init28.call(this);_class13.prototype.__init29.call(this);_class13.prototype.__init30.call(this);_class13.prototype.__init31.call(this);_class13.prototype.__init32.call(this);
|
4126
4128
|
this.configProvider = configProvider;
|
4127
4129
|
this.adapter = adapter;
|
4128
4130
|
this.threadId = generateId();
|
@@ -4169,18 +4171,18 @@ var LocalThreadRuntimeCore = (_class13 = class {
|
|
4169
4171
|
set options({ initialMessages, ...options }) {
|
4170
4172
|
this._options = options;
|
4171
4173
|
let hasUpdates = false;
|
4172
|
-
const canSpeak = _optionalChain([options, 'access',
|
4174
|
+
const canSpeak = _optionalChain([options, 'access', _187 => _187.adapters, 'optionalAccess', _188 => _188.speech]) !== void 0;
|
4173
4175
|
if (this.capabilities.speak !== canSpeak) {
|
4174
4176
|
this.capabilities.speak = canSpeak;
|
4175
4177
|
hasUpdates = true;
|
4176
4178
|
}
|
4177
|
-
this.composer.setAttachmentAdapter(_optionalChain([options, 'access',
|
4178
|
-
const canAttach = _optionalChain([options, 'access',
|
4179
|
+
this.composer.setAttachmentAdapter(_optionalChain([options, 'access', _189 => _189.adapters, 'optionalAccess', _190 => _190.attachments]));
|
4180
|
+
const canAttach = _optionalChain([options, 'access', _191 => _191.adapters, 'optionalAccess', _192 => _192.attachments]) !== void 0;
|
4179
4181
|
if (this.capabilities.attachments !== canAttach) {
|
4180
4182
|
this.capabilities.attachments = canAttach;
|
4181
4183
|
hasUpdates = true;
|
4182
4184
|
}
|
4183
|
-
const canFeedback = _optionalChain([options, 'access',
|
4185
|
+
const canFeedback = _optionalChain([options, 'access', _193 => _193.adapters, 'optionalAccess', _194 => _194.feedback]) !== void 0;
|
4184
4186
|
if (this.capabilities.feedback !== canFeedback) {
|
4185
4187
|
this.capabilities.feedback = canFeedback;
|
4186
4188
|
hasUpdates = true;
|
@@ -4239,13 +4241,13 @@ var LocalThreadRuntimeCore = (_class13 = class {
|
|
4239
4241
|
}
|
4240
4242
|
async performRoundtrip(parentId, message) {
|
4241
4243
|
const messages2 = this.repository.getMessages();
|
4242
|
-
_optionalChain([this, 'access',
|
4244
|
+
_optionalChain([this, 'access', _195 => _195.abortController, 'optionalAccess', _196 => _196.abort, 'call', _197 => _197()]);
|
4243
4245
|
this.abortController = new AbortController();
|
4244
4246
|
const initialContent = message.content;
|
4245
|
-
const initialSteps = _optionalChain([message, 'access',
|
4246
|
-
const initalCustom = _optionalChain([message, 'access',
|
4247
|
+
const initialSteps = _optionalChain([message, 'access', _198 => _198.metadata, 'optionalAccess', _199 => _199.steps]);
|
4248
|
+
const initalCustom = _optionalChain([message, 'access', _200 => _200.metadata, 'optionalAccess', _201 => _201.custom]);
|
4247
4249
|
const updateMessage = (m) => {
|
4248
|
-
const newSteps = _optionalChain([m, 'access',
|
4250
|
+
const newSteps = _optionalChain([m, 'access', _202 => _202.metadata, 'optionalAccess', _203 => _203.steps]) || _optionalChain([m, 'access', _204 => _204.metadata, 'optionalAccess', _205 => _205.roundtrips]);
|
4249
4251
|
const steps2 = newSteps ? [..._nullishCoalesce(initialSteps, () => ( [])), ...newSteps] : void 0;
|
4250
4252
|
message = {
|
4251
4253
|
...message,
|
@@ -4257,7 +4259,7 @@ var LocalThreadRuntimeCore = (_class13 = class {
|
|
4257
4259
|
metadata: {
|
4258
4260
|
...message.metadata,
|
4259
4261
|
...steps2 ? { roundtrips: steps2, steps: steps2 } : void 0,
|
4260
|
-
..._optionalChain([m, 'access',
|
4262
|
+
..._optionalChain([m, 'access', _206 => _206.metadata, 'optionalAccess', _207 => _207.custom]) ? {
|
4261
4263
|
custom: { ..._nullishCoalesce(initalCustom, () => ( {})), ...m.metadata.custom }
|
4262
4264
|
} : void 0
|
4263
4265
|
}
|
@@ -4267,7 +4269,7 @@ var LocalThreadRuntimeCore = (_class13 = class {
|
|
4267
4269
|
this.notifySubscribers();
|
4268
4270
|
};
|
4269
4271
|
const maxSteps = this.options.maxSteps ? this.options.maxSteps : (_nullishCoalesce(this.options.maxToolRoundtrips, () => ( 1))) + 1;
|
4270
|
-
const steps = _nullishCoalesce(_optionalChain([message, 'access',
|
4272
|
+
const steps = _nullishCoalesce(_optionalChain([message, 'access', _208 => _208.metadata, 'optionalAccess', _209 => _209.steps, 'optionalAccess', _210 => _210.length]), () => ( 0));
|
4271
4273
|
if (steps >= maxSteps) {
|
4272
4274
|
updateMessage({
|
4273
4275
|
status: {
|
@@ -4363,27 +4365,38 @@ var LocalThreadRuntimeCore = (_class13 = class {
|
|
4363
4365
|
this.performRoundtrip(parentId, message);
|
4364
4366
|
}
|
4365
4367
|
}
|
4366
|
-
// TODO
|
4368
|
+
// TODO speech runtime?
|
4367
4369
|
|
4370
|
+
__init32() {this.speech = null}
|
4368
4371
|
speak(messageId) {
|
4369
|
-
const adapter = _optionalChain([this, 'access',
|
4372
|
+
const adapter = _optionalChain([this, 'access', _211 => _211.options, 'access', _212 => _212.adapters, 'optionalAccess', _213 => _213.speech]);
|
4370
4373
|
if (!adapter) throw new Error("Speech adapter not configured");
|
4371
4374
|
const { message } = this.repository.getMessage(messageId);
|
4372
|
-
|
4373
|
-
this._utterance.cancel();
|
4374
|
-
this._utterance = void 0;
|
4375
|
-
}
|
4375
|
+
_optionalChain([this, 'access', _214 => _214._stopSpeaking, 'optionalCall', _215 => _215()]);
|
4376
4376
|
const utterance = adapter.speak(message);
|
4377
|
-
utterance.
|
4378
|
-
if (
|
4379
|
-
this.
|
4377
|
+
const unsub = utterance.subscribe(() => {
|
4378
|
+
if (utterance.status.type === "ended") {
|
4379
|
+
this._stopSpeaking = void 0;
|
4380
|
+
this.speech = null;
|
4381
|
+
} else {
|
4382
|
+
this.speech = { messageId, status: utterance.status };
|
4380
4383
|
}
|
4384
|
+
this.notifySubscribers();
|
4381
4385
|
});
|
4382
|
-
this.
|
4383
|
-
|
4386
|
+
this.speech = { messageId, status: utterance.status };
|
4387
|
+
this._stopSpeaking = () => {
|
4388
|
+
utterance.cancel();
|
4389
|
+
unsub();
|
4390
|
+
this.speech = null;
|
4391
|
+
this._stopSpeaking = void 0;
|
4392
|
+
};
|
4393
|
+
}
|
4394
|
+
stopSpeaking() {
|
4395
|
+
if (!this._stopSpeaking) throw new Error("No message is being spoken");
|
4396
|
+
this._stopSpeaking();
|
4384
4397
|
}
|
4385
4398
|
submitFeedback({ messageId, type }) {
|
4386
|
-
const adapter = _optionalChain([this, 'access',
|
4399
|
+
const adapter = _optionalChain([this, 'access', _216 => _216.options, 'access', _217 => _217.adapters, 'optionalAccess', _218 => _218.feedback]);
|
4387
4400
|
if (!adapter) throw new Error("Feedback adapter not configured");
|
4388
4401
|
const { message } = this.repository.getMessage(messageId);
|
4389
4402
|
adapter.submit({ message, type });
|
@@ -4430,7 +4443,7 @@ var LocalRuntimeCore = class extends BaseAssistantRuntimeCore {
|
|
4430
4443
|
const messages2 = fromCoreMessages(initialMessages);
|
4431
4444
|
this.thread.import({
|
4432
4445
|
messages: messages2.map((m, idx) => ({
|
4433
|
-
parentId: _nullishCoalesce(_optionalChain([messages2, 'access',
|
4446
|
+
parentId: _nullishCoalesce(_optionalChain([messages2, 'access', _219 => _219[idx - 1], 'optionalAccess', _220 => _220.id]), () => ( null)),
|
4434
4447
|
message: m
|
4435
4448
|
}))
|
4436
4449
|
});
|
@@ -4466,8 +4479,8 @@ var getExternalStoreMessage = (message) => {
|
|
4466
4479
|
};
|
4467
4480
|
|
4468
4481
|
// src/runtimes/external-store/ThreadMessageConverter.ts
|
4469
|
-
var ThreadMessageConverter = (_class14 = class {constructor() { _class14.prototype.
|
4470
|
-
|
4482
|
+
var ThreadMessageConverter = (_class14 = class {constructor() { _class14.prototype.__init33.call(this); }
|
4483
|
+
__init33() {this.cache = /* @__PURE__ */ new WeakMap()}
|
4471
4484
|
convertMessages(messages2, converter) {
|
4472
4485
|
return messages2.map((m, idx) => {
|
4473
4486
|
const cached = this.cache.get(m);
|
@@ -4564,17 +4577,17 @@ var fromThreadMessageLike = (like, fallbackId, fallbackStatus) => {
|
|
4564
4577
|
// src/runtimes/external-store/ExternalStoreThreadRuntimeCore.tsx
|
4565
4578
|
var EMPTY_ARRAY2 = Object.freeze([]);
|
4566
4579
|
var hasUpcomingMessage = (isRunning, messages2) => {
|
4567
|
-
return isRunning && _optionalChain([messages2, 'access',
|
4580
|
+
return isRunning && _optionalChain([messages2, 'access', _221 => _221[messages2.length - 1], 'optionalAccess', _222 => _222.role]) !== "assistant";
|
4568
4581
|
};
|
4569
4582
|
var ExternalStoreThreadRuntimeCore = (_class15 = class {
|
4570
|
-
constructor(configProvider, store) {;_class15.prototype.
|
4583
|
+
constructor(configProvider, store) {;_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);_class15.prototype.__init40.call(this);_class15.prototype.__init41.call(this);_class15.prototype.__init42.call(this);_class15.prototype.__init43.call(this);_class15.prototype.__init44.call(this);
|
4571
4584
|
this.configProvider = configProvider;
|
4572
4585
|
this.store = store;
|
4573
4586
|
}
|
4574
|
-
|
4575
|
-
|
4576
|
-
|
4577
|
-
|
4587
|
+
__init34() {this._subscriptions = /* @__PURE__ */ new Set()}
|
4588
|
+
__init35() {this.repository = new MessageRepository()}
|
4589
|
+
__init36() {this.assistantOptimisticId = null}
|
4590
|
+
__init37() {this._capabilities = {
|
4578
4591
|
switchToBranch: false,
|
4579
4592
|
edit: false,
|
4580
4593
|
reload: false,
|
@@ -4590,12 +4603,12 @@ var ExternalStoreThreadRuntimeCore = (_class15 = class {
|
|
4590
4603
|
|
4591
4604
|
|
4592
4605
|
|
4593
|
-
|
4594
|
-
|
4595
|
-
|
4606
|
+
__init38() {this.suggestions = []}
|
4607
|
+
__init39() {this.extras = void 0}
|
4608
|
+
__init40() {this._converter = new ThreadMessageConverter()}
|
4596
4609
|
|
4597
|
-
|
4598
|
-
|
4610
|
+
__init41() {this.composer = new DefaultThreadComposerRuntimeCore(this)}
|
4611
|
+
__init42() {this._editComposers = /* @__PURE__ */ new Map()}
|
4599
4612
|
getEditComposer(messageId) {
|
4600
4613
|
return this._editComposers.get(messageId);
|
4601
4614
|
}
|
@@ -4630,12 +4643,12 @@ var ExternalStoreThreadRuntimeCore = (_class15 = class {
|
|
4630
4643
|
reload: this._store.onReload !== void 0,
|
4631
4644
|
cancel: this._store.onCancel !== void 0,
|
4632
4645
|
speak: this._store.onSpeak !== void 0,
|
4633
|
-
unstable_copy: _optionalChain([this, 'access',
|
4646
|
+
unstable_copy: _optionalChain([this, 'access', _226 => _226._store, 'access', _227 => _227.unstable_capabilities, 'optionalAccess', _228 => _228.copy]) !== false,
|
4634
4647
|
// default true
|
4635
|
-
attachments: !!_optionalChain([this, 'access',
|
4636
|
-
feedback: !!_optionalChain([this, 'access',
|
4648
|
+
attachments: !!_optionalChain([this, 'access', _229 => _229.store, 'access', _230 => _230.adapters, 'optionalAccess', _231 => _231.attachments]),
|
4649
|
+
feedback: !!_optionalChain([this, 'access', _232 => _232.store, 'access', _233 => _233.adapters, 'optionalAccess', _234 => _234.feedback])
|
4637
4650
|
};
|
4638
|
-
this.composer.setAttachmentAdapter(_optionalChain([this, 'access',
|
4651
|
+
this.composer.setAttachmentAdapter(_optionalChain([this, 'access', _235 => _235._store, 'access', _236 => _236.adapters, 'optionalAccess', _237 => _237.attachments]));
|
4639
4652
|
if (oldStore) {
|
4640
4653
|
if (oldStore.convertMessage !== store.convertMessage) {
|
4641
4654
|
this._converter = new ThreadMessageConverter();
|
@@ -4661,7 +4674,7 @@ var ExternalStoreThreadRuntimeCore = (_class15 = class {
|
|
4661
4674
|
for (let i = 0; i < messages2.length; i++) {
|
4662
4675
|
const message = messages2[i];
|
4663
4676
|
const parent = messages2[i - 1];
|
4664
|
-
this.repository.addOrUpdateMessage(_nullishCoalesce(_optionalChain([parent, 'optionalAccess',
|
4677
|
+
this.repository.addOrUpdateMessage(_nullishCoalesce(_optionalChain([parent, 'optionalAccess', _238 => _238.id]), () => ( null)), message);
|
4665
4678
|
}
|
4666
4679
|
if (this.assistantOptimisticId) {
|
4667
4680
|
this.repository.deleteMessage(this.assistantOptimisticId);
|
@@ -4669,7 +4682,7 @@ var ExternalStoreThreadRuntimeCore = (_class15 = class {
|
|
4669
4682
|
}
|
4670
4683
|
if (hasUpcomingMessage(isRunning, messages2)) {
|
4671
4684
|
this.assistantOptimisticId = this.repository.appendOptimisticMessage(
|
4672
|
-
_nullishCoalesce(_optionalChain([messages2, 'access',
|
4685
|
+
_nullishCoalesce(_optionalChain([messages2, 'access', _239 => _239.at, 'call', _240 => _240(-1), 'optionalAccess', _241 => _241.id]), () => ( null)),
|
4673
4686
|
{
|
4674
4687
|
role: "assistant",
|
4675
4688
|
content: []
|
@@ -4677,7 +4690,7 @@ var ExternalStoreThreadRuntimeCore = (_class15 = class {
|
|
4677
4690
|
);
|
4678
4691
|
}
|
4679
4692
|
this.repository.resetHead(
|
4680
|
-
_nullishCoalesce(_nullishCoalesce(this.assistantOptimisticId, () => ( _optionalChain([messages2, 'access',
|
4693
|
+
_nullishCoalesce(_nullishCoalesce(this.assistantOptimisticId, () => ( _optionalChain([messages2, 'access', _242 => _242.at, 'call', _243 => _243(-1), 'optionalAccess', _244 => _244.id]))), () => ( null))
|
4681
4694
|
);
|
4682
4695
|
this.messages = this.repository.getMessages();
|
4683
4696
|
this.notifySubscribers();
|
@@ -4698,7 +4711,7 @@ var ExternalStoreThreadRuntimeCore = (_class15 = class {
|
|
4698
4711
|
this.updateMessages(this.repository.getMessages());
|
4699
4712
|
}
|
4700
4713
|
async append(message) {
|
4701
|
-
if (message.parentId !== (_nullishCoalesce(_optionalChain([this, 'access',
|
4714
|
+
if (message.parentId !== (_nullishCoalesce(_optionalChain([this, 'access', _245 => _245.messages, 'access', _246 => _246.at, 'call', _247 => _247(-1), 'optionalAccess', _248 => _248.id]), () => ( null)))) {
|
4702
4715
|
if (!this._store.onEdit)
|
4703
4716
|
throw new Error("Runtime does not support editing messages.");
|
4704
4717
|
await this._store.onEdit(message);
|
@@ -4721,7 +4734,7 @@ var ExternalStoreThreadRuntimeCore = (_class15 = class {
|
|
4721
4734
|
}
|
4722
4735
|
let messages2 = this.repository.getMessages();
|
4723
4736
|
const previousMessage = messages2[messages2.length - 1];
|
4724
|
-
if (_optionalChain([previousMessage, 'optionalAccess',
|
4737
|
+
if (_optionalChain([previousMessage, 'optionalAccess', _249 => _249.role]) === "user" && previousMessage.id === _optionalChain([messages2, 'access', _250 => _250.at, 'call', _251 => _251(-1), 'optionalAccess', _252 => _252.id])) {
|
4725
4738
|
this.repository.deleteMessage(previousMessage.id);
|
4726
4739
|
if (!this.composer.text.trim()) {
|
4727
4740
|
this.composer.setText(getThreadMessageText(previousMessage));
|
@@ -4739,14 +4752,41 @@ var ExternalStoreThreadRuntimeCore = (_class15 = class {
|
|
4739
4752
|
throw new Error("Runtime does not support tool results.");
|
4740
4753
|
this._store.onAddToolResult(options);
|
4741
4754
|
}
|
4755
|
+
// TODO speech runtime?
|
4756
|
+
|
4757
|
+
__init43() {this.speech = null}
|
4742
4758
|
speak(messageId) {
|
4743
|
-
|
4744
|
-
|
4759
|
+
let adapter = _optionalChain([this, 'access', _253 => _253.store, 'access', _254 => _254.adapters, 'optionalAccess', _255 => _255.speech]);
|
4760
|
+
if (!adapter && this.store.onSpeak) {
|
4761
|
+
adapter = { speak: this.store.onSpeak };
|
4762
|
+
}
|
4763
|
+
if (!adapter) throw new Error("Speech adapter not configured");
|
4745
4764
|
const { message } = this.repository.getMessage(messageId);
|
4746
|
-
|
4765
|
+
_optionalChain([this, 'access', _256 => _256._stopSpeaking, 'optionalCall', _257 => _257()]);
|
4766
|
+
const utterance = adapter.speak(message);
|
4767
|
+
const unsub = utterance.subscribe(() => {
|
4768
|
+
if (utterance.status.type === "ended") {
|
4769
|
+
this._stopSpeaking = void 0;
|
4770
|
+
this.speech = null;
|
4771
|
+
} else {
|
4772
|
+
this.speech = { messageId, status: utterance.status };
|
4773
|
+
}
|
4774
|
+
this.notifySubscribers();
|
4775
|
+
});
|
4776
|
+
this.speech = { messageId, status: utterance.status };
|
4777
|
+
this._stopSpeaking = () => {
|
4778
|
+
utterance.cancel();
|
4779
|
+
unsub();
|
4780
|
+
this.speech = null;
|
4781
|
+
this._stopSpeaking = void 0;
|
4782
|
+
};
|
4783
|
+
}
|
4784
|
+
stopSpeaking() {
|
4785
|
+
if (!this._stopSpeaking) throw new Error("No message is being spoken");
|
4786
|
+
this._stopSpeaking();
|
4747
4787
|
}
|
4748
4788
|
submitFeedback({ messageId, type }) {
|
4749
|
-
const adapter = _optionalChain([this, 'access',
|
4789
|
+
const adapter = _optionalChain([this, 'access', _258 => _258._store, 'access', _259 => _259.adapters, 'optionalAccess', _260 => _260.feedback]);
|
4750
4790
|
if (!adapter) throw new Error("Feedback adapter not configured");
|
4751
4791
|
const { message } = this.repository.getMessage(messageId);
|
4752
4792
|
adapter.submit({ message, type });
|
@@ -4755,8 +4795,8 @@ var ExternalStoreThreadRuntimeCore = (_class15 = class {
|
|
4755
4795
|
this._subscriptions.add(callback);
|
4756
4796
|
return () => this._subscriptions.delete(callback);
|
4757
4797
|
}
|
4758
|
-
|
4759
|
-
_optionalChain([this, 'access',
|
4798
|
+
__init44() {this.updateMessages = (messages2) => {
|
4799
|
+
_optionalChain([this, 'access', _261 => _261._store, 'access', _262 => _262.setMessages, 'optionalCall', _263 => _263(
|
4760
4800
|
messages2.flatMap(getExternalStoreMessage).filter((m) => m != null)
|
4761
4801
|
)]);
|
4762
4802
|
}}
|
@@ -5010,11 +5050,11 @@ var WebSpeechSynthesisAdapter = class {
|
|
5010
5050
|
speak(message) {
|
5011
5051
|
const text = getThreadMessageText(message);
|
5012
5052
|
const utterance = new SpeechSynthesisUtterance(text);
|
5013
|
-
const
|
5053
|
+
const subscribers = /* @__PURE__ */ new Set();
|
5014
5054
|
const handleEnd = (reason, error) => {
|
5015
5055
|
if (res.status.type === "ended") return;
|
5016
5056
|
res.status = { type: "ended", reason, error };
|
5017
|
-
|
5057
|
+
subscribers.forEach((handler) => handler());
|
5018
5058
|
};
|
5019
5059
|
utterance.addEventListener("end", () => handleEnd("finished"));
|
5020
5060
|
utterance.addEventListener("error", (e) => handleEnd("error", e.error));
|
@@ -5025,7 +5065,7 @@ var WebSpeechSynthesisAdapter = class {
|
|
5025
5065
|
window.speechSynthesis.cancel();
|
5026
5066
|
handleEnd("cancelled");
|
5027
5067
|
},
|
5028
|
-
|
5068
|
+
subscribe: (callback) => {
|
5029
5069
|
if (res.status.type === "ended") {
|
5030
5070
|
let cancelled = false;
|
5031
5071
|
queueMicrotask(() => {
|
@@ -5035,9 +5075,9 @@ var WebSpeechSynthesisAdapter = class {
|
|
5035
5075
|
cancelled = true;
|
5036
5076
|
};
|
5037
5077
|
} else {
|
5038
|
-
|
5078
|
+
subscribers.add(callback);
|
5039
5079
|
return () => {
|
5040
|
-
|
5080
|
+
subscribers.delete(callback);
|
5041
5081
|
};
|
5042
5082
|
}
|
5043
5083
|
}
|
@@ -5047,8 +5087,8 @@ var WebSpeechSynthesisAdapter = class {
|
|
5047
5087
|
};
|
5048
5088
|
|
5049
5089
|
// src/runtimes/attachment/SimpleImageAttachmentAdapter.ts
|
5050
|
-
var SimpleImageAttachmentAdapter = (_class16 = class {constructor() { _class16.prototype.
|
5051
|
-
|
5090
|
+
var SimpleImageAttachmentAdapter = (_class16 = class {constructor() { _class16.prototype.__init45.call(this); }
|
5091
|
+
__init45() {this.accept = "image/*"}
|
5052
5092
|
async add(state) {
|
5053
5093
|
return {
|
5054
5094
|
id: state.file.name,
|
@@ -5082,8 +5122,8 @@ var getFileDataURL = (file) => new Promise((resolve, reject) => {
|
|
5082
5122
|
});
|
5083
5123
|
|
5084
5124
|
// src/runtimes/attachment/SimpleTextAttachmentAdapter.ts
|
5085
|
-
var SimpleTextAttachmentAdapter = (_class17 = class {constructor() { _class17.prototype.
|
5086
|
-
|
5125
|
+
var SimpleTextAttachmentAdapter = (_class17 = class {constructor() { _class17.prototype.__init46.call(this); }
|
5126
|
+
__init46() {this.accept = "text/plain,text/html,text/markdown,text/csv,text/xml,text/json,text/css"}
|
5087
5127
|
async add(state) {
|
5088
5128
|
return {
|
5089
5129
|
id: state.file.name,
|
@@ -5211,7 +5251,7 @@ var ThreadConfigProvider = ({
|
|
5211
5251
|
}) => {
|
5212
5252
|
const hasAssistant = !!useAssistantRuntime({ optional: true });
|
5213
5253
|
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 });
|
5214
|
-
if (!_optionalChain([config, 'optionalAccess',
|
5254
|
+
if (!_optionalChain([config, 'optionalAccess', _264 => _264.runtime])) return configProvider;
|
5215
5255
|
if (hasAssistant) {
|
5216
5256
|
throw new Error(
|
5217
5257
|
"You provided a runtime to <Thread> while simulataneously using <AssistantRuntimeProvider>. This is not allowed."
|
@@ -5287,13 +5327,13 @@ var AssistantActionBarRoot = withDefaults(actionBar_exports.Root, {
|
|
5287
5327
|
className: "aui-assistant-action-bar-root"
|
5288
5328
|
});
|
5289
5329
|
AssistantActionBarRoot.displayName = "AssistantActionBarRoot";
|
5290
|
-
var AssistantActionBarCopy = _react.forwardRef.call(void 0, (props, ref) => {
|
5330
|
+
var AssistantActionBarCopy = _react.forwardRef.call(void 0, ({ copiedDuration, ...props }, ref) => {
|
5291
5331
|
const {
|
5292
5332
|
strings: {
|
5293
5333
|
assistantMessage: { copy: { tooltip = "Copy" } = {} } = {}
|
5294
5334
|
} = {}
|
5295
5335
|
} = useThreadConfig();
|
5296
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, actionBar_exports.Copy, { asChild: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TooltipIconButton, { tooltip, ...props, ref, children: _nullishCoalesce(props.children, () => ( /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
5336
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, actionBar_exports.Copy, { copiedDuration, asChild: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TooltipIconButton, { tooltip, ...props, ref, children: _nullishCoalesce(props.children, () => ( /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
5297
5337
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, message_exports.If, { copied: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.CheckIcon, {}) }),
|
5298
5338
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, message_exports.If, { copied: false, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.CopyIcon, {}) })
|
5299
5339
|
] }))) }) });
|
@@ -5408,7 +5448,7 @@ var BranchPicker = () => {
|
|
5408
5448
|
const allowBranchPicker = useAllowBranchPicker(true);
|
5409
5449
|
if (!allowBranchPicker) return null;
|
5410
5450
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, BranchPickerRoot, { hideWhenSingleBranch: true, children: [
|
5411
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
5451
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, BranchPickerPrevious, {}),
|
5412
5452
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, BranchPickerState, {}),
|
5413
5453
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, BranchPickerNext, {})
|
5414
5454
|
] });
|
@@ -5418,7 +5458,7 @@ var BranchPickerRoot = withDefaults(branchPicker_exports.Root, {
|
|
5418
5458
|
className: "aui-branch-picker-root"
|
5419
5459
|
});
|
5420
5460
|
BranchPickerRoot.displayName = "BranchPickerRoot";
|
5421
|
-
var
|
5461
|
+
var BranchPickerPrevious = _react.forwardRef.call(void 0, (props, ref) => {
|
5422
5462
|
const {
|
5423
5463
|
strings: {
|
5424
5464
|
branchPicker: { previous: { tooltip = "Previous" } = {} } = {}
|
@@ -5427,7 +5467,7 @@ var BranchPickerPrevious2 = _react.forwardRef.call(void 0, (props, ref) => {
|
|
5427
5467
|
const allowBranchPicker = useAllowBranchPicker();
|
5428
5468
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, branchPicker_exports.Previous, { disabled: !allowBranchPicker, asChild: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TooltipIconButton, { tooltip, ...props, ref, children: _nullishCoalesce(props.children, () => ( /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronLeftIcon, {}))) }) });
|
5429
5469
|
});
|
5430
|
-
|
5470
|
+
BranchPickerPrevious.displayName = "BranchPickerPrevious";
|
5431
5471
|
var BranchPickerStateWrapper = withDefaults("span", {
|
5432
5472
|
className: "aui-branch-picker-state"
|
5433
5473
|
});
|
@@ -5449,7 +5489,7 @@ var BranchPickerNext = _react.forwardRef.call(void 0, (props, ref) => {
|
|
5449
5489
|
BranchPickerNext.displayName = "BranchPickerNext";
|
5450
5490
|
var exports2 = {
|
5451
5491
|
Root: BranchPickerRoot,
|
5452
|
-
Previous:
|
5492
|
+
Previous: BranchPickerPrevious,
|
5453
5493
|
Next: BranchPickerNext
|
5454
5494
|
};
|
5455
5495
|
var branch_picker_default = Object.assign(BranchPicker, exports2);
|
@@ -5539,7 +5579,7 @@ var AssistantMessageContent = _react.forwardRef.call(void 0, ({ components: comp
|
|
5539
5579
|
{
|
5540
5580
|
components: {
|
5541
5581
|
...componentsProp,
|
5542
|
-
Text: _nullishCoalesce(_nullishCoalesce(_optionalChain([componentsProp, 'optionalAccess',
|
5582
|
+
Text: _nullishCoalesce(_nullishCoalesce(_optionalChain([componentsProp, 'optionalAccess', _265 => _265.Text]), () => ( components.Text)), () => ( content_part_default.Text)),
|
5543
5583
|
tools: toolsComponents
|
5544
5584
|
}
|
5545
5585
|
}
|
@@ -5674,7 +5714,7 @@ var ComposerAttachments = ({ components }) => {
|
|
5674
5714
|
{
|
5675
5715
|
components: {
|
5676
5716
|
...components,
|
5677
|
-
Attachment: _nullishCoalesce(_optionalChain([components, 'optionalAccess',
|
5717
|
+
Attachment: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _266 => _266.Attachment]), () => ( composer_attachment_default))
|
5678
5718
|
}
|
5679
5719
|
}
|
5680
5720
|
) });
|
@@ -5719,23 +5759,27 @@ var ComposerSendButton = withDefaults(TooltipIconButton, {
|
|
5719
5759
|
variant: "default",
|
5720
5760
|
className: "aui-composer-send"
|
5721
5761
|
});
|
5722
|
-
var ComposerSend = _react.forwardRef.call(void 0,
|
5723
|
-
|
5724
|
-
|
5725
|
-
|
5726
|
-
|
5727
|
-
});
|
5762
|
+
var ComposerSend = _react.forwardRef.call(void 0,
|
5763
|
+
(props, ref) => {
|
5764
|
+
const {
|
5765
|
+
strings: { composer: { send: { tooltip = "Send" } = {} } = {} } = {}
|
5766
|
+
} = useThreadConfig();
|
5767
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, composer_exports.Send, { asChild: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ComposerSendButton, { tooltip, ...props, ref, children: _nullishCoalesce(props.children, () => ( /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.SendHorizontalIcon, {}))) }) });
|
5768
|
+
}
|
5769
|
+
);
|
5728
5770
|
ComposerSend.displayName = "ComposerSend";
|
5729
5771
|
var ComposerCancelButton = withDefaults(TooltipIconButton, {
|
5730
5772
|
variant: "default",
|
5731
5773
|
className: "aui-composer-cancel"
|
5732
5774
|
});
|
5733
|
-
var ComposerCancel = _react.forwardRef.call(void 0,
|
5734
|
-
|
5735
|
-
|
5736
|
-
|
5737
|
-
|
5738
|
-
});
|
5775
|
+
var ComposerCancel = _react.forwardRef.call(void 0,
|
5776
|
+
(props, ref) => {
|
5777
|
+
const {
|
5778
|
+
strings: { composer: { cancel: { tooltip = "Cancel" } = {} } = {} } = {}
|
5779
|
+
} = useThreadConfig();
|
5780
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, composer_exports.Cancel, { asChild: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ComposerCancelButton, { tooltip, ...props, ref, children: _nullishCoalesce(props.children, () => ( /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CircleStopIcon, {}))) }) });
|
5781
|
+
}
|
5782
|
+
);
|
5739
5783
|
ComposerCancel.displayName = "ComposerCancel";
|
5740
5784
|
var exports6 = {
|
5741
5785
|
Root: ComposerRoot,
|
@@ -5767,11 +5811,9 @@ var ThreadWelcomeRootStyled = withDefaults("div", {
|
|
5767
5811
|
var ThreadWelcomeCenter = withDefaults("div", {
|
5768
5812
|
className: "aui-thread-welcome-center"
|
5769
5813
|
});
|
5770
|
-
var ThreadWelcomeRoot = _react.forwardRef.call(void 0,
|
5771
|
-
(props, ref)
|
5772
|
-
|
5773
|
-
}
|
5774
|
-
);
|
5814
|
+
var ThreadWelcomeRoot = _react.forwardRef.call(void 0, (props, ref) => {
|
5815
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, thread_exports.Empty, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ThreadWelcomeRootStyled, { ...props, ref }) });
|
5816
|
+
});
|
5775
5817
|
ThreadWelcomeRoot.displayName = "ThreadWelcomeRoot";
|
5776
5818
|
var ThreadWelcomeAvatar = () => {
|
5777
5819
|
const { assistantAvatar: avatar = { fallback: "A" } } = useThreadConfig();
|
@@ -5800,7 +5842,7 @@ var ThreadWelcomeSuggestions = () => {
|
|
5800
5842
|
const suggestions2 = useThread((t) => t.suggestions);
|
5801
5843
|
const { welcome: { suggestions } = {} } = useThreadConfig();
|
5802
5844
|
const finalSuggestions = suggestions2.length ? suggestions2 : suggestions;
|
5803
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ThreadWelcomeSuggestionContainer, { children: _optionalChain([finalSuggestions, 'optionalAccess',
|
5845
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ThreadWelcomeSuggestionContainer, { children: _optionalChain([finalSuggestions, 'optionalAccess', _267 => _267.map, 'call', _268 => _268((suggestion, idx) => {
|
5804
5846
|
const key = `${suggestion.prompt}-${idx}`;
|
5805
5847
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ThreadWelcomeSuggestion, { suggestion }, key);
|
5806
5848
|
})]) });
|
@@ -5888,19 +5930,17 @@ UserMessageRoot.displayName = "UserMessageRoot";
|
|
5888
5930
|
var UserMessageContentWrapper = withDefaults("div", {
|
5889
5931
|
className: "aui-user-message-content"
|
5890
5932
|
});
|
5891
|
-
var UserMessageContent = _react.forwardRef.call(void 0,
|
5892
|
-
(
|
5893
|
-
|
5894
|
-
|
5895
|
-
{
|
5896
|
-
components
|
5897
|
-
|
5898
|
-
Text: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _261 => _261.Text]), () => ( content_part_default.Text))
|
5899
|
-
}
|
5933
|
+
var UserMessageContent = _react.forwardRef.call(void 0, ({ components, ...props }, ref) => {
|
5934
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, UserMessageContentWrapper, { ...props, ref, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
5935
|
+
message_exports.Content,
|
5936
|
+
{
|
5937
|
+
components: {
|
5938
|
+
...components,
|
5939
|
+
Text: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _269 => _269.Text]), () => ( content_part_default.Text))
|
5900
5940
|
}
|
5901
|
-
|
5902
|
-
}
|
5903
|
-
);
|
5941
|
+
}
|
5942
|
+
) });
|
5943
|
+
});
|
5904
5944
|
UserMessageContent.displayName = "UserMessageContent";
|
5905
5945
|
var UserMessageAttachmentsContainer = withDefaults("div", {
|
5906
5946
|
className: "aui-user-message-attachments"
|
@@ -5913,7 +5953,7 @@ var UserMessageAttachments = ({
|
|
5913
5953
|
{
|
5914
5954
|
components: {
|
5915
5955
|
...components,
|
5916
|
-
Attachment: _nullishCoalesce(_optionalChain([components, 'optionalAccess',
|
5956
|
+
Attachment: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _270 => _270.Attachment]), () => ( user_message_attachment_default))
|
5917
5957
|
}
|
5918
5958
|
}
|
5919
5959
|
) }) });
|
@@ -5950,25 +5990,19 @@ var EditComposerFooter = withDefaults("div", {
|
|
5950
5990
|
className: "aui-edit-composer-footer"
|
5951
5991
|
});
|
5952
5992
|
EditComposerFooter.displayName = "EditComposerFooter";
|
5953
|
-
var EditComposerCancel = _react.forwardRef.call(void 0,
|
5954
|
-
|
5955
|
-
|
5956
|
-
|
5957
|
-
|
5958
|
-
|
5959
|
-
} = useThreadConfig();
|
5960
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, composer_exports.Cancel, { asChild: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Button, { variant: "ghost", ...props, ref, children: _nullishCoalesce(props.children, () => ( label)) }) });
|
5961
|
-
}
|
5962
|
-
);
|
5993
|
+
var EditComposerCancel = _react.forwardRef.call(void 0, (props, ref) => {
|
5994
|
+
const {
|
5995
|
+
strings: { editComposer: { cancel: { label = "Cancel" } = {} } = {} } = {}
|
5996
|
+
} = useThreadConfig();
|
5997
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, composer_exports.Cancel, { asChild: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Button, { variant: "ghost", ...props, ref, children: _nullishCoalesce(props.children, () => ( label)) }) });
|
5998
|
+
});
|
5963
5999
|
EditComposerCancel.displayName = "EditComposerCancel";
|
5964
|
-
var EditComposerSend = _react.forwardRef.call(void 0,
|
5965
|
-
|
5966
|
-
|
5967
|
-
|
5968
|
-
|
5969
|
-
|
5970
|
-
}
|
5971
|
-
);
|
6000
|
+
var EditComposerSend = _react.forwardRef.call(void 0, (props, ref) => {
|
6001
|
+
const {
|
6002
|
+
strings: { editComposer: { send: { label = "Send" } = {} } = {} } = {}
|
6003
|
+
} = useThreadConfig();
|
6004
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, composer_exports.Send, { asChild: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Button, { ...props, ref, children: _nullishCoalesce(props.children, () => ( label)) }) });
|
6005
|
+
});
|
5972
6006
|
EditComposerSend.displayName = "EditComposerSend";
|
5973
6007
|
var exports11 = {
|
5974
6008
|
Root: EditComposerRoot,
|
@@ -6022,10 +6056,10 @@ var ThreadMessages = ({ components, unstable_flexGrowDiv: flexGrowDiv = true, ..
|
|
6022
6056
|
thread_exports.Messages,
|
6023
6057
|
{
|
6024
6058
|
components: {
|
6025
|
-
UserMessage: _nullishCoalesce(_optionalChain([components, 'optionalAccess',
|
6026
|
-
EditComposer: _nullishCoalesce(_optionalChain([components, 'optionalAccess',
|
6027
|
-
AssistantMessage: _nullishCoalesce(_optionalChain([components, 'optionalAccess',
|
6028
|
-
SystemMessage: _nullishCoalesce(_optionalChain([components, 'optionalAccess',
|
6059
|
+
UserMessage: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _271 => _271.UserMessage]), () => ( user_message_default)),
|
6060
|
+
EditComposer: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _272 => _272.EditComposer]), () => ( edit_composer_default)),
|
6061
|
+
AssistantMessage: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _273 => _273.AssistantMessage]), () => ( assistant_message_default)),
|
6062
|
+
SystemMessage: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _274 => _274.SystemMessage]), () => ( SystemMessage))
|
6029
6063
|
},
|
6030
6064
|
...rest
|
6031
6065
|
}
|
@@ -6036,7 +6070,7 @@ var ThreadMessages = ({ components, unstable_flexGrowDiv: flexGrowDiv = true, ..
|
|
6036
6070
|
ThreadMessages.displayName = "ThreadMessages";
|
6037
6071
|
var ThreadFollowupSuggestions = () => {
|
6038
6072
|
const suggestions = useThread((t) => t.suggestions);
|
6039
|
-
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',
|
6073
|
+
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', _275 => _275.map, 'call', _276 => _276((suggestion, idx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
6040
6074
|
thread_exports.Suggestion,
|
6041
6075
|
{
|
6042
6076
|
className: "aui-thread-followup-suggestion",
|
@@ -6080,7 +6114,10 @@ var AssistantModal = (config) => {
|
|
6080
6114
|
] });
|
6081
6115
|
};
|
6082
6116
|
AssistantModal.displayName = "AssistantModal";
|
6083
|
-
var AssistantModalRoot = ({
|
6117
|
+
var AssistantModalRoot = ({
|
6118
|
+
config,
|
6119
|
+
...props
|
6120
|
+
}) => {
|
6084
6121
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ThreadConfigProvider, { config, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, assistantModal_exports.Root, { ...props }) });
|
6085
6122
|
};
|
6086
6123
|
AssistantModalRoot.displayName = "AssistantModalRoot";
|