@assistant-ui/react 0.5.11 → 0.5.12
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 +10 -2
- package/dist/index.d.ts +10 -2
- package/dist/index.js +92 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +95 -4
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -3582,7 +3582,7 @@ var getExternalStoreMessage = (message) => {
|
|
|
3582
3582
|
};
|
|
3583
3583
|
|
|
3584
3584
|
// src/runtimes/external-store/useExternalStoreSync.tsx
|
|
3585
|
-
import { useEffect as useEffect11, useMemo as useMemo3 } from "react";
|
|
3585
|
+
import { useEffect as useEffect11, useInsertionEffect as useInsertionEffect4, useMemo as useMemo3, useRef as useRef6 } from "react";
|
|
3586
3586
|
|
|
3587
3587
|
// src/runtimes/external-store/ThreadMessageConverter.ts
|
|
3588
3588
|
var ThreadMessageConverter = class {
|
|
@@ -3598,13 +3598,104 @@ var ThreadMessageConverter = class {
|
|
|
3598
3598
|
}
|
|
3599
3599
|
};
|
|
3600
3600
|
|
|
3601
|
+
// src/runtimes/external-store/auto-status.tsx
|
|
3602
|
+
var AUTO_STATUS_RUNNING = Object.freeze({ type: "running" });
|
|
3603
|
+
var AUTO_STATUS_COMPLETE = Object.freeze({
|
|
3604
|
+
type: "complete",
|
|
3605
|
+
reason: "unknown"
|
|
3606
|
+
});
|
|
3607
|
+
var isAutoStatus = (status) => status === AUTO_STATUS_RUNNING || status === AUTO_STATUS_COMPLETE;
|
|
3608
|
+
var getAutoStatus = (isLast, isRunning) => isLast && isRunning ? AUTO_STATUS_RUNNING : AUTO_STATUS_COMPLETE;
|
|
3609
|
+
|
|
3610
|
+
// src/runtimes/external-store/ThreadMessageLike.tsx
|
|
3611
|
+
var fromThreadMessageLike = (like, fallbackId, fallbackStatus) => {
|
|
3612
|
+
const { role, content, id, createdAt, status } = like;
|
|
3613
|
+
const common = {
|
|
3614
|
+
id: id ?? fallbackId,
|
|
3615
|
+
createdAt: createdAt ?? /* @__PURE__ */ new Date()
|
|
3616
|
+
};
|
|
3617
|
+
switch (role) {
|
|
3618
|
+
case "assistant":
|
|
3619
|
+
return {
|
|
3620
|
+
...common,
|
|
3621
|
+
role,
|
|
3622
|
+
content: content.map((part) => {
|
|
3623
|
+
const type = part.type;
|
|
3624
|
+
switch (type) {
|
|
3625
|
+
case "text":
|
|
3626
|
+
case "ui":
|
|
3627
|
+
return part;
|
|
3628
|
+
case "tool-call": {
|
|
3629
|
+
if ("argsText" in part) return part;
|
|
3630
|
+
return {
|
|
3631
|
+
...part,
|
|
3632
|
+
argsText: JSON.stringify(part.args)
|
|
3633
|
+
};
|
|
3634
|
+
}
|
|
3635
|
+
default: {
|
|
3636
|
+
const unhandledType = type;
|
|
3637
|
+
throw new Error(`Unknown content part type: ${unhandledType}`);
|
|
3638
|
+
}
|
|
3639
|
+
}
|
|
3640
|
+
}),
|
|
3641
|
+
status: status ?? fallbackStatus
|
|
3642
|
+
};
|
|
3643
|
+
case "user":
|
|
3644
|
+
return {
|
|
3645
|
+
...common,
|
|
3646
|
+
role,
|
|
3647
|
+
content: content.map((part) => {
|
|
3648
|
+
const type = part.type;
|
|
3649
|
+
switch (type) {
|
|
3650
|
+
case "text":
|
|
3651
|
+
case "ui":
|
|
3652
|
+
case "image":
|
|
3653
|
+
return part;
|
|
3654
|
+
default: {
|
|
3655
|
+
const unhandledType = type;
|
|
3656
|
+
throw new Error(`Unknown content part type: ${unhandledType}`);
|
|
3657
|
+
}
|
|
3658
|
+
}
|
|
3659
|
+
})
|
|
3660
|
+
};
|
|
3661
|
+
case "system":
|
|
3662
|
+
if (content.length !== 1 || content[0].type !== "text")
|
|
3663
|
+
throw new Error(
|
|
3664
|
+
"System messages must have exactly one text content part."
|
|
3665
|
+
);
|
|
3666
|
+
return {
|
|
3667
|
+
...common,
|
|
3668
|
+
role,
|
|
3669
|
+
content
|
|
3670
|
+
};
|
|
3671
|
+
default: {
|
|
3672
|
+
const unsupportedRole = role;
|
|
3673
|
+
throw new Error(`Unknown message role: ${unsupportedRole}`);
|
|
3674
|
+
}
|
|
3675
|
+
}
|
|
3676
|
+
};
|
|
3677
|
+
|
|
3601
3678
|
// src/runtimes/external-store/useExternalStoreSync.tsx
|
|
3602
3679
|
var useExternalStoreSync = (adapter, updateData) => {
|
|
3680
|
+
const adapterRef = useRef6(adapter);
|
|
3681
|
+
useInsertionEffect4(() => {
|
|
3682
|
+
adapterRef.current = adapter;
|
|
3683
|
+
});
|
|
3603
3684
|
const [converter, convertCallback] = useMemo3(() => {
|
|
3604
3685
|
const converter2 = adapter.convertMessage ?? ((m) => m);
|
|
3605
3686
|
const convertCallback2 = (cache, m, idx) => {
|
|
3687
|
+
const autoStatus = getAutoStatus(
|
|
3688
|
+
adapterRef.current.messages.at(-1) === m,
|
|
3689
|
+
adapterRef.current.isRunning ?? false
|
|
3690
|
+
);
|
|
3691
|
+
if (cache && (cache.role !== "assistant" || !isAutoStatus(cache.status) || cache.status.type === autoStatus.type))
|
|
3692
|
+
return cache;
|
|
3606
3693
|
if (cache) return cache;
|
|
3607
|
-
const newMessage =
|
|
3694
|
+
const newMessage = fromThreadMessageLike(
|
|
3695
|
+
converter2(m, idx),
|
|
3696
|
+
idx.toString(),
|
|
3697
|
+
autoStatus
|
|
3698
|
+
);
|
|
3608
3699
|
newMessage[symbolInnerMessage] = m;
|
|
3609
3700
|
return newMessage;
|
|
3610
3701
|
};
|
|
@@ -3770,10 +3861,10 @@ var ExternalStoreRuntime = class extends BaseAssistantRuntime {
|
|
|
3770
3861
|
};
|
|
3771
3862
|
|
|
3772
3863
|
// src/runtimes/external-store/useExternalStoreRuntime.tsx
|
|
3773
|
-
import { useEffect as useEffect12, useInsertionEffect as
|
|
3864
|
+
import { useEffect as useEffect12, useInsertionEffect as useInsertionEffect5, useState as useState9 } from "react";
|
|
3774
3865
|
var useExternalStoreRuntime = (store) => {
|
|
3775
3866
|
const [runtime] = useState9(() => new ExternalStoreRuntime(store));
|
|
3776
|
-
|
|
3867
|
+
useInsertionEffect5(() => {
|
|
3777
3868
|
runtime.store = store;
|
|
3778
3869
|
});
|
|
3779
3870
|
useEffect12(() => {
|