@assistant-ui/react 0.5.67 → 0.5.68
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/{edge-BDAlTCC1.d.mts → edge-BhYWMe-K.d.mts} +26 -6
- package/dist/{edge-BDAlTCC1.d.ts → edge-BhYWMe-K.d.ts} +26 -6
- package/dist/index.d.mts +153 -73
- package/dist/index.d.ts +153 -73
- package/dist/index.js +512 -367
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +588 -443
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
package/dist/index.mjs
CHANGED
@@ -184,7 +184,7 @@ var writableStore = (store) => {
|
|
184
184
|
|
185
185
|
// src/context/providers/ThreadRuntimeProvider.tsx
|
186
186
|
import { create as create3 } from "zustand";
|
187
|
-
import { jsx
|
187
|
+
import { jsx } from "react/jsx-runtime";
|
188
188
|
var useThreadRuntimeStore2 = (runtime) => {
|
189
189
|
const [store] = useState(() => create3(() => runtime));
|
190
190
|
useEffect(() => {
|
@@ -235,13 +235,7 @@ var ThreadRuntimeProvider = ({ children, runtime }) => {
|
|
235
235
|
useViewport
|
236
236
|
};
|
237
237
|
}, [useThread2, useThreadRuntime2, useThreadMessages2, useThreadComposer2]);
|
238
|
-
|
239
|
-
(t) => t.unstable_synchronizer
|
240
|
-
);
|
241
|
-
return /* @__PURE__ */ jsxs(ThreadContext.Provider, { value: context, children: [
|
242
|
-
Synchronizer && /* @__PURE__ */ jsx(Synchronizer, {}),
|
243
|
-
children
|
244
|
-
] });
|
238
|
+
return /* @__PURE__ */ jsx(ThreadContext.Provider, { value: context, children });
|
245
239
|
};
|
246
240
|
|
247
241
|
// src/context/providers/AssistantRuntimeProvider.tsx
|
@@ -577,11 +571,11 @@ var useActionBarCopy = ({
|
|
577
571
|
// src/primitive-hooks/actionBar/useActionBarEdit.tsx
|
578
572
|
import { useCallback as useCallback4 } from "react";
|
579
573
|
var useActionBarEdit = () => {
|
580
|
-
const
|
581
|
-
const disabled =
|
574
|
+
const messageRuntime = useMessageRuntime();
|
575
|
+
const disabled = useEditComposer((c) => c.isEditing);
|
582
576
|
const callback = useCallback4(() => {
|
583
|
-
|
584
|
-
}, [
|
577
|
+
messageRuntime.composer.beginEdit();
|
578
|
+
}, [messageRuntime]);
|
585
579
|
if (disabled) return null;
|
586
580
|
return callback;
|
587
581
|
};
|
@@ -1590,14 +1584,165 @@ var ContentPartPrimitiveInProgress = ({ children }) => {
|
|
1590
1584
|
};
|
1591
1585
|
ContentPartPrimitiveInProgress.displayName = "ContentPartPrimitive.InProgress";
|
1592
1586
|
|
1587
|
+
// src/api/AttachmentRuntime.ts
|
1588
|
+
var AttachmentRuntime = class {
|
1589
|
+
constructor(_core) {
|
1590
|
+
this._core = _core;
|
1591
|
+
}
|
1592
|
+
getState() {
|
1593
|
+
return this._core.getState();
|
1594
|
+
}
|
1595
|
+
subscribe(callback) {
|
1596
|
+
return this._core.subscribe(callback);
|
1597
|
+
}
|
1598
|
+
};
|
1599
|
+
var ComposerAttachmentRuntime = class extends AttachmentRuntime {
|
1600
|
+
constructor(core, _composerApi) {
|
1601
|
+
super(core);
|
1602
|
+
this._composerApi = _composerApi;
|
1603
|
+
}
|
1604
|
+
remove() {
|
1605
|
+
const core = this._composerApi.getState();
|
1606
|
+
if (!core) throw new Error("Composer is not available");
|
1607
|
+
return core.removeAttachment(this.getState().id);
|
1608
|
+
}
|
1609
|
+
};
|
1610
|
+
var ThreadComposerAttachmentRuntime = class extends ComposerAttachmentRuntime {
|
1611
|
+
get source() {
|
1612
|
+
return "thread-composer";
|
1613
|
+
}
|
1614
|
+
};
|
1615
|
+
var EditComposerAttachmentRuntime = class extends ComposerAttachmentRuntime {
|
1616
|
+
get source() {
|
1617
|
+
return "edit-composer";
|
1618
|
+
}
|
1619
|
+
};
|
1620
|
+
var MessageAttachmentRuntime = class extends AttachmentRuntime {
|
1621
|
+
get source() {
|
1622
|
+
return "message";
|
1623
|
+
}
|
1624
|
+
constructor(core) {
|
1625
|
+
super(core);
|
1626
|
+
}
|
1627
|
+
remove() {
|
1628
|
+
throw new Error("Message attachments cannot be removed");
|
1629
|
+
}
|
1630
|
+
};
|
1631
|
+
|
1632
|
+
// src/api/subscribable/BaseSubject.ts
|
1633
|
+
var BaseSubject = class {
|
1634
|
+
_subscriptions = /* @__PURE__ */ new Set();
|
1635
|
+
_connection;
|
1636
|
+
get isConnected() {
|
1637
|
+
return !!this._connection;
|
1638
|
+
}
|
1639
|
+
notifySubscribers() {
|
1640
|
+
for (const callback of this._subscriptions) callback();
|
1641
|
+
}
|
1642
|
+
_updateConnection() {
|
1643
|
+
if (this._subscriptions.size > 0) {
|
1644
|
+
if (this._connection) return;
|
1645
|
+
this._connection = this._connect();
|
1646
|
+
} else {
|
1647
|
+
this._connection?.();
|
1648
|
+
this._connection = void 0;
|
1649
|
+
}
|
1650
|
+
}
|
1651
|
+
subscribe(callback) {
|
1652
|
+
this._subscriptions.add(callback);
|
1653
|
+
this._updateConnection();
|
1654
|
+
return () => {
|
1655
|
+
this._subscriptions.delete(callback);
|
1656
|
+
this._updateConnection();
|
1657
|
+
};
|
1658
|
+
}
|
1659
|
+
};
|
1660
|
+
|
1661
|
+
// src/api/subscribable/SKIP_UPDATE.ts
|
1662
|
+
var SKIP_UPDATE = Symbol("skip-update");
|
1663
|
+
|
1664
|
+
// src/api/subscribable/LazyMemoizeSubject.ts
|
1665
|
+
var LazyMemoizeSubject = class extends BaseSubject {
|
1666
|
+
constructor(binding) {
|
1667
|
+
super();
|
1668
|
+
this.binding = binding;
|
1669
|
+
}
|
1670
|
+
_previousStateDirty = true;
|
1671
|
+
_previousState;
|
1672
|
+
getState = () => {
|
1673
|
+
if (!this.isConnected || this._previousStateDirty) {
|
1674
|
+
const newState = this.binding.getState();
|
1675
|
+
if (newState !== SKIP_UPDATE) {
|
1676
|
+
this._previousState = newState;
|
1677
|
+
}
|
1678
|
+
this._previousStateDirty = false;
|
1679
|
+
}
|
1680
|
+
if (this._previousState === void 0)
|
1681
|
+
throw new Error("Entry not available in the store");
|
1682
|
+
return this._previousState;
|
1683
|
+
};
|
1684
|
+
_connect() {
|
1685
|
+
const callback = () => {
|
1686
|
+
this._previousStateDirty = true;
|
1687
|
+
this.notifySubscribers();
|
1688
|
+
};
|
1689
|
+
return this.binding.subscribe(callback);
|
1690
|
+
}
|
1691
|
+
};
|
1692
|
+
|
1693
|
+
// src/api/subscribable/shallowEqual.ts
|
1694
|
+
function shallowEqual(objA, objB) {
|
1695
|
+
if (objA === void 0 && objB === void 0) return true;
|
1696
|
+
if (objA === void 0) return false;
|
1697
|
+
if (objB === void 0) return false;
|
1698
|
+
for (const key of Object.keys(objA)) {
|
1699
|
+
const valueA = objA[key];
|
1700
|
+
const valueB = objB[key];
|
1701
|
+
if (!Object.is(valueA, valueB)) return false;
|
1702
|
+
}
|
1703
|
+
return true;
|
1704
|
+
}
|
1705
|
+
|
1706
|
+
// src/api/subscribable/ShallowMemoizeSubject.ts
|
1707
|
+
var ShallowMemoizeSubject = class extends BaseSubject {
|
1708
|
+
constructor(binding) {
|
1709
|
+
super();
|
1710
|
+
this.binding = binding;
|
1711
|
+
const state = binding.getState();
|
1712
|
+
if (state === SKIP_UPDATE)
|
1713
|
+
throw new Error("Entry not available in the store");
|
1714
|
+
this._previousState = state;
|
1715
|
+
}
|
1716
|
+
_previousState;
|
1717
|
+
getState = () => {
|
1718
|
+
if (!this.isConnected) this._syncState();
|
1719
|
+
return this._previousState;
|
1720
|
+
};
|
1721
|
+
_syncState() {
|
1722
|
+
const state = this.binding.getState();
|
1723
|
+
if (state === SKIP_UPDATE) return false;
|
1724
|
+
if (shallowEqual(state, this._previousState)) return false;
|
1725
|
+
this._previousState = state;
|
1726
|
+
return true;
|
1727
|
+
}
|
1728
|
+
_connect() {
|
1729
|
+
const callback = () => {
|
1730
|
+
if (this._syncState()) {
|
1731
|
+
this.notifySubscribers();
|
1732
|
+
}
|
1733
|
+
};
|
1734
|
+
return this.binding.subscribe(callback);
|
1735
|
+
}
|
1736
|
+
};
|
1737
|
+
|
1593
1738
|
// src/api/ComposerRuntime.ts
|
1594
1739
|
var METHOD_NOT_SUPPORTED = () => {
|
1595
1740
|
throw new Error("Composer is not available");
|
1596
1741
|
};
|
1597
1742
|
var EMPTY_ARRAY = Object.freeze([]);
|
1598
|
-
var getThreadComposerState = (
|
1743
|
+
var getThreadComposerState = (runtime, focus, onFocus) => {
|
1599
1744
|
return Object.freeze({
|
1600
|
-
type,
|
1745
|
+
type: "thread",
|
1601
1746
|
isEditing: runtime?.isEditing ?? false,
|
1602
1747
|
canCancel: runtime?.canCancel ?? false,
|
1603
1748
|
isEmpty: runtime?.isEmpty ?? true,
|
@@ -1607,23 +1752,36 @@ var getThreadComposerState = (type, runtime, beginEdit, focus, onFocus) => {
|
|
1607
1752
|
value: runtime?.text ?? "",
|
1608
1753
|
setValue: runtime?.setText.bind(runtime) ?? METHOD_NOT_SUPPORTED,
|
1609
1754
|
setText: runtime?.setText.bind(runtime) ?? METHOD_NOT_SUPPORTED,
|
1610
|
-
edit: beginEdit,
|
1755
|
+
// edit: beginEdit,
|
1611
1756
|
send: runtime?.send.bind(runtime) ?? METHOD_NOT_SUPPORTED,
|
1612
1757
|
cancel: runtime?.cancel.bind(runtime) ?? METHOD_NOT_SUPPORTED,
|
1613
|
-
focus
|
1614
|
-
onFocus
|
1758
|
+
focus,
|
1759
|
+
onFocus,
|
1615
1760
|
reset: runtime?.reset.bind(runtime) ?? METHOD_NOT_SUPPORTED,
|
1616
1761
|
addAttachment: runtime?.addAttachment.bind(runtime) ?? METHOD_NOT_SUPPORTED,
|
1617
1762
|
removeAttachment: runtime?.removeAttachment.bind(runtime) ?? METHOD_NOT_SUPPORTED
|
1618
1763
|
});
|
1619
1764
|
};
|
1765
|
+
var getEditComposerState = (runtime, beginEdit) => {
|
1766
|
+
return Object.freeze({
|
1767
|
+
type: "edit",
|
1768
|
+
isEditing: runtime?.isEditing ?? false,
|
1769
|
+
canCancel: runtime?.canCancel ?? false,
|
1770
|
+
isEmpty: runtime?.isEmpty ?? true,
|
1771
|
+
text: runtime?.text ?? "",
|
1772
|
+
attachments: runtime?.attachments ?? EMPTY_ARRAY,
|
1773
|
+
attachmentAccept: runtime?.attachmentAccept ?? "*",
|
1774
|
+
value: runtime?.text ?? "",
|
1775
|
+
setValue: runtime?.setText.bind(runtime) ?? METHOD_NOT_SUPPORTED,
|
1776
|
+
setText: runtime?.setText.bind(runtime) ?? METHOD_NOT_SUPPORTED,
|
1777
|
+
edit: beginEdit,
|
1778
|
+
send: runtime?.send.bind(runtime) ?? METHOD_NOT_SUPPORTED,
|
1779
|
+
cancel: runtime?.cancel.bind(runtime) ?? METHOD_NOT_SUPPORTED
|
1780
|
+
});
|
1781
|
+
};
|
1620
1782
|
var ComposerRuntime = class {
|
1621
|
-
constructor(_core
|
1783
|
+
constructor(_core) {
|
1622
1784
|
this._core = _core;
|
1623
|
-
this._beginEdit = _beginEdit;
|
1624
|
-
}
|
1625
|
-
get type() {
|
1626
|
-
return this._beginEdit ? "edit" : "thread";
|
1627
1785
|
}
|
1628
1786
|
/**
|
1629
1787
|
* @deprecated Use `getState().isEditing` instead. This will be removed in 0.6.0.
|
@@ -1655,7 +1813,6 @@ var ComposerRuntime = class {
|
|
1655
1813
|
get attachmentAccept() {
|
1656
1814
|
return this.getState().attachmentAccept;
|
1657
1815
|
}
|
1658
|
-
// TODO should this instead return getAttachmentByIndex([idx]) instead?
|
1659
1816
|
/**
|
1660
1817
|
* @deprecated Use `getState().attachments` instead. This will be removed in 0.6.0.
|
1661
1818
|
*/
|
@@ -1668,15 +1825,6 @@ var ComposerRuntime = class {
|
|
1668
1825
|
get value() {
|
1669
1826
|
return this.text;
|
1670
1827
|
}
|
1671
|
-
getState() {
|
1672
|
-
return getThreadComposerState(
|
1673
|
-
this.type,
|
1674
|
-
this._core.getState(),
|
1675
|
-
this._beginEdit?.bind(this) ?? METHOD_NOT_SUPPORTED,
|
1676
|
-
this.focus.bind(this),
|
1677
|
-
this.onFocus.bind(this)
|
1678
|
-
);
|
1679
|
-
}
|
1680
1828
|
setText(text) {
|
1681
1829
|
const core = this._core.getState();
|
1682
1830
|
if (!core) throw new Error("Composer is not available");
|
@@ -1716,18 +1864,37 @@ var ComposerRuntime = class {
|
|
1716
1864
|
if (!core) throw new Error("Composer is not available");
|
1717
1865
|
core.cancel();
|
1718
1866
|
}
|
1719
|
-
beginEdit() {
|
1720
|
-
this._beginEdit?.();
|
1721
|
-
}
|
1722
|
-
/**
|
1723
|
-
* @deprecated Use `beginEdit()` instead. This will be removed in 0.6.0.
|
1724
|
-
*/
|
1725
|
-
edit() {
|
1726
|
-
this.beginEdit();
|
1727
|
-
}
|
1728
1867
|
subscribe(callback) {
|
1729
1868
|
return this._core.subscribe(callback);
|
1730
1869
|
}
|
1870
|
+
};
|
1871
|
+
var ThreadComposerRuntime = class extends ComposerRuntime {
|
1872
|
+
get type() {
|
1873
|
+
return "thread";
|
1874
|
+
}
|
1875
|
+
_getState;
|
1876
|
+
constructor(core) {
|
1877
|
+
const stateBinding = new LazyMemoizeSubject({
|
1878
|
+
getState: () => getThreadComposerState(
|
1879
|
+
core.getState(),
|
1880
|
+
this.focus.bind(this),
|
1881
|
+
this.onFocus.bind(this)
|
1882
|
+
),
|
1883
|
+
subscribe: (callback) => core.subscribe(callback)
|
1884
|
+
});
|
1885
|
+
super({
|
1886
|
+
getState: () => core.getState(),
|
1887
|
+
subscribe: (callback) => stateBinding.subscribe(callback)
|
1888
|
+
});
|
1889
|
+
this._getState = stateBinding.getState.bind(stateBinding);
|
1890
|
+
}
|
1891
|
+
get attachments() {
|
1892
|
+
return this.getState()?.attachments ?? EMPTY_ARRAY;
|
1893
|
+
}
|
1894
|
+
getState() {
|
1895
|
+
return this._getState();
|
1896
|
+
}
|
1897
|
+
// TODO replace with events
|
1731
1898
|
_focusListeners = /* @__PURE__ */ new Set();
|
1732
1899
|
focus() {
|
1733
1900
|
this._focusListeners.forEach((callback) => callback());
|
@@ -1736,34 +1903,71 @@ var ComposerRuntime = class {
|
|
1736
1903
|
this._focusListeners.add(callback);
|
1737
1904
|
return () => this._focusListeners.delete(callback);
|
1738
1905
|
}
|
1906
|
+
unstable_getAttachmentByIndex(idx) {
|
1907
|
+
return new ThreadComposerAttachmentRuntime(
|
1908
|
+
new ShallowMemoizeSubject({
|
1909
|
+
getState: () => {
|
1910
|
+
const attachments = this.getState().attachments;
|
1911
|
+
const attachment = attachments[idx];
|
1912
|
+
if (!attachment) return SKIP_UPDATE;
|
1913
|
+
return {
|
1914
|
+
...attachment,
|
1915
|
+
attachment,
|
1916
|
+
source: "thread-composer"
|
1917
|
+
};
|
1918
|
+
},
|
1919
|
+
subscribe: (callback) => this._core.subscribe(callback)
|
1920
|
+
}),
|
1921
|
+
this._core
|
1922
|
+
);
|
1923
|
+
}
|
1739
1924
|
};
|
1740
|
-
|
1741
|
-
|
1742
|
-
|
1743
|
-
|
1744
|
-
|
1745
|
-
|
1746
|
-
|
1925
|
+
var EditComposerRuntime = class extends ComposerRuntime {
|
1926
|
+
constructor(core, _beginEdit) {
|
1927
|
+
const stateBinding = new LazyMemoizeSubject({
|
1928
|
+
getState: () => getEditComposerState(core.getState(), this._beginEdit),
|
1929
|
+
subscribe: (callback) => core.subscribe(callback)
|
1930
|
+
});
|
1931
|
+
super({
|
1932
|
+
getState: () => core.getState(),
|
1933
|
+
subscribe: (callback) => stateBinding.subscribe(callback)
|
1934
|
+
});
|
1935
|
+
this._beginEdit = _beginEdit;
|
1936
|
+
this._getState = stateBinding.getState.bind(stateBinding);
|
1747
1937
|
}
|
1748
|
-
|
1749
|
-
|
1938
|
+
get type() {
|
1939
|
+
return "edit";
|
1750
1940
|
}
|
1751
|
-
|
1752
|
-
|
1753
|
-
|
1754
|
-
this._connection = this._connect();
|
1755
|
-
} else {
|
1756
|
-
this._connection?.();
|
1757
|
-
this._connection = void 0;
|
1758
|
-
}
|
1941
|
+
_getState;
|
1942
|
+
getState() {
|
1943
|
+
return this._getState();
|
1759
1944
|
}
|
1760
|
-
|
1761
|
-
this.
|
1762
|
-
|
1763
|
-
|
1764
|
-
|
1765
|
-
|
1766
|
-
|
1945
|
+
beginEdit() {
|
1946
|
+
this._beginEdit();
|
1947
|
+
}
|
1948
|
+
/**
|
1949
|
+
* @deprecated Use `beginEdit()` instead. This will be removed in 0.6.0.
|
1950
|
+
*/
|
1951
|
+
edit() {
|
1952
|
+
this.beginEdit();
|
1953
|
+
}
|
1954
|
+
unstable_getAttachmentByIndex(idx) {
|
1955
|
+
return new EditComposerAttachmentRuntime(
|
1956
|
+
new ShallowMemoizeSubject({
|
1957
|
+
getState: () => {
|
1958
|
+
const attachments = this.getState().attachments;
|
1959
|
+
const attachment = attachments[idx];
|
1960
|
+
if (!attachment) return SKIP_UPDATE;
|
1961
|
+
return {
|
1962
|
+
...attachment,
|
1963
|
+
attachment,
|
1964
|
+
source: "edit-composer"
|
1965
|
+
};
|
1966
|
+
},
|
1967
|
+
subscribe: (callback) => this._core.subscribe(callback)
|
1968
|
+
}),
|
1969
|
+
this._core
|
1970
|
+
);
|
1767
1971
|
}
|
1768
1972
|
};
|
1769
1973
|
|
@@ -1798,51 +2002,6 @@ var NestedSubscriptionSubject = class extends BaseSubject {
|
|
1798
2002
|
}
|
1799
2003
|
};
|
1800
2004
|
|
1801
|
-
// src/api/subscribable/shallowEqual.ts
|
1802
|
-
function shallowEqual(objA, objB) {
|
1803
|
-
if (objA === void 0 && objB === void 0) return true;
|
1804
|
-
if (objA === void 0) return false;
|
1805
|
-
if (objB === void 0) return false;
|
1806
|
-
for (const key of Object.keys(objA)) {
|
1807
|
-
const valueA = objA[key];
|
1808
|
-
const valueB = objB[key];
|
1809
|
-
if (!Object.is(valueA, valueB)) return false;
|
1810
|
-
}
|
1811
|
-
return true;
|
1812
|
-
}
|
1813
|
-
|
1814
|
-
// src/api/subscribable/ShallowMemoizeSubject.ts
|
1815
|
-
var ShallowMemoizeSubject = class extends BaseSubject {
|
1816
|
-
constructor(binding) {
|
1817
|
-
super();
|
1818
|
-
this.binding = binding;
|
1819
|
-
const state = binding.getState();
|
1820
|
-
if (state === void 0)
|
1821
|
-
throw new Error("Entry not available in the store");
|
1822
|
-
this._previousState = state;
|
1823
|
-
}
|
1824
|
-
_previousState;
|
1825
|
-
getState = () => {
|
1826
|
-
if (!this.isConnected) this._syncState();
|
1827
|
-
return this._previousState;
|
1828
|
-
};
|
1829
|
-
_syncState() {
|
1830
|
-
const state = this.binding.getState();
|
1831
|
-
if (state === void 0) return false;
|
1832
|
-
if (shallowEqual(state, this._previousState)) return false;
|
1833
|
-
this._previousState = state;
|
1834
|
-
return true;
|
1835
|
-
}
|
1836
|
-
_connect() {
|
1837
|
-
const callback = () => {
|
1838
|
-
if (this._syncState()) {
|
1839
|
-
this.notifySubscribers();
|
1840
|
-
}
|
1841
|
-
};
|
1842
|
-
return this.binding.subscribe(callback);
|
1843
|
-
}
|
1844
|
-
};
|
1845
|
-
|
1846
2005
|
// src/api/MessageRuntime.ts
|
1847
2006
|
var COMPLETE_STATUS2 = {
|
1848
2007
|
type: "complete"
|
@@ -1869,7 +2028,7 @@ var getContentPartState = (message, partIndex) => {
|
|
1869
2028
|
if (message.content.length === 0 && partIndex === 0) {
|
1870
2029
|
part = EMPTY_CONTENT;
|
1871
2030
|
} else {
|
1872
|
-
return
|
2031
|
+
return SKIP_UPDATE;
|
1873
2032
|
}
|
1874
2033
|
} else if (message.content.length === 1 && part.type === "text" && part.text.length === 0) {
|
1875
2034
|
part = EMPTY_CONTENT;
|
@@ -1882,7 +2041,7 @@ var MessageRuntime = class {
|
|
1882
2041
|
this._core = _core;
|
1883
2042
|
this._threadBinding = _threadBinding;
|
1884
2043
|
}
|
1885
|
-
composer = new
|
2044
|
+
composer = new EditComposerRuntime(
|
1886
2045
|
new NestedSubscriptionSubject({
|
1887
2046
|
getState: () => this._threadBinding.getState().getEditComposer(this._core.getState().id),
|
1888
2047
|
subscribe: (callback) => this._threadBinding.subscribe(callback)
|
@@ -1959,10 +2118,27 @@ var MessageRuntime = class {
|
|
1959
2118
|
this._threadBinding
|
1960
2119
|
);
|
1961
2120
|
}
|
2121
|
+
unstable_getAttachmentByIndex(idx) {
|
2122
|
+
return new MessageAttachmentRuntime(
|
2123
|
+
new ShallowMemoizeSubject({
|
2124
|
+
getState: () => {
|
2125
|
+
const attachments = this.getState().attachments;
|
2126
|
+
const attachment = attachments?.[idx];
|
2127
|
+
if (!attachment) return SKIP_UPDATE;
|
2128
|
+
return {
|
2129
|
+
...attachment,
|
2130
|
+
attachment,
|
2131
|
+
source: "message"
|
2132
|
+
};
|
2133
|
+
},
|
2134
|
+
subscribe: (callback) => this._core.subscribe(callback)
|
2135
|
+
})
|
2136
|
+
);
|
2137
|
+
}
|
1962
2138
|
};
|
1963
2139
|
|
1964
2140
|
// src/primitives/message/MessageContent.tsx
|
1965
|
-
import { jsx as jsx21, jsxs
|
2141
|
+
import { jsx as jsx21, jsxs } from "react/jsx-runtime";
|
1966
2142
|
var ToolUIDisplay = ({
|
1967
2143
|
UI,
|
1968
2144
|
...props
|
@@ -1972,7 +2148,7 @@ var ToolUIDisplay = ({
|
|
1972
2148
|
return /* @__PURE__ */ jsx21(Render, { ...props });
|
1973
2149
|
};
|
1974
2150
|
var defaultComponents = {
|
1975
|
-
Text: () => /* @__PURE__ */
|
2151
|
+
Text: () => /* @__PURE__ */ jsxs("p", { style: { whiteSpace: "pre-line" }, children: [
|
1976
2152
|
/* @__PURE__ */ jsx21(ContentPartPrimitiveText, {}),
|
1977
2153
|
/* @__PURE__ */ jsx21(ContentPartPrimitiveInProgress, { children: /* @__PURE__ */ jsx21("span", { style: { fontFamily: "revert" }, children: " \u25CF" }) })
|
1978
2154
|
] }),
|
@@ -2053,7 +2229,7 @@ var MessagePrimitiveInProgress = () => {
|
|
2053
2229
|
MessagePrimitiveInProgress.displayName = "MessagePrimitive.InProgress";
|
2054
2230
|
|
2055
2231
|
// src/primitives/message/MessageAttachments.tsx
|
2056
|
-
import { memo as memo3 } from "react";
|
2232
|
+
import { memo as memo3, useMemo as useMemo8 } from "react";
|
2057
2233
|
|
2058
2234
|
// src/context/react/AttachmentContext.ts
|
2059
2235
|
import { createContext as createContext6, useContext as useContext3 } from "react";
|
@@ -2068,80 +2244,87 @@ function useAttachmentContext(options) {
|
|
2068
2244
|
);
|
2069
2245
|
return context;
|
2070
2246
|
}
|
2071
|
-
function
|
2247
|
+
function useThreadComposerAttachmentContext(options) {
|
2248
|
+
const context = useAttachmentContext(options);
|
2249
|
+
if (!context) return null;
|
2250
|
+
if (context.source !== "thread-composer")
|
2251
|
+
throw new Error(
|
2252
|
+
"This component must be used within a thread's ComposerPrimitive.Attachments component."
|
2253
|
+
);
|
2254
|
+
return context;
|
2255
|
+
}
|
2256
|
+
function useEditComposerAttachmentContext(options) {
|
2072
2257
|
const context = useAttachmentContext(options);
|
2073
2258
|
if (!context) return null;
|
2074
|
-
if (context.
|
2259
|
+
if (context.source !== "edit-composer")
|
2075
2260
|
throw new Error(
|
2076
|
-
"This component must be used within a ComposerPrimitive.Attachments component."
|
2261
|
+
"This component must be used within a messages's ComposerPrimitive.Attachments component."
|
2077
2262
|
);
|
2078
2263
|
return context;
|
2079
2264
|
}
|
2080
2265
|
function useMessageAttachmentContext(options) {
|
2081
2266
|
const context = useAttachmentContext(options);
|
2082
2267
|
if (!context) return null;
|
2083
|
-
if (context.
|
2268
|
+
if (context.source !== "message")
|
2084
2269
|
throw new Error(
|
2085
2270
|
"This component must be used within a MessagePrimitive.Attachments component."
|
2086
2271
|
);
|
2087
2272
|
return context;
|
2088
2273
|
}
|
2089
|
-
|
2274
|
+
function useAttachmentRuntime(options) {
|
2275
|
+
const attachmentRuntime = useAttachmentContext(options);
|
2276
|
+
if (!attachmentRuntime) return null;
|
2277
|
+
return attachmentRuntime.useAttachmentRuntime();
|
2278
|
+
}
|
2279
|
+
var { useAttachment } = createContextStoreHook(
|
2090
2280
|
useAttachmentContext,
|
2091
2281
|
"useAttachment"
|
2092
2282
|
);
|
2093
|
-
var {
|
2094
|
-
|
2095
|
-
|
2096
|
-
|
2097
|
-
|
2098
|
-
|
2099
|
-
useAttachmentStore: useMessageAttachmentStore
|
2100
|
-
} = createContextStoreHook(useMessageAttachmentContext, "useAttachment");
|
2283
|
+
var { useAttachment: useThreadComposerAttachment } = createContextStoreHook(useThreadComposerAttachmentContext, "useAttachment");
|
2284
|
+
var { useAttachment: useEditComposerAttachment } = createContextStoreHook(useEditComposerAttachmentContext, "useAttachment");
|
2285
|
+
var { useAttachment: useMessageAttachment } = createContextStoreHook(
|
2286
|
+
useMessageAttachmentContext,
|
2287
|
+
"useAttachment"
|
2288
|
+
);
|
2101
2289
|
|
2102
|
-
// src/context/providers/
|
2103
|
-
import {
|
2290
|
+
// src/context/providers/AttachmentRuntimeProvider.tsx
|
2291
|
+
import {
|
2292
|
+
useEffect as useEffect10,
|
2293
|
+
useMemo as useMemo7,
|
2294
|
+
useState as useState8
|
2295
|
+
} from "react";
|
2104
2296
|
import { create as create8 } from "zustand";
|
2105
2297
|
import { jsx as jsx22 } from "react/jsx-runtime";
|
2106
|
-
var
|
2107
|
-
|
2108
|
-
const attachments = message.attachments;
|
2109
|
-
const attachment = attachments[partIndex];
|
2110
|
-
if (!attachment) return null;
|
2111
|
-
const currentState = useAttachment2?.getState();
|
2112
|
-
if (currentState && currentState.attachment === attachment) return null;
|
2113
|
-
return Object.freeze({ attachment });
|
2114
|
-
};
|
2115
|
-
var useMessageAttachmentContext2 = (partIndex) => {
|
2116
|
-
const messageStore = useMessageStore();
|
2117
|
-
const [context] = useState8(
|
2118
|
-
() => {
|
2119
|
-
const useAttachment2 = create8(
|
2120
|
-
() => getAttachment(messageStore.getState(), void 0, partIndex)
|
2121
|
-
);
|
2122
|
-
return { type: "message", useAttachment: useAttachment2 };
|
2123
|
-
}
|
2124
|
-
);
|
2298
|
+
var useAttachmentRuntimeStore = (runtime) => {
|
2299
|
+
const [store] = useState8(() => create8(() => runtime));
|
2125
2300
|
useEffect10(() => {
|
2126
|
-
|
2127
|
-
|
2128
|
-
|
2129
|
-
|
2130
|
-
|
2131
|
-
|
2132
|
-
|
2133
|
-
|
2134
|
-
|
2135
|
-
|
2136
|
-
|
2137
|
-
|
2138
|
-
return context;
|
2301
|
+
writableStore(store).setState(runtime, true);
|
2302
|
+
}, [runtime, store]);
|
2303
|
+
return store;
|
2304
|
+
};
|
2305
|
+
var useAttachmentStore = (runtime) => {
|
2306
|
+
const [store] = useState8(() => create8(() => runtime.getState()));
|
2307
|
+
useEffect10(() => {
|
2308
|
+
const updateState = () => writableStore(store).setState(runtime.getState(), true);
|
2309
|
+
updateState();
|
2310
|
+
return runtime.subscribe(updateState);
|
2311
|
+
}, [runtime, store]);
|
2312
|
+
return store;
|
2139
2313
|
};
|
2140
|
-
var
|
2141
|
-
|
2314
|
+
var AttachmentRuntimeProvider = ({
|
2315
|
+
runtime,
|
2142
2316
|
children
|
2143
2317
|
}) => {
|
2144
|
-
const
|
2318
|
+
const useAttachmentRuntime2 = useAttachmentRuntimeStore(runtime);
|
2319
|
+
const useAttachment2 = useAttachmentStore(runtime);
|
2320
|
+
const source = useAttachment2((s) => s.source);
|
2321
|
+
const context = useMemo7(() => {
|
2322
|
+
return {
|
2323
|
+
source,
|
2324
|
+
useAttachmentRuntime: useAttachmentRuntime2,
|
2325
|
+
useAttachment: useAttachment2
|
2326
|
+
};
|
2327
|
+
}, [useAttachmentRuntime2, useAttachment2]);
|
2145
2328
|
return /* @__PURE__ */ jsx22(AttachmentContext.Provider, { value: context, children });
|
2146
2329
|
};
|
2147
2330
|
|
@@ -2169,7 +2352,12 @@ var AttachmentComponent = ({ components }) => {
|
|
2169
2352
|
return /* @__PURE__ */ jsx23(Component, {});
|
2170
2353
|
};
|
2171
2354
|
var MessageAttachmentImpl = ({ components, attachmentIndex }) => {
|
2172
|
-
|
2355
|
+
const messageRuntime = useMessageRuntime();
|
2356
|
+
const runtime = useMemo8(
|
2357
|
+
() => messageRuntime.unstable_getAttachmentByIndex(attachmentIndex),
|
2358
|
+
[messageRuntime, attachmentIndex]
|
2359
|
+
);
|
2360
|
+
return /* @__PURE__ */ jsx23(AttachmentRuntimeProvider, { runtime, children: /* @__PURE__ */ jsx23(AttachmentComponent, { components }) });
|
2173
2361
|
};
|
2174
2362
|
var MessageAttachment = memo3(
|
2175
2363
|
MessageAttachmentImpl,
|
@@ -2343,51 +2531,8 @@ var ComposerPrimitiveAddAttachment = createActionButton(
|
|
2343
2531
|
);
|
2344
2532
|
|
2345
2533
|
// src/primitives/composer/ComposerAttachments.tsx
|
2346
|
-
import { memo as memo4 } from "react";
|
2347
|
-
|
2348
|
-
// src/context/providers/ComposerAttachmentProvider.tsx
|
2349
|
-
import { useEffect as useEffect12, useState as useState9 } from "react";
|
2350
|
-
import { create as create9 } from "zustand";
|
2534
|
+
import { memo as memo4, useMemo as useMemo9 } from "react";
|
2351
2535
|
import { jsx as jsx27 } from "react/jsx-runtime";
|
2352
|
-
var getAttachment2 = ({ attachments }, useAttachment2, partIndex) => {
|
2353
|
-
const attachment = attachments[partIndex];
|
2354
|
-
if (!attachment) return null;
|
2355
|
-
const currentState = useAttachment2?.getState();
|
2356
|
-
if (currentState && currentState.attachment === attachment) return null;
|
2357
|
-
return Object.freeze({ attachment });
|
2358
|
-
};
|
2359
|
-
var useComposerAttachmentContext2 = (partIndex) => {
|
2360
|
-
const threadComposerStore = useThreadComposerStore();
|
2361
|
-
const [context] = useState9(
|
2362
|
-
() => {
|
2363
|
-
const useAttachment2 = create9(
|
2364
|
-
() => getAttachment2(threadComposerStore.getState(), void 0, partIndex)
|
2365
|
-
);
|
2366
|
-
return { type: "composer", useAttachment: useAttachment2 };
|
2367
|
-
}
|
2368
|
-
);
|
2369
|
-
useEffect12(() => {
|
2370
|
-
const syncAttachment = (composer) => {
|
2371
|
-
const newState = getAttachment2(
|
2372
|
-
composer,
|
2373
|
-
context.useAttachment,
|
2374
|
-
partIndex
|
2375
|
-
);
|
2376
|
-
if (!newState) return;
|
2377
|
-
writableStore(context.useAttachment).setState(newState, true);
|
2378
|
-
};
|
2379
|
-
syncAttachment(threadComposerStore.getState());
|
2380
|
-
return threadComposerStore.subscribe(syncAttachment);
|
2381
|
-
}, [context, threadComposerStore, partIndex]);
|
2382
|
-
return context;
|
2383
|
-
};
|
2384
|
-
var ComposerAttachmentProvider = ({ attachmentIndex: partIndex, children }) => {
|
2385
|
-
const context = useComposerAttachmentContext2(partIndex);
|
2386
|
-
return /* @__PURE__ */ jsx27(AttachmentContext.Provider, { value: context, children });
|
2387
|
-
};
|
2388
|
-
|
2389
|
-
// src/primitives/composer/ComposerAttachments.tsx
|
2390
|
-
import { jsx as jsx28 } from "react/jsx-runtime";
|
2391
2536
|
var getComponent2 = (components, attachment) => {
|
2392
2537
|
const type = attachment.type;
|
2393
2538
|
switch (type) {
|
@@ -2403,22 +2548,27 @@ var getComponent2 = (components, attachment) => {
|
|
2403
2548
|
}
|
2404
2549
|
};
|
2405
2550
|
var AttachmentComponent2 = ({ components }) => {
|
2406
|
-
const Component =
|
2407
|
-
(a) => getComponent2(components, a
|
2551
|
+
const Component = useThreadComposerAttachment(
|
2552
|
+
(a) => getComponent2(components, a)
|
2408
2553
|
);
|
2409
2554
|
if (!Component) return null;
|
2410
|
-
return /* @__PURE__ */
|
2555
|
+
return /* @__PURE__ */ jsx27(Component, {});
|
2411
2556
|
};
|
2412
2557
|
var ComposerAttachmentImpl = ({ components, attachmentIndex }) => {
|
2413
|
-
|
2558
|
+
const composerRuntime = useComposerRuntime();
|
2559
|
+
const runtime = useMemo9(
|
2560
|
+
() => composerRuntime.unstable_getAttachmentByIndex(attachmentIndex),
|
2561
|
+
[composerRuntime, attachmentIndex]
|
2562
|
+
);
|
2563
|
+
return /* @__PURE__ */ jsx27(AttachmentRuntimeProvider, { runtime, children: /* @__PURE__ */ jsx27(AttachmentComponent2, { components }) });
|
2414
2564
|
};
|
2415
2565
|
var ComposerAttachment = memo4(
|
2416
2566
|
ComposerAttachmentImpl,
|
2417
2567
|
(prev, next) => prev.attachmentIndex === next.attachmentIndex && prev.components?.Image === next.components?.Image && prev.components?.Document === next.components?.Document && prev.components?.File === next.components?.File && prev.components?.Attachment === next.components?.Attachment
|
2418
2568
|
);
|
2419
2569
|
var ComposerPrimitiveAttachments = ({ components }) => {
|
2420
|
-
const attachmentsCount =
|
2421
|
-
return Array.from({ length: attachmentsCount }, (_, index) => /* @__PURE__ */
|
2570
|
+
const attachmentsCount = useComposer((s) => s.attachments.length);
|
2571
|
+
return Array.from({ length: attachmentsCount }, (_, index) => /* @__PURE__ */ jsx27(
|
2422
2572
|
ComposerAttachment,
|
2423
2573
|
{
|
2424
2574
|
attachmentIndex: index,
|
@@ -2463,9 +2613,9 @@ __export(thread_exports, {
|
|
2463
2613
|
// src/primitives/thread/ThreadRoot.tsx
|
2464
2614
|
import { Primitive as Primitive11 } from "@radix-ui/react-primitive";
|
2465
2615
|
import { forwardRef as forwardRef17 } from "react";
|
2466
|
-
import { jsx as
|
2616
|
+
import { jsx as jsx28 } from "react/jsx-runtime";
|
2467
2617
|
var ThreadPrimitiveRoot = forwardRef17((props, ref) => {
|
2468
|
-
return /* @__PURE__ */
|
2618
|
+
return /* @__PURE__ */ jsx28(Primitive11.div, { ...props, ref });
|
2469
2619
|
});
|
2470
2620
|
ThreadPrimitiveRoot.displayName = "ThreadPrimitive.Root";
|
2471
2621
|
|
@@ -2539,11 +2689,11 @@ var useOnResizeContent = (callback) => {
|
|
2539
2689
|
|
2540
2690
|
// src/utils/hooks/useOnScrollToBottom.tsx
|
2541
2691
|
import { useCallbackRef as useCallbackRef4 } from "@radix-ui/react-use-callback-ref";
|
2542
|
-
import { useEffect as
|
2692
|
+
import { useEffect as useEffect12 } from "react";
|
2543
2693
|
var useOnScrollToBottom = (callback) => {
|
2544
2694
|
const callbackRef = useCallbackRef4(callback);
|
2545
2695
|
const threadViewportStore = useThreadViewportStore();
|
2546
|
-
|
2696
|
+
useEffect12(() => {
|
2547
2697
|
return threadViewportStore.getState().onScrollToBottom(() => {
|
2548
2698
|
callbackRef();
|
2549
2699
|
});
|
@@ -2602,26 +2752,26 @@ var useThreadViewportAutoScroll = ({
|
|
2602
2752
|
};
|
2603
2753
|
|
2604
2754
|
// src/primitives/thread/ThreadViewport.tsx
|
2605
|
-
import { jsx as
|
2755
|
+
import { jsx as jsx29 } from "react/jsx-runtime";
|
2606
2756
|
var ThreadPrimitiveViewport = forwardRef18(({ autoScroll, children, ...rest }, forwardedRef) => {
|
2607
2757
|
const autoScrollRef = useThreadViewportAutoScroll({
|
2608
2758
|
autoScroll
|
2609
2759
|
});
|
2610
2760
|
const ref = useComposedRefs4(forwardedRef, autoScrollRef);
|
2611
|
-
return /* @__PURE__ */
|
2761
|
+
return /* @__PURE__ */ jsx29(Primitive12.div, { ...rest, ref, children });
|
2612
2762
|
});
|
2613
2763
|
ThreadPrimitiveViewport.displayName = "ThreadPrimitive.Viewport";
|
2614
2764
|
|
2615
2765
|
// src/primitives/thread/ThreadMessages.tsx
|
2616
|
-
import { memo as memo5, useMemo as
|
2766
|
+
import { memo as memo5, useMemo as useMemo10 } from "react";
|
2617
2767
|
|
2618
2768
|
// src/context/providers/MessageRuntimeProvider.tsx
|
2619
|
-
import { useEffect as
|
2620
|
-
import { create as
|
2769
|
+
import { useEffect as useEffect13, useState as useState9 } from "react";
|
2770
|
+
import { create as create10 } from "zustand";
|
2621
2771
|
|
2622
2772
|
// src/context/stores/MessageUtils.ts
|
2623
|
-
import { create as
|
2624
|
-
var makeMessageUtilsStore = () =>
|
2773
|
+
import { create as create9 } from "zustand";
|
2774
|
+
var makeMessageUtilsStore = () => create9((set) => {
|
2625
2775
|
let utterance = null;
|
2626
2776
|
return {
|
2627
2777
|
isCopied: false,
|
@@ -2651,17 +2801,17 @@ var makeMessageUtilsStore = () => create10((set) => {
|
|
2651
2801
|
});
|
2652
2802
|
|
2653
2803
|
// src/context/providers/MessageRuntimeProvider.tsx
|
2654
|
-
import { jsx as
|
2804
|
+
import { jsx as jsx30 } from "react/jsx-runtime";
|
2655
2805
|
var useMessageRuntimeStore = (runtime) => {
|
2656
|
-
const [store] =
|
2657
|
-
|
2806
|
+
const [store] = useState9(() => create10(() => runtime));
|
2807
|
+
useEffect13(() => {
|
2658
2808
|
writableStore(store).setState(runtime, true);
|
2659
2809
|
}, [runtime, store]);
|
2660
2810
|
return store;
|
2661
2811
|
};
|
2662
2812
|
var useMessageStore2 = (runtime) => {
|
2663
|
-
const [store] =
|
2664
|
-
|
2813
|
+
const [store] = useState9(() => create10(() => runtime.getState()));
|
2814
|
+
useEffect13(() => {
|
2665
2815
|
const updateState = () => writableStore(store).setState(runtime.getState(), true);
|
2666
2816
|
updateState();
|
2667
2817
|
return runtime.subscribe(updateState);
|
@@ -2669,13 +2819,13 @@ var useMessageStore2 = (runtime) => {
|
|
2669
2819
|
return store;
|
2670
2820
|
};
|
2671
2821
|
var useMessageUtilsStore2 = () => {
|
2672
|
-
const [store] =
|
2822
|
+
const [store] = useState9(() => makeMessageUtilsStore());
|
2673
2823
|
return store;
|
2674
2824
|
};
|
2675
2825
|
var useEditComposerStore2 = (useMessageRuntime2) => {
|
2676
2826
|
const runtime = useMessageRuntime2.getState().composer;
|
2677
|
-
const [store] =
|
2678
|
-
|
2827
|
+
const [store] = useState9(() => create10(() => runtime.getState()));
|
2828
|
+
useEffect13(() => {
|
2679
2829
|
const updateState = () => writableStore(store).setState(runtime.getState());
|
2680
2830
|
updateState();
|
2681
2831
|
return runtime.subscribe(updateState);
|
@@ -2690,14 +2840,14 @@ var MessageRuntimeProvider = ({
|
|
2690
2840
|
const useMessage2 = useMessageStore2(runtime);
|
2691
2841
|
const useMessageUtils2 = useMessageUtilsStore2();
|
2692
2842
|
const useEditComposer2 = useEditComposerStore2(useMessageRuntime2);
|
2693
|
-
const [context] =
|
2843
|
+
const [context] = useState9(() => {
|
2694
2844
|
return { useMessageRuntime: useMessageRuntime2, useMessage: useMessage2, useMessageUtils: useMessageUtils2, useEditComposer: useEditComposer2 };
|
2695
2845
|
});
|
2696
|
-
return /* @__PURE__ */
|
2846
|
+
return /* @__PURE__ */ jsx30(MessageContext.Provider, { value: context, children });
|
2697
2847
|
};
|
2698
2848
|
|
2699
2849
|
// src/primitives/thread/ThreadMessages.tsx
|
2700
|
-
import { jsx as
|
2850
|
+
import { jsx as jsx31 } from "react/jsx-runtime";
|
2701
2851
|
var isComponentsSame = (prev, next) => {
|
2702
2852
|
return prev.Message === next.Message && prev.EditComposer === next.EditComposer && prev.UserEditComposer === next.UserEditComposer && prev.AssistantEditComposer === next.AssistantEditComposer && prev.SystemEditComposer === next.SystemEditComposer && prev.UserMessage === next.UserMessage && prev.AssistantMessage === next.AssistantMessage && prev.SystemMessage === next.SystemMessage;
|
2703
2853
|
};
|
@@ -2733,18 +2883,18 @@ var ThreadMessageComponent = ({
|
|
2733
2883
|
const role = useMessage((m) => m.role);
|
2734
2884
|
const isEditing = useEditComposer((c) => c.isEditing);
|
2735
2885
|
const Component = getComponent3(components, role, isEditing);
|
2736
|
-
return /* @__PURE__ */
|
2886
|
+
return /* @__PURE__ */ jsx31(Component, {});
|
2737
2887
|
};
|
2738
2888
|
var ThreadMessageImpl = ({
|
2739
2889
|
messageIndex,
|
2740
2890
|
components
|
2741
2891
|
}) => {
|
2742
2892
|
const threadRuntime = useThreadRuntime();
|
2743
|
-
const runtime =
|
2893
|
+
const runtime = useMemo10(
|
2744
2894
|
() => threadRuntime.unstable_getMesssageByIndex(messageIndex),
|
2745
2895
|
[threadRuntime, messageIndex]
|
2746
2896
|
);
|
2747
|
-
return /* @__PURE__ */
|
2897
|
+
return /* @__PURE__ */ jsx31(MessageRuntimeProvider, { runtime, children: /* @__PURE__ */ jsx31(ThreadMessageComponent, { components }) });
|
2748
2898
|
};
|
2749
2899
|
var ThreadMessage = memo5(
|
2750
2900
|
ThreadMessageImpl,
|
@@ -2755,7 +2905,7 @@ var ThreadPrimitiveMessagesImpl = ({
|
|
2755
2905
|
}) => {
|
2756
2906
|
const messagesLength = useThread((t) => t.messages.length);
|
2757
2907
|
if (messagesLength === 0) return null;
|
2758
|
-
return Array.from({ length: messagesLength }, (_, index) => /* @__PURE__ */
|
2908
|
+
return Array.from({ length: messagesLength }, (_, index) => /* @__PURE__ */ jsx31(ThreadMessage, { messageIndex: index, components }, index));
|
2759
2909
|
};
|
2760
2910
|
ThreadPrimitiveMessagesImpl.displayName = "ThreadPrimitive.Messages";
|
2761
2911
|
var ThreadPrimitiveMessages = memo5(
|
@@ -2797,7 +2947,7 @@ var subscribeToMainThread = (runtime, callback) => {
|
|
2797
2947
|
};
|
2798
2948
|
|
2799
2949
|
// src/runtimes/local/useLocalRuntime.tsx
|
2800
|
-
import { useInsertionEffect, useMemo as
|
2950
|
+
import { useInsertionEffect, useMemo as useMemo11, useState as useState11 } from "react";
|
2801
2951
|
|
2802
2952
|
// src/runtimes/core/BaseAssistantRuntimeCore.tsx
|
2803
2953
|
var BaseAssistantRuntimeCore = class {
|
@@ -2839,6 +2989,7 @@ __export(internal_exports, {
|
|
2839
2989
|
});
|
2840
2990
|
|
2841
2991
|
// src/runtimes/composer/BaseComposerRuntimeCore.tsx
|
2992
|
+
var isAttachmentComplete = (a) => a.status.type === "complete";
|
2842
2993
|
var BaseComposerRuntimeCore = class {
|
2843
2994
|
isEditing = true;
|
2844
2995
|
attachmentAccept = "*";
|
@@ -2868,9 +3019,14 @@ var BaseComposerRuntimeCore = class {
|
|
2868
3019
|
}
|
2869
3020
|
async send() {
|
2870
3021
|
const attachments = this._attachmentAdapter ? await Promise.all(
|
2871
|
-
this.attachments.map(
|
2872
|
-
|
2873
|
-
|
3022
|
+
this.attachments.map(async (a) => {
|
3023
|
+
if (isAttachmentComplete(a)) return a;
|
3024
|
+
const result = await this._attachmentAdapter.send(a);
|
3025
|
+
if (result.status?.type !== "complete") {
|
3026
|
+
result.status = { type: "complete" };
|
3027
|
+
}
|
3028
|
+
return result;
|
3029
|
+
})
|
2874
3030
|
) : [];
|
2875
3031
|
const message = {
|
2876
3032
|
role: "user",
|
@@ -2893,6 +3049,9 @@ var BaseComposerRuntimeCore = class {
|
|
2893
3049
|
if (!this._attachmentAdapter)
|
2894
3050
|
throw new Error("Attachments are not supported");
|
2895
3051
|
const attachment = await this._attachmentAdapter.add({ file });
|
3052
|
+
if (attachment.status === void 0) {
|
3053
|
+
attachment.status = { type: "requires-action", reason: "composer-send" };
|
3054
|
+
}
|
2896
3055
|
this._attachments = [...this._attachments, attachment];
|
2897
3056
|
this.notifySubscribers();
|
2898
3057
|
}
|
@@ -2927,6 +3086,9 @@ var DefaultThreadComposerRuntimeCore = class extends BaseComposerRuntimeCore {
|
|
2927
3086
|
get canCancel() {
|
2928
3087
|
return this._canCancel;
|
2929
3088
|
}
|
3089
|
+
get attachments() {
|
3090
|
+
return super.attachments;
|
3091
|
+
}
|
2930
3092
|
connect() {
|
2931
3093
|
return this.runtime.subscribe(() => {
|
2932
3094
|
if (this.canCancel !== this.runtime.capabilities.cancel) {
|
@@ -3220,7 +3382,7 @@ import {
|
|
3220
3382
|
forwardRef as forwardRef19
|
3221
3383
|
} from "react";
|
3222
3384
|
import classNames from "classnames";
|
3223
|
-
import { jsx as
|
3385
|
+
import { jsx as jsx32 } from "react/jsx-runtime";
|
3224
3386
|
var withDefaultProps = ({
|
3225
3387
|
className,
|
3226
3388
|
...defaultProps
|
@@ -3236,7 +3398,7 @@ var withDefaults = (Component, defaultProps) => {
|
|
3236
3398
|
const WithDefaults = forwardRef19(
|
3237
3399
|
(props, ref) => {
|
3238
3400
|
const ComponentAsAny = Component;
|
3239
|
-
return /* @__PURE__ */
|
3401
|
+
return /* @__PURE__ */ jsx32(ComponentAsAny, { ...getProps(props), ref });
|
3240
3402
|
}
|
3241
3403
|
);
|
3242
3404
|
WithDefaults.displayName = "withDefaults(" + (typeof Component === "string" ? Component : Component.displayName) + ")";
|
@@ -3244,9 +3406,9 @@ var withDefaults = (Component, defaultProps) => {
|
|
3244
3406
|
};
|
3245
3407
|
|
3246
3408
|
// src/ui/base/tooltip.tsx
|
3247
|
-
import { jsx as
|
3409
|
+
import { jsx as jsx33 } from "react/jsx-runtime";
|
3248
3410
|
var Tooltip = (props) => {
|
3249
|
-
return /* @__PURE__ */
|
3411
|
+
return /* @__PURE__ */ jsx33(TooltipPrimitive.Provider, { children: /* @__PURE__ */ jsx33(TooltipPrimitive.Root, { ...props }) });
|
3250
3412
|
};
|
3251
3413
|
Tooltip.displayName = "Tooltip";
|
3252
3414
|
var TooltipTrigger = TooltipPrimitive.Trigger;
|
@@ -3260,7 +3422,7 @@ TooltipContent.displayName = "TooltipContent";
|
|
3260
3422
|
import { cva } from "class-variance-authority";
|
3261
3423
|
import { Primitive as Primitive13 } from "@radix-ui/react-primitive";
|
3262
3424
|
import { forwardRef as forwardRef20 } from "react";
|
3263
|
-
import { jsx as
|
3425
|
+
import { jsx as jsx34 } from "react/jsx-runtime";
|
3264
3426
|
var buttonVariants = cva("aui-button", {
|
3265
3427
|
variants: {
|
3266
3428
|
variant: {
|
@@ -3280,7 +3442,7 @@ var buttonVariants = cva("aui-button", {
|
|
3280
3442
|
});
|
3281
3443
|
var Button = forwardRef20(
|
3282
3444
|
({ className, variant, size, ...props }, ref) => {
|
3283
|
-
return /* @__PURE__ */
|
3445
|
+
return /* @__PURE__ */ jsx34(
|
3284
3446
|
Primitive13.button,
|
3285
3447
|
{
|
3286
3448
|
className: buttonVariants({ variant, size, className }),
|
@@ -3293,14 +3455,14 @@ var Button = forwardRef20(
|
|
3293
3455
|
Button.displayName = "Button";
|
3294
3456
|
|
3295
3457
|
// src/ui/base/tooltip-icon-button.tsx
|
3296
|
-
import { jsx as
|
3458
|
+
import { jsx as jsx35, jsxs as jsxs2 } from "react/jsx-runtime";
|
3297
3459
|
var TooltipIconButton = forwardRef21(({ children, tooltip, side = "bottom", ...rest }, ref) => {
|
3298
|
-
return /* @__PURE__ */
|
3299
|
-
/* @__PURE__ */
|
3460
|
+
return /* @__PURE__ */ jsxs2(Tooltip, { children: [
|
3461
|
+
/* @__PURE__ */ jsx35(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxs2(Button, { variant: "ghost", size: "icon", ...rest, ref, children: [
|
3300
3462
|
children,
|
3301
|
-
/* @__PURE__ */
|
3463
|
+
/* @__PURE__ */ jsx35("span", { className: "aui-sr-only", children: tooltip })
|
3302
3464
|
] }) }),
|
3303
|
-
/* @__PURE__ */
|
3465
|
+
/* @__PURE__ */ jsx35(TooltipContent, { side, children: tooltip })
|
3304
3466
|
] });
|
3305
3467
|
});
|
3306
3468
|
TooltipIconButton.displayName = "TooltipIconButton";
|
@@ -3335,37 +3497,6 @@ var AssistantRuntime = class {
|
|
3335
3497
|
}
|
3336
3498
|
};
|
3337
3499
|
|
3338
|
-
// src/api/subscribable/LazyMemoizeSubject.ts
|
3339
|
-
var LazyMemoizeSubject = class extends BaseSubject {
|
3340
|
-
constructor(binding) {
|
3341
|
-
super();
|
3342
|
-
this.binding = binding;
|
3343
|
-
const state = binding.getState();
|
3344
|
-
if (state === void 0)
|
3345
|
-
throw new Error("Entry not available in the store");
|
3346
|
-
this._previousState = state;
|
3347
|
-
}
|
3348
|
-
_previousStateDirty = true;
|
3349
|
-
_previousState;
|
3350
|
-
getState = () => {
|
3351
|
-
if (!this.isConnected || this._previousStateDirty) {
|
3352
|
-
const newState = this.binding.getState();
|
3353
|
-
if (newState !== void 0) {
|
3354
|
-
this._previousState = newState;
|
3355
|
-
}
|
3356
|
-
this._previousStateDirty = false;
|
3357
|
-
}
|
3358
|
-
return this._previousState;
|
3359
|
-
};
|
3360
|
-
_connect() {
|
3361
|
-
const callback = () => {
|
3362
|
-
this._previousStateDirty = true;
|
3363
|
-
this.notifySubscribers();
|
3364
|
-
};
|
3365
|
-
return this.binding.subscribe(callback);
|
3366
|
-
}
|
3367
|
-
};
|
3368
|
-
|
3369
3500
|
// src/api/ThreadRuntime.ts
|
3370
3501
|
var toAppendMessage = (messages2, message) => {
|
3371
3502
|
if (typeof message === "string") {
|
@@ -3393,8 +3524,7 @@ var getThreadState = (runtime) => {
|
|
3393
3524
|
capabilities: runtime.capabilities,
|
3394
3525
|
isDisabled: runtime.isDisabled,
|
3395
3526
|
isRunning: lastMessage?.role !== "assistant" ? false : lastMessage.status.type === "running",
|
3396
|
-
messages: runtime.messages
|
3397
|
-
unstable_synchronizer: runtime.unstable_synchronizer
|
3527
|
+
messages: runtime.messages
|
3398
3528
|
});
|
3399
3529
|
};
|
3400
3530
|
var ThreadRuntime = class {
|
@@ -3444,7 +3574,7 @@ var ThreadRuntime = class {
|
|
3444
3574
|
subscribe: (callback) => threadBinding.subscribe(callback)
|
3445
3575
|
};
|
3446
3576
|
}
|
3447
|
-
composer = new
|
3577
|
+
composer = new ThreadComposerRuntime(
|
3448
3578
|
new NestedSubscriptionSubject({
|
3449
3579
|
getState: () => this._threadBinding.getState().composer,
|
3450
3580
|
subscribe: (callback) => this._threadBinding.subscribe(callback)
|
@@ -3501,13 +3631,13 @@ var ThreadRuntime = class {
|
|
3501
3631
|
return this._threadBinding.getState().submitFeedback(options);
|
3502
3632
|
}
|
3503
3633
|
/**
|
3504
|
-
* @deprecated
|
3634
|
+
* @deprecated Use `getMesssageById(id).unstable_getMessageByIndex(idx).composer` instead. This will be removed in 0.6.0.
|
3505
3635
|
*/
|
3506
3636
|
getEditComposer(messageId) {
|
3507
3637
|
return this._threadBinding.getState().getEditComposer(messageId);
|
3508
3638
|
}
|
3509
3639
|
/**
|
3510
|
-
* @deprecated
|
3640
|
+
* @deprecated Use `getMesssageById(id).unstable_getMessageByIndex(idx).composer.beginEdit()` instead. This will be removed in 0.6.0.
|
3511
3641
|
*/
|
3512
3642
|
beginEdit(messageId) {
|
3513
3643
|
return this._threadBinding.getState().beginEdit(messageId);
|
@@ -3523,9 +3653,9 @@ var ThreadRuntime = class {
|
|
3523
3653
|
return new MessageRuntime(
|
3524
3654
|
new ShallowMemoizeSubject({
|
3525
3655
|
getState: () => {
|
3526
|
-
const messages2 = this.messages;
|
3656
|
+
const messages2 = this.getState().messages;
|
3527
3657
|
const message = messages2[idx];
|
3528
|
-
if (!message) return
|
3658
|
+
if (!message) return SKIP_UPDATE;
|
3529
3659
|
const branches = this._threadBinding.getState().getBranches(message.id);
|
3530
3660
|
return {
|
3531
3661
|
...message,
|
@@ -3583,6 +3713,9 @@ var fromLanguageModelMessages = (lm, { mergeRoundtrips }) => {
|
|
3583
3713
|
}
|
3584
3714
|
throw new Error("Only images with URL data are supported");
|
3585
3715
|
}
|
3716
|
+
case "file": {
|
3717
|
+
throw new Error("File content parts are not supported");
|
3718
|
+
}
|
3586
3719
|
default: {
|
3587
3720
|
const unhandledType = type;
|
3588
3721
|
throw new Error(`Unknown content part type: ${unhandledType}`);
|
@@ -3708,7 +3841,7 @@ var streamUtils = {
|
|
3708
3841
|
};
|
3709
3842
|
|
3710
3843
|
// src/runtimes/edge/useEdgeRuntime.ts
|
3711
|
-
import { useState as
|
3844
|
+
import { useState as useState10 } from "react";
|
3712
3845
|
|
3713
3846
|
// src/runtimes/edge/streams/assistantDecoderStream.ts
|
3714
3847
|
function assistantDecoderStream() {
|
@@ -3840,7 +3973,7 @@ var useEdgeRuntime = ({
|
|
3840
3973
|
adapters,
|
3841
3974
|
...options
|
3842
3975
|
}) => {
|
3843
|
-
const [adapter] =
|
3976
|
+
const [adapter] = useState10(() => new EdgeChatAdapter(options));
|
3844
3977
|
return useLocalRuntime(adapter, {
|
3845
3978
|
initialMessages,
|
3846
3979
|
maxToolRoundtrips,
|
@@ -4220,16 +4353,16 @@ var LocalRuntime = class extends AssistantRuntime {
|
|
4220
4353
|
}
|
4221
4354
|
};
|
4222
4355
|
var useLocalRuntime = (adapter, options = {}) => {
|
4223
|
-
const [runtime] =
|
4356
|
+
const [runtime] = useState11(() => new LocalRuntimeCore(adapter, options));
|
4224
4357
|
useInsertionEffect(() => {
|
4225
4358
|
runtime.thread.adapter = adapter;
|
4226
4359
|
runtime.thread.options = options;
|
4227
4360
|
});
|
4228
|
-
return
|
4361
|
+
return useMemo11(() => new LocalRuntime(runtime), [runtime]);
|
4229
4362
|
};
|
4230
4363
|
|
4231
4364
|
// src/runtimes/external-store/useExternalStoreRuntime.tsx
|
4232
|
-
import { useEffect as
|
4365
|
+
import { useEffect as useEffect14, useMemo as useMemo12, useState as useState12 } from "react";
|
4233
4366
|
|
4234
4367
|
// src/runtimes/external-store/getExternalStoreMessage.tsx
|
4235
4368
|
var symbolInnerMessage = Symbol("innerMessage");
|
@@ -4582,15 +4715,15 @@ var ExternalStoreRuntimeCore = class extends BaseAssistantRuntimeCore {
|
|
4582
4715
|
|
4583
4716
|
// src/runtimes/external-store/useExternalStoreRuntime.tsx
|
4584
4717
|
var useExternalStoreRuntime = (store) => {
|
4585
|
-
const [runtime] =
|
4586
|
-
|
4718
|
+
const [runtime] = useState12(() => new ExternalStoreRuntimeCore(store));
|
4719
|
+
useEffect14(() => {
|
4587
4720
|
runtime.thread.store = store;
|
4588
4721
|
});
|
4589
|
-
return
|
4722
|
+
return useMemo12(() => new AssistantRuntime(runtime, ThreadRuntime), [runtime]);
|
4590
4723
|
};
|
4591
4724
|
|
4592
4725
|
// src/runtimes/external-store/external-message-converter.tsx
|
4593
|
-
import { useMemo as
|
4726
|
+
import { useMemo as useMemo13 } from "react";
|
4594
4727
|
var joinExternalMessages = (messages2) => {
|
4595
4728
|
const assistantMessage = {
|
4596
4729
|
role: "assistant",
|
@@ -4676,7 +4809,7 @@ var useExternalMessageConverter = ({
|
|
4676
4809
|
messages: messages2,
|
4677
4810
|
isRunning
|
4678
4811
|
}) => {
|
4679
|
-
const state =
|
4812
|
+
const state = useMemo13(
|
4680
4813
|
() => ({
|
4681
4814
|
callback,
|
4682
4815
|
callbackCache: /* @__PURE__ */ new WeakMap(),
|
@@ -4685,7 +4818,7 @@ var useExternalMessageConverter = ({
|
|
4685
4818
|
}),
|
4686
4819
|
[callback]
|
4687
4820
|
);
|
4688
|
-
return
|
4821
|
+
return useMemo13(() => {
|
4689
4822
|
const callbackResults = [];
|
4690
4823
|
for (const message of messages2) {
|
4691
4824
|
let result = state.callbackCache.get(message);
|
@@ -4736,7 +4869,7 @@ var shallowArrayEqual = (a, b) => {
|
|
4736
4869
|
};
|
4737
4870
|
|
4738
4871
|
// src/runtimes/dangerous-in-browser/useDangerousInBrowserRuntime.ts
|
4739
|
-
import { useState as
|
4872
|
+
import { useState as useState13 } from "react";
|
4740
4873
|
|
4741
4874
|
// src/runtimes/dangerous-in-browser/DangerousInBrowserAdapter.ts
|
4742
4875
|
var DangerousInBrowserAdapter = class {
|
@@ -4767,7 +4900,7 @@ var useDangerousInBrowserRuntime = ({
|
|
4767
4900
|
initialMessages,
|
4768
4901
|
...options
|
4769
4902
|
}) => {
|
4770
|
-
const [adapter] =
|
4903
|
+
const [adapter] = useState13(() => new DangerousInBrowserAdapter(options));
|
4771
4904
|
return useLocalRuntime(adapter, { initialMessages });
|
4772
4905
|
};
|
4773
4906
|
|
@@ -4820,12 +4953,15 @@ var SimpleImageAttachmentAdapter = class {
|
|
4820
4953
|
id: state.file.name,
|
4821
4954
|
type: "image",
|
4822
4955
|
name: state.file.name,
|
4823
|
-
|
4956
|
+
contentType: state.file.type,
|
4957
|
+
file: state.file,
|
4958
|
+
status: { type: "requires-action", reason: "composer-send" }
|
4824
4959
|
};
|
4825
4960
|
}
|
4826
4961
|
async send(attachment) {
|
4827
4962
|
return {
|
4828
4963
|
...attachment,
|
4964
|
+
status: { type: "complete" },
|
4829
4965
|
content: [
|
4830
4966
|
{
|
4831
4967
|
type: "image",
|
@@ -4852,12 +4988,15 @@ var SimpleTextAttachmentAdapter = class {
|
|
4852
4988
|
id: state.file.name,
|
4853
4989
|
type: "document",
|
4854
4990
|
name: state.file.name,
|
4855
|
-
|
4991
|
+
contentType: state.file.type,
|
4992
|
+
file: state.file,
|
4993
|
+
status: { type: "requires-action", reason: "composer-send" }
|
4856
4994
|
};
|
4857
4995
|
}
|
4858
4996
|
async send(attachment) {
|
4859
4997
|
return {
|
4860
4998
|
...attachment,
|
4999
|
+
status: { type: "complete" },
|
4861
5000
|
content: [
|
4862
5001
|
{
|
4863
5002
|
type: "text",
|
@@ -4940,7 +5079,14 @@ var CompositeAttachmentAdapter = class {
|
|
4940
5079
|
async remove(attachment) {
|
4941
5080
|
const adapters = this._adapters.slice();
|
4942
5081
|
for (const adapter of adapters) {
|
4943
|
-
if (fileMatchesAccept(
|
5082
|
+
if (fileMatchesAccept(
|
5083
|
+
{
|
5084
|
+
name: attachment.name,
|
5085
|
+
type: attachment.contentType ?? "unknown/unknown"
|
5086
|
+
// TODO remove after 0.6.0
|
5087
|
+
},
|
5088
|
+
adapter.accept
|
5089
|
+
)) {
|
4944
5090
|
return adapter.remove(attachment);
|
4945
5091
|
}
|
4946
5092
|
}
|
@@ -4953,7 +5099,7 @@ import {
|
|
4953
5099
|
createContext as createContext7,
|
4954
5100
|
useContext as useContext4
|
4955
5101
|
} from "react";
|
4956
|
-
import { Fragment as Fragment3, jsx as
|
5102
|
+
import { Fragment as Fragment3, jsx as jsx36 } from "react/jsx-runtime";
|
4957
5103
|
var ThreadConfigContext = createContext7({});
|
4958
5104
|
var useThreadConfig = () => {
|
4959
5105
|
return useContext4(ThreadConfigContext);
|
@@ -4963,14 +5109,14 @@ var ThreadConfigProvider = ({
|
|
4963
5109
|
config
|
4964
5110
|
}) => {
|
4965
5111
|
const hasAssistant = !!useAssistantRuntime({ optional: true });
|
4966
|
-
const configProvider = config && Object.keys(config ?? {}).length > 0 ? /* @__PURE__ */
|
5112
|
+
const configProvider = config && Object.keys(config ?? {}).length > 0 ? /* @__PURE__ */ jsx36(ThreadConfigContext.Provider, { value: config, children }) : /* @__PURE__ */ jsx36(Fragment3, { children });
|
4967
5113
|
if (!config?.runtime) return configProvider;
|
4968
5114
|
if (hasAssistant) {
|
4969
5115
|
throw new Error(
|
4970
5116
|
"You provided a runtime to <Thread> while simulataneously using <AssistantRuntimeProvider>. This is not allowed."
|
4971
5117
|
);
|
4972
5118
|
}
|
4973
|
-
return /* @__PURE__ */
|
5119
|
+
return /* @__PURE__ */ jsx36(AssistantRuntimeProvider, { runtime: config.runtime, children: configProvider });
|
4974
5120
|
};
|
4975
5121
|
ThreadConfigProvider.displayName = "ThreadConfigProvider";
|
4976
5122
|
|
@@ -4985,7 +5131,7 @@ import {
|
|
4985
5131
|
ThumbsDownIcon,
|
4986
5132
|
ThumbsUpIcon
|
4987
5133
|
} from "lucide-react";
|
4988
|
-
import { Fragment as Fragment4, jsx as
|
5134
|
+
import { Fragment as Fragment4, jsx as jsx37, jsxs as jsxs3 } from "react/jsx-runtime";
|
4989
5135
|
var useAllowCopy = (ensureCapability = false) => {
|
4990
5136
|
const { assistantMessage: { allowCopy = true } = {} } = useThreadConfig();
|
4991
5137
|
const copySupported = useThread((t) => t.capabilities.unstable_copy);
|
@@ -5019,18 +5165,18 @@ var AssistantActionBar = () => {
|
|
5019
5165
|
const allowFeedbackNegative = useAllowFeedbackNegative(true);
|
5020
5166
|
if (!allowCopy && !allowReload && !allowSpeak && !allowFeedbackPositive && !allowFeedbackNegative)
|
5021
5167
|
return null;
|
5022
|
-
return /* @__PURE__ */
|
5168
|
+
return /* @__PURE__ */ jsxs3(
|
5023
5169
|
AssistantActionBarRoot,
|
5024
5170
|
{
|
5025
5171
|
hideWhenRunning: true,
|
5026
5172
|
autohide: "not-last",
|
5027
5173
|
autohideFloat: "single-branch",
|
5028
5174
|
children: [
|
5029
|
-
allowSpeak && /* @__PURE__ */
|
5030
|
-
allowCopy && /* @__PURE__ */
|
5031
|
-
allowReload && /* @__PURE__ */
|
5032
|
-
allowFeedbackPositive && /* @__PURE__ */
|
5033
|
-
allowFeedbackNegative && /* @__PURE__ */
|
5175
|
+
allowSpeak && /* @__PURE__ */ jsx37(AssistantActionBarSpeechControl, {}),
|
5176
|
+
allowCopy && /* @__PURE__ */ jsx37(AssistantActionBarCopy, {}),
|
5177
|
+
allowReload && /* @__PURE__ */ jsx37(AssistantActionBarReload, {}),
|
5178
|
+
allowFeedbackPositive && /* @__PURE__ */ jsx37(AssistantActionBarFeedbackPositive, {}),
|
5179
|
+
allowFeedbackNegative && /* @__PURE__ */ jsx37(AssistantActionBarFeedbackNegative, {})
|
5034
5180
|
]
|
5035
5181
|
}
|
5036
5182
|
);
|
@@ -5046,16 +5192,16 @@ var AssistantActionBarCopy = forwardRef22((props, ref) => {
|
|
5046
5192
|
assistantMessage: { copy: { tooltip = "Copy" } = {} } = {}
|
5047
5193
|
} = {}
|
5048
5194
|
} = useThreadConfig();
|
5049
|
-
return /* @__PURE__ */
|
5050
|
-
/* @__PURE__ */
|
5051
|
-
/* @__PURE__ */
|
5195
|
+
return /* @__PURE__ */ jsx37(actionBar_exports.Copy, { asChild: true, children: /* @__PURE__ */ jsx37(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsxs3(Fragment4, { children: [
|
5196
|
+
/* @__PURE__ */ jsx37(message_exports.If, { copied: true, children: /* @__PURE__ */ jsx37(CheckIcon, {}) }),
|
5197
|
+
/* @__PURE__ */ jsx37(message_exports.If, { copied: false, children: /* @__PURE__ */ jsx37(CopyIcon, {}) })
|
5052
5198
|
] }) }) });
|
5053
5199
|
});
|
5054
5200
|
AssistantActionBarCopy.displayName = "AssistantActionBarCopy";
|
5055
5201
|
var AssistantActionBarSpeechControl = () => {
|
5056
|
-
return /* @__PURE__ */
|
5057
|
-
/* @__PURE__ */
|
5058
|
-
/* @__PURE__ */
|
5202
|
+
return /* @__PURE__ */ jsxs3(Fragment4, { children: [
|
5203
|
+
/* @__PURE__ */ jsx37(message_exports.If, { speaking: false, children: /* @__PURE__ */ jsx37(AssistantActionBarSpeak, {}) }),
|
5204
|
+
/* @__PURE__ */ jsx37(message_exports.If, { speaking: true, children: /* @__PURE__ */ jsx37(AssistantActionBarStopSpeaking, {}) })
|
5059
5205
|
] });
|
5060
5206
|
};
|
5061
5207
|
var AssistantActionBarSpeak = forwardRef22((props, ref) => {
|
@@ -5065,7 +5211,7 @@ var AssistantActionBarSpeak = forwardRef22((props, ref) => {
|
|
5065
5211
|
} = {}
|
5066
5212
|
} = useThreadConfig();
|
5067
5213
|
const allowSpeak = useAllowSpeak();
|
5068
|
-
return /* @__PURE__ */
|
5214
|
+
return /* @__PURE__ */ jsx37(actionBar_exports.Speak, { disabled: !allowSpeak, asChild: true, children: /* @__PURE__ */ jsx37(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx37(AudioLinesIcon, {}) }) });
|
5069
5215
|
});
|
5070
5216
|
AssistantActionBarSpeak.displayName = "AssistantActionBarSpeak";
|
5071
5217
|
var AssistantActionBarStopSpeaking = forwardRef22((props, ref) => {
|
@@ -5077,7 +5223,7 @@ var AssistantActionBarStopSpeaking = forwardRef22((props, ref) => {
|
|
5077
5223
|
} = {}
|
5078
5224
|
} = useThreadConfig();
|
5079
5225
|
const allowSpeak = useAllowSpeak();
|
5080
|
-
return /* @__PURE__ */
|
5226
|
+
return /* @__PURE__ */ jsx37(actionBar_exports.StopSpeaking, { disabled: !allowSpeak, asChild: true, children: /* @__PURE__ */ jsx37(TooltipIconButton, { tooltip: stopTooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx37(StopCircleIcon, {}) }) });
|
5081
5227
|
});
|
5082
5228
|
AssistantActionBarStopSpeaking.displayName = "AssistantActionBarStopSpeaking";
|
5083
5229
|
var AssistantActionBarReload = forwardRef22((props, ref) => {
|
@@ -5087,7 +5233,7 @@ var AssistantActionBarReload = forwardRef22((props, ref) => {
|
|
5087
5233
|
} = {}
|
5088
5234
|
} = useThreadConfig();
|
5089
5235
|
const allowReload = useAllowReload();
|
5090
|
-
return /* @__PURE__ */
|
5236
|
+
return /* @__PURE__ */ jsx37(actionBar_exports.Reload, { disabled: !allowReload, asChild: true, children: /* @__PURE__ */ jsx37(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx37(RefreshCwIcon, {}) }) });
|
5091
5237
|
});
|
5092
5238
|
AssistantActionBarReload.displayName = "AssistantActionBarReload";
|
5093
5239
|
var AssistantActionBarFeedbackPositive = forwardRef22((props, ref) => {
|
@@ -5099,13 +5245,13 @@ var AssistantActionBarFeedbackPositive = forwardRef22((props, ref) => {
|
|
5099
5245
|
} = {}
|
5100
5246
|
} = useThreadConfig();
|
5101
5247
|
const allowFeedbackPositive = useAllowFeedbackPositive();
|
5102
|
-
return /* @__PURE__ */
|
5248
|
+
return /* @__PURE__ */ jsx37(
|
5103
5249
|
actionBar_exports.FeedbackPositive,
|
5104
5250
|
{
|
5105
5251
|
disabled: !allowFeedbackPositive,
|
5106
5252
|
className: "aui-assistant-action-bar-feedback-positive",
|
5107
5253
|
asChild: true,
|
5108
|
-
children: /* @__PURE__ */
|
5254
|
+
children: /* @__PURE__ */ jsx37(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx37(ThumbsUpIcon, {}) })
|
5109
5255
|
}
|
5110
5256
|
);
|
5111
5257
|
});
|
@@ -5119,13 +5265,13 @@ var AssistantActionBarFeedbackNegative = forwardRef22((props, ref) => {
|
|
5119
5265
|
} = {}
|
5120
5266
|
} = useThreadConfig();
|
5121
5267
|
const allowFeedbackNegative = useAllowFeedbackNegative();
|
5122
|
-
return /* @__PURE__ */
|
5268
|
+
return /* @__PURE__ */ jsx37(
|
5123
5269
|
actionBar_exports.FeedbackNegative,
|
5124
5270
|
{
|
5125
5271
|
disabled: !allowFeedbackNegative,
|
5126
5272
|
className: "aui-assistant-action-bar-feedback-negative",
|
5127
5273
|
asChild: true,
|
5128
|
-
children: /* @__PURE__ */
|
5274
|
+
children: /* @__PURE__ */ jsx37(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx37(ThumbsDownIcon, {}) })
|
5129
5275
|
}
|
5130
5276
|
);
|
5131
5277
|
});
|
@@ -5146,24 +5292,24 @@ var assistant_action_bar_default = Object.assign(
|
|
5146
5292
|
);
|
5147
5293
|
|
5148
5294
|
// src/ui/assistant-message.tsx
|
5149
|
-
import { forwardRef as forwardRef24, useMemo as
|
5295
|
+
import { forwardRef as forwardRef24, useMemo as useMemo14 } from "react";
|
5150
5296
|
|
5151
5297
|
// src/ui/branch-picker.tsx
|
5152
5298
|
import { forwardRef as forwardRef23 } from "react";
|
5153
5299
|
import { ChevronLeftIcon, ChevronRightIcon } from "lucide-react";
|
5154
|
-
import { jsx as
|
5300
|
+
import { jsx as jsx38, jsxs as jsxs4 } from "react/jsx-runtime";
|
5155
5301
|
var useAllowBranchPicker = (ensureCapability = false) => {
|
5156
5302
|
const { branchPicker: { allowBranchPicker = true } = {} } = useThreadConfig();
|
5157
5303
|
const branchPickerSupported = useThread((t) => t.capabilities.edit);
|
5158
5304
|
return allowBranchPicker && (!ensureCapability || branchPickerSupported);
|
5159
5305
|
};
|
5160
5306
|
var BranchPicker = () => {
|
5161
|
-
const allowBranchPicker = useAllowBranchPicker();
|
5307
|
+
const allowBranchPicker = useAllowBranchPicker(true);
|
5162
5308
|
if (!allowBranchPicker) return null;
|
5163
|
-
return /* @__PURE__ */
|
5164
|
-
/* @__PURE__ */
|
5165
|
-
/* @__PURE__ */
|
5166
|
-
/* @__PURE__ */
|
5309
|
+
return /* @__PURE__ */ jsxs4(BranchPickerRoot, { hideWhenSingleBranch: true, children: [
|
5310
|
+
/* @__PURE__ */ jsx38(BranchPickerPrevious2, {}),
|
5311
|
+
/* @__PURE__ */ jsx38(BranchPickerState, {}),
|
5312
|
+
/* @__PURE__ */ jsx38(BranchPickerNext, {})
|
5167
5313
|
] });
|
5168
5314
|
};
|
5169
5315
|
BranchPicker.displayName = "BranchPicker";
|
@@ -5178,17 +5324,17 @@ var BranchPickerPrevious2 = forwardRef23((props, ref) => {
|
|
5178
5324
|
} = {}
|
5179
5325
|
} = useThreadConfig();
|
5180
5326
|
const allowBranchPicker = useAllowBranchPicker();
|
5181
|
-
return /* @__PURE__ */
|
5327
|
+
return /* @__PURE__ */ jsx38(branchPicker_exports.Previous, { disabled: !allowBranchPicker, asChild: true, children: /* @__PURE__ */ jsx38(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx38(ChevronLeftIcon, {}) }) });
|
5182
5328
|
});
|
5183
5329
|
BranchPickerPrevious2.displayName = "BranchPickerPrevious";
|
5184
5330
|
var BranchPickerStateWrapper = withDefaults("span", {
|
5185
5331
|
className: "aui-branch-picker-state"
|
5186
5332
|
});
|
5187
5333
|
var BranchPickerState = forwardRef23((props, ref) => {
|
5188
|
-
return /* @__PURE__ */
|
5189
|
-
/* @__PURE__ */
|
5334
|
+
return /* @__PURE__ */ jsxs4(BranchPickerStateWrapper, { ...props, ref, children: [
|
5335
|
+
/* @__PURE__ */ jsx38(branchPicker_exports.Number, {}),
|
5190
5336
|
" / ",
|
5191
|
-
/* @__PURE__ */
|
5337
|
+
/* @__PURE__ */ jsx38(branchPicker_exports.Count, {})
|
5192
5338
|
] });
|
5193
5339
|
});
|
5194
5340
|
BranchPickerState.displayName = "BranchPickerState";
|
@@ -5197,7 +5343,7 @@ var BranchPickerNext = forwardRef23((props, ref) => {
|
|
5197
5343
|
strings: { branchPicker: { next: { tooltip = "Next" } = {} } = {} } = {}
|
5198
5344
|
} = useThreadConfig();
|
5199
5345
|
const allowBranchPicker = useAllowBranchPicker();
|
5200
|
-
return /* @__PURE__ */
|
5346
|
+
return /* @__PURE__ */ jsx38(branchPicker_exports.Next, { disabled: !allowBranchPicker, asChild: true, children: /* @__PURE__ */ jsx38(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx38(ChevronRightIcon, {}) }) });
|
5201
5347
|
});
|
5202
5348
|
BranchPickerNext.displayName = "BranchPickerNext";
|
5203
5349
|
var exports2 = {
|
@@ -5209,12 +5355,12 @@ var branch_picker_default = Object.assign(BranchPicker, exports2);
|
|
5209
5355
|
|
5210
5356
|
// src/ui/base/avatar.tsx
|
5211
5357
|
import * as AvatarPrimitive from "@radix-ui/react-avatar";
|
5212
|
-
import { jsx as
|
5358
|
+
import { jsx as jsx39, jsxs as jsxs5 } from "react/jsx-runtime";
|
5213
5359
|
var Avatar = ({ src, alt, fallback }) => {
|
5214
5360
|
if (src == null && fallback == null) return null;
|
5215
|
-
return /* @__PURE__ */
|
5216
|
-
src != null && /* @__PURE__ */
|
5217
|
-
fallback != null && /* @__PURE__ */
|
5361
|
+
return /* @__PURE__ */ jsxs5(AvatarRoot, { children: [
|
5362
|
+
src != null && /* @__PURE__ */ jsx39(AvatarImage, { src, alt }),
|
5363
|
+
fallback != null && /* @__PURE__ */ jsx39(AvatarFallback, { children: fallback })
|
5218
5364
|
] });
|
5219
5365
|
};
|
5220
5366
|
Avatar.displayName = "Avatar";
|
@@ -5233,10 +5379,10 @@ AvatarFallback.displayName = "AvatarFallback";
|
|
5233
5379
|
|
5234
5380
|
// src/ui/content-part.tsx
|
5235
5381
|
import classNames2 from "classnames";
|
5236
|
-
import { jsx as
|
5382
|
+
import { jsx as jsx40 } from "react/jsx-runtime";
|
5237
5383
|
var Text = () => {
|
5238
5384
|
const status = useSmoothStatus();
|
5239
|
-
return /* @__PURE__ */
|
5385
|
+
return /* @__PURE__ */ jsx40(
|
5240
5386
|
contentPart_exports.Text,
|
5241
5387
|
{
|
5242
5388
|
className: classNames2(
|
@@ -5251,19 +5397,19 @@ var exports3 = { Text: withSmoothContextProvider(Text) };
|
|
5251
5397
|
var content_part_default = exports3;
|
5252
5398
|
|
5253
5399
|
// src/ui/assistant-message.tsx
|
5254
|
-
import { jsx as
|
5400
|
+
import { jsx as jsx41, jsxs as jsxs6 } from "react/jsx-runtime";
|
5255
5401
|
var AssistantMessage = () => {
|
5256
|
-
return /* @__PURE__ */
|
5257
|
-
/* @__PURE__ */
|
5258
|
-
/* @__PURE__ */
|
5259
|
-
/* @__PURE__ */
|
5260
|
-
/* @__PURE__ */
|
5402
|
+
return /* @__PURE__ */ jsxs6(AssistantMessageRoot, { children: [
|
5403
|
+
/* @__PURE__ */ jsx41(AssistantMessageAvatar, {}),
|
5404
|
+
/* @__PURE__ */ jsx41(AssistantMessageContent, {}),
|
5405
|
+
/* @__PURE__ */ jsx41(branch_picker_default, {}),
|
5406
|
+
/* @__PURE__ */ jsx41(assistant_action_bar_default, {})
|
5261
5407
|
] });
|
5262
5408
|
};
|
5263
5409
|
AssistantMessage.displayName = "AssistantMessage";
|
5264
5410
|
var AssistantMessageAvatar = () => {
|
5265
5411
|
const { assistantAvatar: avatar = { fallback: "A" } } = useThreadConfig();
|
5266
|
-
return /* @__PURE__ */
|
5412
|
+
return /* @__PURE__ */ jsx41(Avatar, { ...avatar });
|
5267
5413
|
};
|
5268
5414
|
var AssistantMessageRoot = withDefaults(message_exports.Root, {
|
5269
5415
|
className: "aui-assistant-message-root"
|
@@ -5274,7 +5420,7 @@ var AssistantMessageContentWrapper = withDefaults("div", {
|
|
5274
5420
|
});
|
5275
5421
|
var AssistantMessageContent = forwardRef24(({ components: componentsProp, ...rest }, ref) => {
|
5276
5422
|
const { tools, assistantMessage: { components = {} } = {} } = useThreadConfig();
|
5277
|
-
const toolsComponents =
|
5423
|
+
const toolsComponents = useMemo14(
|
5278
5424
|
() => ({
|
5279
5425
|
by_name: !tools ? void 0 : Object.fromEntries(
|
5280
5426
|
tools.map((t) => [
|
@@ -5287,7 +5433,7 @@ var AssistantMessageContent = forwardRef24(({ components: componentsProp, ...res
|
|
5287
5433
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
5288
5434
|
[...tools ?? [], components.ToolFallback]
|
5289
5435
|
);
|
5290
|
-
return /* @__PURE__ */
|
5436
|
+
return /* @__PURE__ */ jsx41(AssistantMessageContentWrapper, { ...rest, ref, children: /* @__PURE__ */ jsx41(
|
5291
5437
|
message_exports.Content,
|
5292
5438
|
{
|
5293
5439
|
components: {
|
@@ -5322,9 +5468,9 @@ import { forwardRef as forwardRef26 } from "react";
|
|
5322
5468
|
import { PaperclipIcon, SendHorizontalIcon } from "lucide-react";
|
5323
5469
|
|
5324
5470
|
// src/ui/base/CircleStopIcon.tsx
|
5325
|
-
import { jsx as
|
5471
|
+
import { jsx as jsx42 } from "react/jsx-runtime";
|
5326
5472
|
var CircleStopIcon = () => {
|
5327
|
-
return /* @__PURE__ */
|
5473
|
+
return /* @__PURE__ */ jsx42(
|
5328
5474
|
"svg",
|
5329
5475
|
{
|
5330
5476
|
xmlns: "http://www.w3.org/2000/svg",
|
@@ -5332,7 +5478,7 @@ var CircleStopIcon = () => {
|
|
5332
5478
|
fill: "currentColor",
|
5333
5479
|
width: "16",
|
5334
5480
|
height: "16",
|
5335
|
-
children: /* @__PURE__ */
|
5481
|
+
children: /* @__PURE__ */ jsx42("rect", { width: "10", height: "10", x: "3", y: "3", rx: "2" })
|
5336
5482
|
}
|
5337
5483
|
);
|
5338
5484
|
};
|
@@ -5341,17 +5487,17 @@ CircleStopIcon.displayName = "CircleStopIcon";
|
|
5341
5487
|
// src/ui/composer-attachment.tsx
|
5342
5488
|
import { forwardRef as forwardRef25 } from "react";
|
5343
5489
|
import { CircleXIcon } from "lucide-react";
|
5344
|
-
import { jsx as
|
5490
|
+
import { jsx as jsx43, jsxs as jsxs7 } from "react/jsx-runtime";
|
5345
5491
|
var ComposerAttachmentRoot = withDefaults("div", {
|
5346
5492
|
className: "aui-composer-attachment-root"
|
5347
5493
|
});
|
5348
5494
|
ComposerAttachmentRoot.displayName = "ComposerAttachmentRoot";
|
5349
5495
|
var ComposerAttachment2 = () => {
|
5350
|
-
const attachment =
|
5351
|
-
return /* @__PURE__ */
|
5496
|
+
const attachment = useThreadComposerAttachment((a) => a.attachment);
|
5497
|
+
return /* @__PURE__ */ jsxs7(ComposerAttachmentRoot, { children: [
|
5352
5498
|
".",
|
5353
5499
|
attachment.name.split(".").pop(),
|
5354
|
-
/* @__PURE__ */
|
5500
|
+
/* @__PURE__ */ jsx43(ComposerAttachmentRemove, {})
|
5355
5501
|
] });
|
5356
5502
|
};
|
5357
5503
|
ComposerAttachment2.displayName = "ComposerAttachment";
|
@@ -5361,12 +5507,11 @@ var ComposerAttachmentRemove = forwardRef25((props, ref) => {
|
|
5361
5507
|
composer: { removeAttachment: { tooltip = "Remove file" } = {} } = {}
|
5362
5508
|
} = {}
|
5363
5509
|
} = useThreadConfig();
|
5364
|
-
const
|
5365
|
-
const attachmentStore = useAttachmentStore();
|
5510
|
+
const attachmentRuntime = useAttachmentRuntime();
|
5366
5511
|
const handleRemoveAttachment = () => {
|
5367
|
-
|
5512
|
+
attachmentRuntime.remove();
|
5368
5513
|
};
|
5369
|
-
return /* @__PURE__ */
|
5514
|
+
return /* @__PURE__ */ jsx43(
|
5370
5515
|
TooltipIconButton,
|
5371
5516
|
{
|
5372
5517
|
tooltip,
|
@@ -5375,7 +5520,7 @@ var ComposerAttachmentRemove = forwardRef25((props, ref) => {
|
|
5375
5520
|
...props,
|
5376
5521
|
onClick: handleRemoveAttachment,
|
5377
5522
|
ref,
|
5378
|
-
children: props.children ?? /* @__PURE__ */
|
5523
|
+
children: props.children ?? /* @__PURE__ */ jsx43(CircleXIcon, {})
|
5379
5524
|
}
|
5380
5525
|
);
|
5381
5526
|
});
|
@@ -5390,7 +5535,7 @@ var composer_attachment_default = Object.assign(
|
|
5390
5535
|
);
|
5391
5536
|
|
5392
5537
|
// src/ui/composer.tsx
|
5393
|
-
import { Fragment as Fragment5, jsx as
|
5538
|
+
import { Fragment as Fragment5, jsx as jsx44, jsxs as jsxs8 } from "react/jsx-runtime";
|
5394
5539
|
var useAllowAttachments = (ensureCapability = false) => {
|
5395
5540
|
const { composer: { allowAttachments = true } = {} } = useThreadConfig();
|
5396
5541
|
const attachmentsSupported = useThread((t) => t.capabilities.attachments);
|
@@ -5398,11 +5543,11 @@ var useAllowAttachments = (ensureCapability = false) => {
|
|
5398
5543
|
};
|
5399
5544
|
var Composer = () => {
|
5400
5545
|
const allowAttachments = useAllowAttachments(true);
|
5401
|
-
return /* @__PURE__ */
|
5402
|
-
allowAttachments && /* @__PURE__ */
|
5403
|
-
allowAttachments && /* @__PURE__ */
|
5404
|
-
/* @__PURE__ */
|
5405
|
-
/* @__PURE__ */
|
5546
|
+
return /* @__PURE__ */ jsxs8(ComposerRoot, { children: [
|
5547
|
+
allowAttachments && /* @__PURE__ */ jsx44(ComposerAttachments, {}),
|
5548
|
+
allowAttachments && /* @__PURE__ */ jsx44(ComposerAddAttachment, {}),
|
5549
|
+
/* @__PURE__ */ jsx44(ComposerInput, { autoFocus: true }),
|
5550
|
+
/* @__PURE__ */ jsx44(ComposerAction, {})
|
5406
5551
|
] });
|
5407
5552
|
};
|
5408
5553
|
Composer.displayName = "Composer";
|
@@ -5422,7 +5567,7 @@ var ComposerInput = forwardRef26(
|
|
5422
5567
|
composer: { input: { placeholder = "Write a message..." } = {} } = {}
|
5423
5568
|
} = {}
|
5424
5569
|
} = useThreadConfig();
|
5425
|
-
return /* @__PURE__ */
|
5570
|
+
return /* @__PURE__ */ jsx44(ComposerInputStyled, { placeholder, ...props, ref });
|
5426
5571
|
}
|
5427
5572
|
);
|
5428
5573
|
ComposerInput.displayName = "ComposerInput";
|
@@ -5430,7 +5575,7 @@ var ComposerAttachmentsContainer = withDefaults("div", {
|
|
5430
5575
|
className: "aui-composer-attachments"
|
5431
5576
|
});
|
5432
5577
|
var ComposerAttachments = ({ components }) => {
|
5433
|
-
return /* @__PURE__ */
|
5578
|
+
return /* @__PURE__ */ jsx44(ComposerAttachmentsContainer, { children: /* @__PURE__ */ jsx44(
|
5434
5579
|
composer_exports.Attachments,
|
5435
5580
|
{
|
5436
5581
|
components: {
|
@@ -5451,14 +5596,14 @@ var ComposerAddAttachment = forwardRef26((props, ref) => {
|
|
5451
5596
|
} = {}
|
5452
5597
|
} = useThreadConfig();
|
5453
5598
|
const allowAttachments = useAllowAttachments();
|
5454
|
-
return /* @__PURE__ */
|
5599
|
+
return /* @__PURE__ */ jsx44(composer_exports.AddAttachment, { disabled: !allowAttachments, asChild: true, children: /* @__PURE__ */ jsx44(
|
5455
5600
|
ComposerAttachButton,
|
5456
5601
|
{
|
5457
5602
|
tooltip,
|
5458
5603
|
variant: "ghost",
|
5459
5604
|
...props,
|
5460
5605
|
ref,
|
5461
|
-
children: props.children ?? /* @__PURE__ */
|
5606
|
+
children: props.children ?? /* @__PURE__ */ jsx44(PaperclipIcon, {})
|
5462
5607
|
}
|
5463
5608
|
) });
|
5464
5609
|
});
|
@@ -5469,10 +5614,10 @@ var useAllowCancel = () => {
|
|
5469
5614
|
};
|
5470
5615
|
var ComposerAction = () => {
|
5471
5616
|
const allowCancel = useAllowCancel();
|
5472
|
-
if (!allowCancel) return /* @__PURE__ */
|
5473
|
-
return /* @__PURE__ */
|
5474
|
-
/* @__PURE__ */
|
5475
|
-
/* @__PURE__ */
|
5617
|
+
if (!allowCancel) return /* @__PURE__ */ jsx44(ComposerSend, {});
|
5618
|
+
return /* @__PURE__ */ jsxs8(Fragment5, { children: [
|
5619
|
+
/* @__PURE__ */ jsx44(thread_exports.If, { running: false, children: /* @__PURE__ */ jsx44(ComposerSend, {}) }),
|
5620
|
+
/* @__PURE__ */ jsx44(thread_exports.If, { running: true, children: /* @__PURE__ */ jsx44(ComposerCancel, {}) })
|
5476
5621
|
] });
|
5477
5622
|
};
|
5478
5623
|
ComposerAction.displayName = "ComposerAction";
|
@@ -5484,7 +5629,7 @@ var ComposerSend = forwardRef26((props, ref) => {
|
|
5484
5629
|
const {
|
5485
5630
|
strings: { composer: { send: { tooltip = "Send" } = {} } = {} } = {}
|
5486
5631
|
} = useThreadConfig();
|
5487
|
-
return /* @__PURE__ */
|
5632
|
+
return /* @__PURE__ */ jsx44(composer_exports.Send, { asChild: true, children: /* @__PURE__ */ jsx44(ComposerSendButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx44(SendHorizontalIcon, {}) }) });
|
5488
5633
|
});
|
5489
5634
|
ComposerSend.displayName = "ComposerSend";
|
5490
5635
|
var ComposerCancelButton = withDefaults(TooltipIconButton, {
|
@@ -5495,7 +5640,7 @@ var ComposerCancel = forwardRef26((props, ref) => {
|
|
5495
5640
|
const {
|
5496
5641
|
strings: { composer: { cancel: { tooltip = "Cancel" } = {} } = {} } = {}
|
5497
5642
|
} = useThreadConfig();
|
5498
|
-
return /* @__PURE__ */
|
5643
|
+
return /* @__PURE__ */ jsx44(composer_exports.Cancel, { asChild: true, children: /* @__PURE__ */ jsx44(ComposerCancelButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx44(CircleStopIcon, {}) }) });
|
5499
5644
|
});
|
5500
5645
|
ComposerCancel.displayName = "ComposerCancel";
|
5501
5646
|
var exports6 = {
|
@@ -5511,14 +5656,14 @@ var composer_default = Object.assign(Composer, exports6);
|
|
5511
5656
|
|
5512
5657
|
// src/ui/thread-welcome.tsx
|
5513
5658
|
import { forwardRef as forwardRef27 } from "react";
|
5514
|
-
import { jsx as
|
5659
|
+
import { jsx as jsx45, jsxs as jsxs9 } from "react/jsx-runtime";
|
5515
5660
|
var ThreadWelcome = () => {
|
5516
|
-
return /* @__PURE__ */
|
5517
|
-
/* @__PURE__ */
|
5518
|
-
/* @__PURE__ */
|
5519
|
-
/* @__PURE__ */
|
5661
|
+
return /* @__PURE__ */ jsxs9(ThreadWelcomeRoot, { children: [
|
5662
|
+
/* @__PURE__ */ jsxs9(ThreadWelcomeCenter, { children: [
|
5663
|
+
/* @__PURE__ */ jsx45(ThreadWelcomeAvatar, {}),
|
5664
|
+
/* @__PURE__ */ jsx45(ThreadWelcomeMessage, {})
|
5520
5665
|
] }),
|
5521
|
-
/* @__PURE__ */
|
5666
|
+
/* @__PURE__ */ jsx45(ThreadWelcomeSuggestions, {})
|
5522
5667
|
] });
|
5523
5668
|
};
|
5524
5669
|
ThreadWelcome.displayName = "ThreadWelcome";
|
@@ -5530,20 +5675,20 @@ var ThreadWelcomeCenter = withDefaults("div", {
|
|
5530
5675
|
});
|
5531
5676
|
var ThreadWelcomeRoot = forwardRef27(
|
5532
5677
|
(props, ref) => {
|
5533
|
-
return /* @__PURE__ */
|
5678
|
+
return /* @__PURE__ */ jsx45(thread_exports.Empty, { children: /* @__PURE__ */ jsx45(ThreadWelcomeRootStyled, { ...props, ref }) });
|
5534
5679
|
}
|
5535
5680
|
);
|
5536
5681
|
ThreadWelcomeRoot.displayName = "ThreadWelcomeRoot";
|
5537
5682
|
var ThreadWelcomeAvatar = () => {
|
5538
5683
|
const { assistantAvatar: avatar = { fallback: "A" } } = useThreadConfig();
|
5539
|
-
return /* @__PURE__ */
|
5684
|
+
return /* @__PURE__ */ jsx45(Avatar, { ...avatar });
|
5540
5685
|
};
|
5541
5686
|
var ThreadWelcomeMessageStyled = withDefaults("p", {
|
5542
5687
|
className: "aui-thread-welcome-message"
|
5543
5688
|
});
|
5544
5689
|
var ThreadWelcomeMessage = forwardRef27(({ message: messageProp, ...rest }, ref) => {
|
5545
5690
|
const { welcome: { message = "How can I help you today?" } = {} } = useThreadConfig();
|
5546
|
-
return /* @__PURE__ */
|
5691
|
+
return /* @__PURE__ */ jsx45(ThreadWelcomeMessageStyled, { ...rest, ref, children: messageProp ?? message });
|
5547
5692
|
});
|
5548
5693
|
ThreadWelcomeMessage.displayName = "ThreadWelcomeMessage";
|
5549
5694
|
var ThreadWelcomeSuggestionContainer = withDefaults("div", {
|
@@ -5555,21 +5700,21 @@ var ThreadWelcomeSuggestionStyled = withDefaults(thread_exports.Suggestion, {
|
|
5555
5700
|
var ThreadWelcomeSuggestion = ({
|
5556
5701
|
suggestion: { text, prompt }
|
5557
5702
|
}) => {
|
5558
|
-
return /* @__PURE__ */
|
5703
|
+
return /* @__PURE__ */ jsx45(
|
5559
5704
|
ThreadWelcomeSuggestionStyled,
|
5560
5705
|
{
|
5561
5706
|
prompt,
|
5562
5707
|
method: "replace",
|
5563
5708
|
autoSend: true,
|
5564
|
-
children: /* @__PURE__ */
|
5709
|
+
children: /* @__PURE__ */ jsx45("span", { className: "aui-thread-welcome-suggestion-text", children: text ?? prompt })
|
5565
5710
|
}
|
5566
5711
|
);
|
5567
5712
|
};
|
5568
5713
|
var ThreadWelcomeSuggestions = () => {
|
5569
5714
|
const { welcome: { suggestions } = {} } = useThreadConfig();
|
5570
|
-
return /* @__PURE__ */
|
5715
|
+
return /* @__PURE__ */ jsx45(ThreadWelcomeSuggestionContainer, { children: suggestions?.map((suggestion, idx) => {
|
5571
5716
|
const key = `${suggestion.prompt}-${idx}`;
|
5572
|
-
return /* @__PURE__ */
|
5717
|
+
return /* @__PURE__ */ jsx45(ThreadWelcomeSuggestion, { suggestion }, key);
|
5573
5718
|
}) });
|
5574
5719
|
};
|
5575
5720
|
ThreadWelcomeSuggestions.displayName = "ThreadWelcomeSuggestions";
|
@@ -5589,7 +5734,7 @@ import { forwardRef as forwardRef29 } from "react";
|
|
5589
5734
|
// src/ui/user-action-bar.tsx
|
5590
5735
|
import { forwardRef as forwardRef28 } from "react";
|
5591
5736
|
import { PencilIcon } from "lucide-react";
|
5592
|
-
import { jsx as
|
5737
|
+
import { jsx as jsx46 } from "react/jsx-runtime";
|
5593
5738
|
var useAllowEdit = (ensureCapability = false) => {
|
5594
5739
|
const { userMessage: { allowEdit = true } = {} } = useThreadConfig();
|
5595
5740
|
const editSupported = useThread((t) => t.capabilities.edit);
|
@@ -5598,7 +5743,7 @@ var useAllowEdit = (ensureCapability = false) => {
|
|
5598
5743
|
var UserActionBar = () => {
|
5599
5744
|
const allowEdit = useAllowEdit(true);
|
5600
5745
|
if (!allowEdit) return null;
|
5601
|
-
return /* @__PURE__ */
|
5746
|
+
return /* @__PURE__ */ jsx46(UserActionBarRoot, { hideWhenRunning: true, autohide: "not-last", children: /* @__PURE__ */ jsx46(UserActionBarEdit, {}) });
|
5602
5747
|
};
|
5603
5748
|
UserActionBar.displayName = "UserActionBar";
|
5604
5749
|
var UserActionBarRoot = withDefaults(actionBar_exports.Root, {
|
@@ -5610,7 +5755,7 @@ var UserActionBarEdit = forwardRef28((props, ref) => {
|
|
5610
5755
|
strings: { userMessage: { edit: { tooltip = "Edit" } = {} } = {} } = {}
|
5611
5756
|
} = useThreadConfig();
|
5612
5757
|
const allowEdit = useAllowEdit();
|
5613
|
-
return /* @__PURE__ */
|
5758
|
+
return /* @__PURE__ */ jsx46(actionBar_exports.Edit, { disabled: !allowEdit, asChild: true, children: /* @__PURE__ */ jsx46(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx46(PencilIcon, {}) }) });
|
5614
5759
|
});
|
5615
5760
|
UserActionBarEdit.displayName = "UserActionBarEdit";
|
5616
5761
|
var exports8 = {
|
@@ -5620,14 +5765,14 @@ var exports8 = {
|
|
5620
5765
|
var user_action_bar_default = Object.assign(UserActionBar, exports8);
|
5621
5766
|
|
5622
5767
|
// src/ui/user-message-attachment.tsx
|
5623
|
-
import { jsxs as
|
5768
|
+
import { jsxs as jsxs10 } from "react/jsx-runtime";
|
5624
5769
|
var UserMessageAttachmentRoot = withDefaults("div", {
|
5625
5770
|
className: "aui-user-message-attachment-root"
|
5626
5771
|
});
|
5627
5772
|
UserMessageAttachmentRoot.displayName = "UserMessageAttachmentRoot";
|
5628
5773
|
var UserMessageAttachment = () => {
|
5629
5774
|
const attachment = useAttachment((a) => a.attachment);
|
5630
|
-
return /* @__PURE__ */
|
5775
|
+
return /* @__PURE__ */ jsxs10(UserMessageAttachmentRoot, { children: [
|
5631
5776
|
".",
|
5632
5777
|
attachment.name.split(".").pop()
|
5633
5778
|
] });
|
@@ -5642,13 +5787,13 @@ var user_message_attachment_default = Object.assign(
|
|
5642
5787
|
);
|
5643
5788
|
|
5644
5789
|
// src/ui/user-message.tsx
|
5645
|
-
import { jsx as
|
5790
|
+
import { jsx as jsx47, jsxs as jsxs11 } from "react/jsx-runtime";
|
5646
5791
|
var UserMessage = () => {
|
5647
|
-
return /* @__PURE__ */
|
5648
|
-
/* @__PURE__ */
|
5649
|
-
/* @__PURE__ */
|
5650
|
-
/* @__PURE__ */
|
5651
|
-
/* @__PURE__ */
|
5792
|
+
return /* @__PURE__ */ jsxs11(UserMessageRoot, { children: [
|
5793
|
+
/* @__PURE__ */ jsx47(UserMessageAttachments, {}),
|
5794
|
+
/* @__PURE__ */ jsx47(user_action_bar_default, {}),
|
5795
|
+
/* @__PURE__ */ jsx47(UserMessageContent, {}),
|
5796
|
+
/* @__PURE__ */ jsx47(branch_picker_default, {})
|
5652
5797
|
] });
|
5653
5798
|
};
|
5654
5799
|
UserMessage.displayName = "UserMessage";
|
@@ -5661,7 +5806,7 @@ var UserMessageContentWrapper = withDefaults("div", {
|
|
5661
5806
|
});
|
5662
5807
|
var UserMessageContent = forwardRef29(
|
5663
5808
|
({ components, ...props }, ref) => {
|
5664
|
-
return /* @__PURE__ */
|
5809
|
+
return /* @__PURE__ */ jsx47(UserMessageContentWrapper, { ...props, ref, children: /* @__PURE__ */ jsx47(
|
5665
5810
|
message_exports.Content,
|
5666
5811
|
{
|
5667
5812
|
components: {
|
@@ -5679,7 +5824,7 @@ var UserMessageAttachmentsContainer = withDefaults("div", {
|
|
5679
5824
|
var UserMessageAttachments = ({
|
5680
5825
|
components
|
5681
5826
|
}) => {
|
5682
|
-
return /* @__PURE__ */
|
5827
|
+
return /* @__PURE__ */ jsx47(message_exports.If, { hasAttachments: true, children: /* @__PURE__ */ jsx47(UserMessageAttachmentsContainer, { children: /* @__PURE__ */ jsx47(
|
5683
5828
|
message_exports.Attachments,
|
5684
5829
|
{
|
5685
5830
|
components: {
|
@@ -5698,13 +5843,13 @@ var user_message_default = Object.assign(UserMessage, exports10);
|
|
5698
5843
|
|
5699
5844
|
// src/ui/edit-composer.tsx
|
5700
5845
|
import { forwardRef as forwardRef30 } from "react";
|
5701
|
-
import { jsx as
|
5846
|
+
import { jsx as jsx48, jsxs as jsxs12 } from "react/jsx-runtime";
|
5702
5847
|
var EditComposer = () => {
|
5703
|
-
return /* @__PURE__ */
|
5704
|
-
/* @__PURE__ */
|
5705
|
-
/* @__PURE__ */
|
5706
|
-
/* @__PURE__ */
|
5707
|
-
/* @__PURE__ */
|
5848
|
+
return /* @__PURE__ */ jsxs12(EditComposerRoot, { children: [
|
5849
|
+
/* @__PURE__ */ jsx48(EditComposerInput, {}),
|
5850
|
+
/* @__PURE__ */ jsxs12(EditComposerFooter, { children: [
|
5851
|
+
/* @__PURE__ */ jsx48(EditComposerCancel, {}),
|
5852
|
+
/* @__PURE__ */ jsx48(EditComposerSend, {})
|
5708
5853
|
] })
|
5709
5854
|
] });
|
5710
5855
|
};
|
@@ -5728,7 +5873,7 @@ var EditComposerCancel = forwardRef30(
|
|
5728
5873
|
editComposer: { cancel: { label = "Cancel" } = {} } = {}
|
5729
5874
|
} = {}
|
5730
5875
|
} = useThreadConfig();
|
5731
|
-
return /* @__PURE__ */
|
5876
|
+
return /* @__PURE__ */ jsx48(composer_exports.Cancel, { asChild: true, children: /* @__PURE__ */ jsx48(Button, { variant: "ghost", ...props, ref, children: props.children ?? label }) });
|
5732
5877
|
}
|
5733
5878
|
);
|
5734
5879
|
EditComposerCancel.displayName = "EditComposerCancel";
|
@@ -5737,7 +5882,7 @@ var EditComposerSend = forwardRef30(
|
|
5737
5882
|
const {
|
5738
5883
|
strings: { editComposer: { send: { label = "Send" } = {} } = {} } = {}
|
5739
5884
|
} = useThreadConfig();
|
5740
|
-
return /* @__PURE__ */
|
5885
|
+
return /* @__PURE__ */ jsx48(composer_exports.Send, { asChild: true, children: /* @__PURE__ */ jsx48(Button, { ...props, ref, children: props.children ?? label }) });
|
5741
5886
|
}
|
5742
5887
|
);
|
5743
5888
|
EditComposerSend.displayName = "EditComposerSend";
|
@@ -5751,14 +5896,14 @@ var exports11 = {
|
|
5751
5896
|
var edit_composer_default = Object.assign(EditComposer, exports11);
|
5752
5897
|
|
5753
5898
|
// src/ui/thread.tsx
|
5754
|
-
import { jsx as
|
5899
|
+
import { jsx as jsx49, jsxs as jsxs13 } from "react/jsx-runtime";
|
5755
5900
|
var Thread = (config) => {
|
5756
|
-
return /* @__PURE__ */
|
5757
|
-
/* @__PURE__ */
|
5758
|
-
/* @__PURE__ */
|
5759
|
-
/* @__PURE__ */
|
5760
|
-
/* @__PURE__ */
|
5761
|
-
/* @__PURE__ */
|
5901
|
+
return /* @__PURE__ */ jsx49(ThreadRoot, { config, children: /* @__PURE__ */ jsxs13(ThreadViewport, { children: [
|
5902
|
+
/* @__PURE__ */ jsx49(thread_welcome_default, {}),
|
5903
|
+
/* @__PURE__ */ jsx49(ThreadMessages, {}),
|
5904
|
+
/* @__PURE__ */ jsxs13(ThreadViewportFooter, { children: [
|
5905
|
+
/* @__PURE__ */ jsx49(ThreadScrollToBottom, {}),
|
5906
|
+
/* @__PURE__ */ jsx49(composer_default, {})
|
5762
5907
|
] })
|
5763
5908
|
] }) });
|
5764
5909
|
};
|
@@ -5767,7 +5912,7 @@ var ThreadRootStyled = withDefaults(thread_exports.Root, {
|
|
5767
5912
|
});
|
5768
5913
|
var ThreadRoot = forwardRef31(
|
5769
5914
|
({ config, ...props }, ref) => {
|
5770
|
-
return /* @__PURE__ */
|
5915
|
+
return /* @__PURE__ */ jsx49(ThreadConfigProvider, { config, children: /* @__PURE__ */ jsx49(ThreadRootStyled, { ...props, ref }) });
|
5771
5916
|
}
|
5772
5917
|
);
|
5773
5918
|
ThreadRoot.displayName = "ThreadRoot";
|
@@ -5781,7 +5926,7 @@ var ThreadViewportFooter = withDefaults("div", {
|
|
5781
5926
|
ThreadViewportFooter.displayName = "ThreadViewportFooter";
|
5782
5927
|
var SystemMessage = () => null;
|
5783
5928
|
var ThreadMessages = ({ components, ...rest }) => {
|
5784
|
-
return /* @__PURE__ */
|
5929
|
+
return /* @__PURE__ */ jsx49(
|
5785
5930
|
thread_exports.Messages,
|
5786
5931
|
{
|
5787
5932
|
components: {
|
@@ -5805,7 +5950,7 @@ var ThreadScrollToBottom = forwardRef31((props, ref) => {
|
|
5805
5950
|
thread: { scrollToBottom: { tooltip = "Scroll to bottom" } = {} } = {}
|
5806
5951
|
} = {}
|
5807
5952
|
} = useThreadConfig();
|
5808
|
-
return /* @__PURE__ */
|
5953
|
+
return /* @__PURE__ */ jsx49(thread_exports.ScrollToBottom, { asChild: true, children: /* @__PURE__ */ jsx49(ThreadScrollToBottomIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx49(ArrowDownIcon, {}) }) });
|
5809
5954
|
});
|
5810
5955
|
ThreadScrollToBottom.displayName = "ThreadScrollToBottom";
|
5811
5956
|
var exports12 = {
|
@@ -5818,20 +5963,20 @@ var exports12 = {
|
|
5818
5963
|
var thread_default = Object.assign(Thread, exports12);
|
5819
5964
|
|
5820
5965
|
// src/ui/assistant-modal.tsx
|
5821
|
-
import { Fragment as Fragment6, jsx as
|
5966
|
+
import { Fragment as Fragment6, jsx as jsx50, jsxs as jsxs14 } from "react/jsx-runtime";
|
5822
5967
|
var AssistantModal = (config) => {
|
5823
|
-
return /* @__PURE__ */
|
5824
|
-
/* @__PURE__ */
|
5825
|
-
/* @__PURE__ */
|
5968
|
+
return /* @__PURE__ */ jsxs14(AssistantModalRoot, { config, children: [
|
5969
|
+
/* @__PURE__ */ jsx50(AssistantModalTrigger, {}),
|
5970
|
+
/* @__PURE__ */ jsx50(AssistantModalContent, { children: /* @__PURE__ */ jsx50(thread_default, {}) })
|
5826
5971
|
] });
|
5827
5972
|
};
|
5828
5973
|
AssistantModal.displayName = "AssistantModal";
|
5829
5974
|
var AssistantModalRoot = ({ config, ...props }) => {
|
5830
|
-
return /* @__PURE__ */
|
5975
|
+
return /* @__PURE__ */ jsx50(ThreadConfigProvider, { config, children: /* @__PURE__ */ jsx50(assistantModal_exports.Root, { ...props }) });
|
5831
5976
|
};
|
5832
5977
|
AssistantModalRoot.displayName = "AssistantModalRoot";
|
5833
5978
|
var AssistantModalTrigger = forwardRef32((props, ref) => {
|
5834
|
-
return /* @__PURE__ */
|
5979
|
+
return /* @__PURE__ */ jsx50(AssistantModalAnchor, { children: /* @__PURE__ */ jsx50(assistantModal_exports.Trigger, { asChild: true, children: /* @__PURE__ */ jsx50(AssistantModalButton, { ...props, ref }) }) });
|
5835
5980
|
});
|
5836
5981
|
AssistantModalTrigger.displayName = "AssistantModalTrigger";
|
5837
5982
|
var AssistantModalAnchor = withDefaults(assistantModal_exports.Anchor, {
|
@@ -5856,7 +6001,7 @@ var AssistantModalButton = forwardRef32(({ "data-state": state, ...rest }, ref)
|
|
5856
6001
|
} = {}
|
5857
6002
|
} = useThreadConfig();
|
5858
6003
|
const tooltip = state === "open" ? openTooltip : closedTooltip;
|
5859
|
-
return /* @__PURE__ */
|
6004
|
+
return /* @__PURE__ */ jsx50(
|
5860
6005
|
ModalButtonStyled,
|
5861
6006
|
{
|
5862
6007
|
side: "left",
|
@@ -5864,15 +6009,15 @@ var AssistantModalButton = forwardRef32(({ "data-state": state, ...rest }, ref)
|
|
5864
6009
|
"data-state": state,
|
5865
6010
|
...rest,
|
5866
6011
|
ref,
|
5867
|
-
children: rest.children ?? /* @__PURE__ */
|
5868
|
-
/* @__PURE__ */
|
6012
|
+
children: rest.children ?? /* @__PURE__ */ jsxs14(Fragment6, { children: [
|
6013
|
+
/* @__PURE__ */ jsx50(
|
5869
6014
|
BotIcon,
|
5870
6015
|
{
|
5871
6016
|
"data-state": state,
|
5872
6017
|
className: "aui-modal-button-closed-icon"
|
5873
6018
|
}
|
5874
6019
|
),
|
5875
|
-
/* @__PURE__ */
|
6020
|
+
/* @__PURE__ */ jsx50(
|
5876
6021
|
ChevronDownIcon,
|
5877
6022
|
{
|
5878
6023
|
"data-state": state,
|