@assistant-ui/react 0.14.0 → 0.14.2
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/README.md +58 -42
- package/dist/client/ExternalThread.d.ts +7 -0
- package/dist/client/ExternalThread.d.ts.map +1 -1
- package/dist/client/ExternalThread.js +24 -16
- package/dist/client/ExternalThread.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/legacy-runtime/cloud/auiV0.d.ts +10 -1
- package/dist/legacy-runtime/cloud/auiV0.d.ts.map +1 -1
- package/dist/legacy-runtime/cloud/auiV0.js +21 -3
- package/dist/legacy-runtime/cloud/auiV0.js.map +1 -1
- package/dist/mcp-apps/McpAppRenderer.d.ts +28 -0
- package/dist/mcp-apps/McpAppRenderer.d.ts.map +1 -0
- package/dist/mcp-apps/McpAppRenderer.js +115 -0
- package/dist/mcp-apps/McpAppRenderer.js.map +1 -0
- package/dist/mcp-apps/McpAppsRemoteHost.d.ts +3 -0
- package/dist/mcp-apps/McpAppsRemoteHost.d.ts.map +1 -0
- package/dist/mcp-apps/McpAppsRemoteHost.js +27 -0
- package/dist/mcp-apps/McpAppsRemoteHost.js.map +1 -0
- package/dist/mcp-apps/app-frame.d.ts +3 -0
- package/dist/mcp-apps/app-frame.d.ts.map +1 -0
- package/dist/mcp-apps/app-frame.js +203 -0
- package/dist/mcp-apps/app-frame.js.map +1 -0
- package/dist/mcp-apps/bridge.d.ts +18 -0
- package/dist/mcp-apps/bridge.d.ts.map +1 -0
- package/dist/mcp-apps/bridge.js +290 -0
- package/dist/mcp-apps/bridge.js.map +1 -0
- package/dist/mcp-apps/index.d.ts +4 -0
- package/dist/mcp-apps/index.d.ts.map +1 -0
- package/dist/mcp-apps/index.js +3 -0
- package/dist/mcp-apps/index.js.map +1 -0
- package/dist/mcp-apps/types.d.ts +144 -0
- package/dist/mcp-apps/types.d.ts.map +1 -0
- package/dist/mcp-apps/types.js +3 -0
- package/dist/mcp-apps/types.js.map +1 -0
- package/dist/mcp-apps/utils.d.ts +5 -0
- package/dist/mcp-apps/utils.d.ts.map +1 -0
- package/dist/mcp-apps/utils.js +10 -0
- package/dist/mcp-apps/utils.js.map +1 -0
- package/dist/primitives/composer/ComposerInput.d.ts +6 -0
- package/dist/primitives/composer/ComposerInput.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerInput.js +19 -2
- package/dist/primitives/composer/ComposerInput.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopover.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopover.js +17 -1
- package/dist/primitives/composer/trigger/TriggerPopover.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverRootContext.d.ts +33 -0
- package/dist/primitives/composer/trigger/TriggerPopoverRootContext.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js +80 -11
- package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js.map +1 -1
- package/dist/primitives/composer/trigger/triggerKeyboardResource.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/triggerKeyboardResource.js +2 -1
- package/dist/primitives/composer/trigger/triggerKeyboardResource.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartSource.d.ts +22 -3
- package/dist/primitives/messagePart/useMessagePartSource.d.ts.map +1 -1
- package/package.json +6 -6
- package/src/client/ExternalThread.ts +32 -17
- package/src/index.ts +21 -0
- package/src/legacy-runtime/cloud/auiV0.ts +37 -4
- package/src/mcp-apps/McpAppRenderer.tsx +215 -0
- package/src/mcp-apps/McpAppsRemoteHost.ts +52 -0
- package/src/mcp-apps/app-frame.tsx +280 -0
- package/src/mcp-apps/bridge.test.ts +391 -0
- package/src/mcp-apps/bridge.ts +435 -0
- package/src/mcp-apps/index.ts +16 -0
- package/src/mcp-apps/types.ts +158 -0
- package/src/mcp-apps/utils.ts +16 -0
- package/src/primitives/composer/ComposerInput.test.tsx +48 -0
- package/src/primitives/composer/ComposerInput.tsx +20 -2
- package/src/primitives/composer/trigger/TriggerPopover.tsx +21 -1
- package/src/primitives/composer/trigger/TriggerPopoverRootContext.test.tsx +152 -0
- package/src/primitives/composer/trigger/TriggerPopoverRootContext.tsx +134 -17
- package/src/primitives/composer/trigger/triggerKeyboardResource.test.ts +236 -0
- package/src/primitives/composer/trigger/triggerKeyboardResource.ts +2 -1
- package/src/tests/BaseComposerRuntimeCore.test.ts +4 -0
- package/src/tests/auiV0Encode.test.ts +55 -0
|
@@ -6,7 +6,7 @@ import { createContext, forwardRef, useCallback, useContext, useEffect, useId, u
|
|
|
6
6
|
import { Primitive } from "../../../utils/Primitive.js";
|
|
7
7
|
import { useComposerInputPluginRegistryOptional } from "../ComposerInputPluginContext.js";
|
|
8
8
|
import { TriggerPopoverResource, } from "./TriggerPopoverResource.js";
|
|
9
|
-
import { useTriggerPopoverRootContext } from "./TriggerPopoverRootContext.js";
|
|
9
|
+
import { useTriggerPopoverAriaPublish, useTriggerPopoverRootContext, } from "./TriggerPopoverRootContext.js";
|
|
10
10
|
const TriggerPopoverScopeContext = createContext(null);
|
|
11
11
|
export const useTriggerPopoverScopeContext = () => {
|
|
12
12
|
const ctx = useContext(TriggerPopoverScopeContext);
|
|
@@ -101,6 +101,22 @@ export const ComposerPrimitiveTriggerPopover = forwardRef(({ char, adapter, "ari
|
|
|
101
101
|
return pluginRegistry.register(resourceRef.current);
|
|
102
102
|
}, [pluginRegistry]);
|
|
103
103
|
const open = behavior !== null && resource.open;
|
|
104
|
+
const aria = useTriggerPopoverAriaPublish();
|
|
105
|
+
useEffect(() => {
|
|
106
|
+
if (!open)
|
|
107
|
+
return undefined;
|
|
108
|
+
return () => {
|
|
109
|
+
aria.setActiveAria(char, null);
|
|
110
|
+
};
|
|
111
|
+
}, [aria, char, open]);
|
|
112
|
+
useEffect(() => {
|
|
113
|
+
if (!open)
|
|
114
|
+
return;
|
|
115
|
+
aria.setActiveAria(char, {
|
|
116
|
+
popoverId,
|
|
117
|
+
highlightedItemId: resource.highlightedItemId,
|
|
118
|
+
});
|
|
119
|
+
}, [aria, char, popoverId, open, resource.highlightedItemId]);
|
|
104
120
|
return (_jsx(TriggerBehaviorRegistrationContext.Provider, { value: registration, children: _jsx(TriggerPopoverScopeContext.Provider, { value: resource, children: open ? (_jsx(Primitive.div, { role: "listbox", id: popoverId, "aria-label": ariaLabel ?? "Suggestions", "aria-activedescendant": resource.highlightedItemId, "data-state": "open", ...props, ref: forwardedRef, children: children })) : (children) }) }));
|
|
105
121
|
});
|
|
106
122
|
ComposerPrimitiveTriggerPopover.displayName =
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TriggerPopover.js","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/TriggerPopover.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EACL,aAAa,EACb,UAAU,EACV,WAAW,EACX,UAAU,EACV,SAAS,EACT,KAAK,EACL,OAAO,EACP,MAAM,EACN,QAAQ,GAGT,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,SAAS,EAAE,oCAAiC;AACrD,OAAO,EAAE,sCAAsC,EAAE,yCAAsC;AACvF,OAAO,EACL,sBAAsB,GAEvB,oCAAiC;AAElC,OAAO,
|
|
1
|
+
{"version":3,"file":"TriggerPopover.js","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/TriggerPopover.tsx"],"names":[],"mappings":"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"}
|
|
@@ -11,15 +11,41 @@ export type TriggerPopoverLifecycleListener = {
|
|
|
11
11
|
added(trigger: RegisteredTrigger): void;
|
|
12
12
|
removed(char: string): void;
|
|
13
13
|
};
|
|
14
|
+
/**
|
|
15
|
+
* ARIA descriptor of the popover that is currently open. Consumed by the
|
|
16
|
+
* focused element (typically the composer textarea) so it can advertise the
|
|
17
|
+
* combobox relationship per the WAI-ARIA editable combobox pattern.
|
|
18
|
+
*/
|
|
19
|
+
export type TriggerPopoverActiveAria = {
|
|
20
|
+
popoverId: string;
|
|
21
|
+
highlightedItemId: string | undefined;
|
|
22
|
+
};
|
|
14
23
|
export type TriggerPopoverRootContextValue = {
|
|
15
24
|
register(trigger: RegisteredTrigger): () => void;
|
|
16
25
|
getTriggers(): ReadonlyMap<string, RegisteredTrigger>;
|
|
17
26
|
subscribe(listener: () => void): () => void;
|
|
18
27
|
/** Subscribe to per-trigger add/remove events. */
|
|
19
28
|
subscribeLifecycle(listener: TriggerPopoverLifecycleListener): () => void;
|
|
29
|
+
/** ARIA descriptor of the open popover, or null if none is open. */
|
|
30
|
+
getActiveAria(): TriggerPopoverActiveAria | null;
|
|
31
|
+
/** Subscribe to changes in the active ARIA descriptor. */
|
|
32
|
+
subscribeAria(listener: () => void): () => void;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Write-side of the ARIA descriptor, scoped to `TriggerPopover` children of a
|
|
36
|
+
* `TriggerPopoverRoot`. Intentionally not exposed on the public root context
|
|
37
|
+
* value: external consumers can read ARIA state but cannot publish or clear it.
|
|
38
|
+
*/
|
|
39
|
+
type TriggerPopoverAriaPublish = {
|
|
40
|
+
setActiveAria(char: string, aria: TriggerPopoverActiveAria | null): void;
|
|
20
41
|
};
|
|
21
42
|
export declare const useTriggerPopoverRootContext: () => TriggerPopoverRootContextValue;
|
|
22
43
|
export declare const useTriggerPopoverRootContextOptional: () => TriggerPopoverRootContextValue | null;
|
|
44
|
+
/**
|
|
45
|
+
* Internal hook used by `TriggerPopover` children to publish their open and
|
|
46
|
+
* highlight state. Not exported from the trigger module.
|
|
47
|
+
*/
|
|
48
|
+
export declare const useTriggerPopoverAriaPublish: () => TriggerPopoverAriaPublish;
|
|
23
49
|
/**
|
|
24
50
|
* Live map of registered triggers, re-rendering on change. Prefer
|
|
25
51
|
* `subscribeLifecycle` for incremental add/remove handling.
|
|
@@ -27,6 +53,12 @@ export declare const useTriggerPopoverRootContextOptional: () => TriggerPopoverR
|
|
|
27
53
|
export declare const useTriggerPopoverTriggers: () => ReadonlyMap<string, RegisteredTrigger>;
|
|
28
54
|
/** Like `useTriggerPopoverTriggers` but returns an empty map outside a root. */
|
|
29
55
|
export declare const useTriggerPopoverTriggersOptional: () => ReadonlyMap<string, RegisteredTrigger>;
|
|
56
|
+
/**
|
|
57
|
+
* Returns the ARIA descriptor of the currently open trigger popover, or
|
|
58
|
+
* `null` if none is open or the consumer is rendered outside a
|
|
59
|
+
* `TriggerPopoverRoot`.
|
|
60
|
+
*/
|
|
61
|
+
export declare const useTriggerPopoverActiveAriaOptional: () => TriggerPopoverActiveAria | null;
|
|
30
62
|
export declare namespace ComposerPrimitiveTriggerPopoverRoot {
|
|
31
63
|
type Props = {
|
|
32
64
|
children: ReactNode;
|
|
@@ -57,4 +89,5 @@ export declare namespace ComposerPrimitiveTriggerPopoverRoot {
|
|
|
57
89
|
* ```
|
|
58
90
|
*/
|
|
59
91
|
export declare const ComposerPrimitiveTriggerPopoverRoot: FC<ComposerPrimitiveTriggerPopoverRoot.Props>;
|
|
92
|
+
export {};
|
|
60
93
|
//# sourceMappingURL=TriggerPopoverRootContext.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TriggerPopoverRootContext.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/TriggerPopoverRootContext.tsx"],"names":[],"mappings":"AAEA,OAAO,EAOL,KAAK,EAAE,EACP,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAAE,4BAA4B,EAAE,oCAAiC;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,sCAAmC;AAElE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,4BAA4B,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,KAAK,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACxC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,IAAI,CAAC;IACjD,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACtD,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IAC5C,kDAAkD;IAClD,kBAAkB,CAAC,QAAQ,EAAE,+BAA+B,GAAG,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"TriggerPopoverRootContext.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/TriggerPopoverRootContext.tsx"],"names":[],"mappings":"AAEA,OAAO,EAOL,KAAK,EAAE,EACP,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAAE,4BAA4B,EAAE,oCAAiC;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,sCAAmC;AAElE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,4BAA4B,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,KAAK,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACxC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,IAAI,CAAC;IACjD,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACtD,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IAC5C,kDAAkD;IAClD,kBAAkB,CAAC,QAAQ,EAAE,+BAA+B,GAAG,MAAM,IAAI,CAAC;IAC1E,oEAAoE;IACpE,aAAa,IAAI,wBAAwB,GAAG,IAAI,CAAC;IACjD,0DAA0D;IAC1D,aAAa,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;CACjD,CAAC;AAEF;;;;GAIG;AACH,KAAK,yBAAyB,GAAG;IAC/B,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,GAAG,IAAI,GAAG,IAAI,CAAC;CAC1E,CAAC;AAQF,eAAO,MAAM,4BAA4B,sCAOxC,CAAC;AAEF,eAAO,MAAM,oCAAoC,6CACV,CAAC;AAExC;;;GAGG;AACH,eAAO,MAAM,4BAA4B,QAAO,yBAO/C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,8CAGrC,CAAC;AAMF,gFAAgF;AAChF,eAAO,MAAM,iCAAiC,8CAO7C,CAAC;AAIF;;;;GAIG;AACH,eAAO,MAAM,mCAAmC,QAC1C,wBAAwB,GAAG,IAO9B,CAAC;AAEJ,yBAAiB,mCAAmC,CAAC;IACnD,KAAY,KAAK,GAAG;QAClB,QAAQ,EAAE,SAAS,CAAC;KACrB,CAAC;CACH;AAsJD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,mCAAmC,EAAE,EAAE,CAClD,mCAAmC,CAAC,KAAK,CAa1C,CAAC"}
|
|
@@ -3,6 +3,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
3
3
|
import { createContext, useCallback, useContext, useMemo, useRef, useSyncExternalStore, } from "react";
|
|
4
4
|
import { ComposerInputPluginProvider, useComposerInputPluginRegistryOptional, } from "../ComposerInputPluginContext.js";
|
|
5
5
|
const TriggerPopoverRootContext = createContext(null);
|
|
6
|
+
const TriggerPopoverAriaPublishContext = createContext(null);
|
|
6
7
|
export const useTriggerPopoverRootContext = () => {
|
|
7
8
|
const ctx = useContext(TriggerPopoverRootContext);
|
|
8
9
|
if (!ctx)
|
|
@@ -10,6 +11,16 @@ export const useTriggerPopoverRootContext = () => {
|
|
|
10
11
|
return ctx;
|
|
11
12
|
};
|
|
12
13
|
export const useTriggerPopoverRootContextOptional = () => useContext(TriggerPopoverRootContext);
|
|
14
|
+
/**
|
|
15
|
+
* Internal hook used by `TriggerPopover` children to publish their open and
|
|
16
|
+
* highlight state. Not exported from the trigger module.
|
|
17
|
+
*/
|
|
18
|
+
export const useTriggerPopoverAriaPublish = () => {
|
|
19
|
+
const ctx = useContext(TriggerPopoverAriaPublishContext);
|
|
20
|
+
if (!ctx)
|
|
21
|
+
throw new Error("useTriggerPopoverAriaPublish must be used within ComposerPrimitive.TriggerPopoverRoot");
|
|
22
|
+
return ctx;
|
|
23
|
+
};
|
|
13
24
|
/**
|
|
14
25
|
* Live map of registered triggers, re-rendering on change. Prefer
|
|
15
26
|
* `subscribeLifecycle` for incremental add/remove handling.
|
|
@@ -26,14 +37,39 @@ export const useTriggerPopoverTriggersOptional = () => {
|
|
|
26
37
|
const ctx = useTriggerPopoverRootContextOptional();
|
|
27
38
|
return useSyncExternalStore(ctx ? ctx.subscribe : noopSubscribe, ctx ? ctx.getTriggers : getEmptyTriggers, ctx ? ctx.getTriggers : getEmptyTriggers);
|
|
28
39
|
};
|
|
29
|
-
const
|
|
30
|
-
|
|
40
|
+
const getNullAria = () => null;
|
|
41
|
+
/**
|
|
42
|
+
* Returns the ARIA descriptor of the currently open trigger popover, or
|
|
43
|
+
* `null` if none is open or the consumer is rendered outside a
|
|
44
|
+
* `TriggerPopoverRoot`.
|
|
45
|
+
*/
|
|
46
|
+
export const useTriggerPopoverActiveAriaOptional = () => {
|
|
47
|
+
const ctx = useTriggerPopoverRootContextOptional();
|
|
48
|
+
return useSyncExternalStore(ctx ? ctx.subscribeAria : noopSubscribe, ctx ? ctx.getActiveAria : getNullAria, ctx ? ctx.getActiveAria : getNullAria);
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Local helper for the simple "notify-all listeners" subscribable pattern.
|
|
52
|
+
* Used twice in this file (trigger registry, active ARIA); kept inline to
|
|
53
|
+
* avoid pulling a single-use abstraction into the wider tree.
|
|
54
|
+
*/
|
|
55
|
+
function useSimpleSubscribable() {
|
|
31
56
|
const listenersRef = useRef(new Set());
|
|
32
|
-
const lifecycleListenersRef = useRef(new Set());
|
|
33
57
|
const notify = useCallback(() => {
|
|
34
58
|
for (const listener of listenersRef.current)
|
|
35
59
|
listener();
|
|
36
60
|
}, []);
|
|
61
|
+
const subscribe = useCallback((listener) => {
|
|
62
|
+
listenersRef.current.add(listener);
|
|
63
|
+
return () => {
|
|
64
|
+
listenersRef.current.delete(listener);
|
|
65
|
+
};
|
|
66
|
+
}, []);
|
|
67
|
+
return { notify, subscribe };
|
|
68
|
+
}
|
|
69
|
+
const TriggerPopoverRootInner = ({ children }) => {
|
|
70
|
+
const triggersRef = useRef(new Map());
|
|
71
|
+
const lifecycleListenersRef = useRef(new Set());
|
|
72
|
+
const { notify, subscribe } = useSimpleSubscribable();
|
|
37
73
|
const register = useCallback((trigger) => {
|
|
38
74
|
const { char } = trigger;
|
|
39
75
|
if (triggersRef.current.has(char)) {
|
|
@@ -66,20 +102,53 @@ const TriggerPopoverRootInner = ({ children }) => {
|
|
|
66
102
|
};
|
|
67
103
|
}, [notify]);
|
|
68
104
|
const getTriggers = useCallback(() => triggersRef.current, []);
|
|
69
|
-
const subscribe = useCallback((listener) => {
|
|
70
|
-
listenersRef.current.add(listener);
|
|
71
|
-
return () => {
|
|
72
|
-
listenersRef.current.delete(listener);
|
|
73
|
-
};
|
|
74
|
-
}, []);
|
|
75
105
|
const subscribeLifecycle = useCallback((listener) => {
|
|
76
106
|
lifecycleListenersRef.current.add(listener);
|
|
77
107
|
return () => {
|
|
78
108
|
lifecycleListenersRef.current.delete(listener);
|
|
79
109
|
};
|
|
80
110
|
}, []);
|
|
81
|
-
const
|
|
82
|
-
|
|
111
|
+
const activeAriaRef = useRef(null);
|
|
112
|
+
const activeAriaCharRef = useRef(null);
|
|
113
|
+
const { notify: notifyAria, subscribe: subscribeAria } = useSimpleSubscribable();
|
|
114
|
+
const setActiveAria = useCallback((char, aria) => {
|
|
115
|
+
if (aria === null) {
|
|
116
|
+
if (activeAriaCharRef.current !== char)
|
|
117
|
+
return;
|
|
118
|
+
activeAriaRef.current = null;
|
|
119
|
+
activeAriaCharRef.current = null;
|
|
120
|
+
notifyAria();
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
const prev = activeAriaRef.current;
|
|
124
|
+
if (activeAriaCharRef.current === char &&
|
|
125
|
+
prev !== null &&
|
|
126
|
+
prev.popoverId === aria.popoverId &&
|
|
127
|
+
prev.highlightedItemId === aria.highlightedItemId) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
activeAriaRef.current = aria;
|
|
131
|
+
activeAriaCharRef.current = char;
|
|
132
|
+
notifyAria();
|
|
133
|
+
}, [notifyAria]);
|
|
134
|
+
const getActiveAria = useCallback(() => activeAriaRef.current, []);
|
|
135
|
+
const value = useMemo(() => ({
|
|
136
|
+
register,
|
|
137
|
+
getTriggers,
|
|
138
|
+
subscribe,
|
|
139
|
+
subscribeLifecycle,
|
|
140
|
+
getActiveAria,
|
|
141
|
+
subscribeAria,
|
|
142
|
+
}), [
|
|
143
|
+
register,
|
|
144
|
+
getTriggers,
|
|
145
|
+
subscribe,
|
|
146
|
+
subscribeLifecycle,
|
|
147
|
+
getActiveAria,
|
|
148
|
+
subscribeAria,
|
|
149
|
+
]);
|
|
150
|
+
const ariaPublishValue = useMemo(() => ({ setActiveAria }), [setActiveAria]);
|
|
151
|
+
return (_jsx(TriggerPopoverRootContext.Provider, { value: value, children: _jsx(TriggerPopoverAriaPublishContext.Provider, { value: ariaPublishValue, children: children }) }));
|
|
83
152
|
};
|
|
84
153
|
/**
|
|
85
154
|
* Provider that groups one or more `TriggerPopover` declarations. Each trigger
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TriggerPopoverRootContext.js","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/TriggerPopoverRootContext.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EACL,aAAa,EACb,WAAW,EACX,UAAU,EACV,OAAO,EACP,MAAM,EACN,oBAAoB,GAGrB,MAAM,OAAO,CAAC;AACf,OAAO,EACL,2BAA2B,EAC3B,sCAAsC,GACvC,yCAAsC;
|
|
1
|
+
{"version":3,"file":"TriggerPopoverRootContext.js","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/TriggerPopoverRootContext.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triggerKeyboardResource.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/triggerKeyboardResource.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,wBAAwB,EACxB,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAS5B,wDAAwD;AACxD,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,cAAc,IAAI,IAAI,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,0EAA0E;IAC1E,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,0EAA0E;IAC1E,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,uGAAuG;IACvG,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,6DAA6D;IAC7D,aAAa,CAAC,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC;CACnD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB;mBAajB,SAAS,CAAC,wBAAwB,GAAG,oBAAoB,CAAC,EAAE;kBAC7D,OAAO;sBACH,MAAM,GAAG,IAAI;WACxB,MAAM;eACF,MAAM;UACX,OAAO;gBACD,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI;oBAChC,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI;YACpC,MAAM,IAAI;WACX,MAAM,IAAI;;mBATF,SAAS,CAAC,wBAAwB,GAAG,oBAAoB,CAAC,EAAE;kBAC7D,OAAO;sBACH,MAAM,GAAG,IAAI;WACxB,MAAM;eACF,MAAM;UACX,OAAO;gBACD,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI;oBAChC,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI;YACpC,MAAM,IAAI;WACX,MAAM,IAAI;
|
|
1
|
+
{"version":3,"file":"triggerKeyboardResource.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/triggerKeyboardResource.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,wBAAwB,EACxB,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAS5B,wDAAwD;AACxD,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,cAAc,IAAI,IAAI,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,0EAA0E;IAC1E,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,0EAA0E;IAC1E,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,uGAAuG;IACvG,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,6DAA6D;IAC7D,aAAa,CAAC,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC;CACnD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB;mBAajB,SAAS,CAAC,wBAAwB,GAAG,oBAAoB,CAAC,EAAE;kBAC7D,OAAO;sBACH,MAAM,GAAG,IAAI;WACxB,MAAM;eACF,MAAM;UACX,OAAO;gBACD,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI;oBAChC,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI;YACpC,MAAM,IAAI;WACX,MAAM,IAAI;;mBATF,SAAS,CAAC,wBAAwB,GAAG,oBAAoB,CAAC,EAAE;kBAC7D,OAAO;sBACH,MAAM,GAAG,IAAI;WACxB,MAAM;eACF,MAAM;UACX,OAAO;gBACD,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI;oBAChC,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI;YACpC,MAAM,IAAI;WACX,MAAM,IAAI;EAyFpB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triggerKeyboardResource.js","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/triggerKeyboardResource.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,SAAS,EACT,cAAc,EACd,QAAQ,GACT,MAAM,mBAAmB,CAAC;AAM3B,0EAA0E;AAC1E,SAAS,aAAa,CACpB,CAAkD;IAElD,OAAO,MAAM,IAAI,CAAC,CAAC;AACrB,CAAC;AAoBD;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,QAAQ,CAC7C,CAAC,EACC,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,KAAK,EACL,SAAS,EACT,IAAI,EACJ,UAAU,EACV,cAAc,EACd,MAAM,EACN,KAAK,GAYN,EAAiC,EAAE;IAClC,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE5D,4FAA4F;IAC5F,SAAS,CAAC,GAAG,EAAE;QACb,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,6EAA6E;IAC7E,SAAS,CAAC,GAAG,EAAE;QACb,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC,EAAE,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAErC,MAAM,cAAc,GAAG,cAAc,CAAC,CAAC,KAAa,EAAE,EAAE;QACtD,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,aAAa,CAAC,MAAM;YAAE,OAAO;QACvD,IAAI,KAAK,KAAK,gBAAgB;YAAE,OAAO;QACvC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,cAAc,CAClC,CAAC,CAAyB,EAAW,EAAE;QACrC,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QAExB,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;YACd,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,mBAAmB,CAAC,CAAC,IAAI,EAAE,EAAE;oBAC3B,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC;oBACjC,IAAI,GAAG,KAAK,CAAC;wBAAE,OAAO,CAAC,CAAC;oBACxB,OAAO,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvC,CAAC,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC;YACd,CAAC;YACD,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,mBAAmB,CAAC,CAAC,IAAI,EAAE,EAAE;oBAC3B,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC;oBACjC,IAAI,GAAG,KAAK,CAAC;wBAAE,OAAO,CAAC,CAAC;oBACxB,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;gBACvC,CAAC,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC;YACd,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"triggerKeyboardResource.js","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/triggerKeyboardResource.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
export declare const useMessagePartSource: () => ({
|
|
2
|
+
readonly type: "source";
|
|
3
|
+
readonly sourceType: "url";
|
|
4
|
+
readonly id: string;
|
|
5
|
+
readonly url: string;
|
|
6
|
+
readonly title?: string;
|
|
7
|
+
readonly providerMetadata?: import("@assistant-ui/core").SourceProviderMetadata;
|
|
8
|
+
readonly parentId?: string;
|
|
9
|
+
} & {
|
|
3
10
|
readonly status: import("@assistant-ui/core").MessagePartStatus | import("@assistant-ui/core").ToolCallMessagePartStatus;
|
|
4
|
-
}
|
|
11
|
+
}) | ({
|
|
12
|
+
readonly type: "source";
|
|
13
|
+
readonly sourceType: "document";
|
|
14
|
+
readonly id: string;
|
|
15
|
+
readonly url?: undefined;
|
|
16
|
+
readonly title: string;
|
|
17
|
+
readonly mediaType: string;
|
|
18
|
+
readonly filename?: string;
|
|
19
|
+
readonly providerMetadata?: import("@assistant-ui/core").SourceProviderMetadata;
|
|
20
|
+
readonly parentId?: string;
|
|
21
|
+
} & {
|
|
22
|
+
readonly status: import("@assistant-ui/core").MessagePartStatus | import("@assistant-ui/core").ToolCallMessagePartStatus;
|
|
23
|
+
});
|
|
5
24
|
//# sourceMappingURL=useMessagePartSource.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMessagePartSource.d.ts","sourceRoot":"","sources":["../../../src/primitives/messagePart/useMessagePartSource.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useMessagePartSource.d.ts","sourceRoot":"","sources":["../../../src/primitives/messagePart/useMessagePartSource.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;EAWhC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@assistant-ui/react",
|
|
3
|
-
"version": "0.14.
|
|
4
|
-
"description": "TypeScript/React library for AI
|
|
3
|
+
"version": "0.14.2",
|
|
4
|
+
"description": "Open-source TypeScript/React library for building production-grade AI chat experiences",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"radix-ui",
|
|
7
7
|
"nextjs",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
],
|
|
49
49
|
"sideEffects": false,
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@assistant-ui/core": "^0.2.
|
|
51
|
+
"@assistant-ui/core": "^0.2.2",
|
|
52
52
|
"@assistant-ui/store": "^0.2.10",
|
|
53
53
|
"@assistant-ui/tap": "^0.5.11",
|
|
54
54
|
"@radix-ui/primitive": "^1.1.3",
|
|
@@ -58,10 +58,11 @@
|
|
|
58
58
|
"@radix-ui/react-use-callback-ref": "^1.1.1",
|
|
59
59
|
"@radix-ui/react-use-escape-keydown": "^1.1.1",
|
|
60
60
|
"assistant-cloud": "^0.1.27",
|
|
61
|
-
"assistant-stream": "^0.3.
|
|
61
|
+
"assistant-stream": "^0.3.14",
|
|
62
62
|
"nanoid": "^5.1.11",
|
|
63
63
|
"radix-ui": "^1.4.3",
|
|
64
64
|
"react-textarea-autosize": "^8.5.9",
|
|
65
|
+
"safe-content-frame": "^0.0.18",
|
|
65
66
|
"zod": "^4.4.3",
|
|
66
67
|
"zustand": "^5.0.13"
|
|
67
68
|
},
|
|
@@ -92,8 +93,7 @@
|
|
|
92
93
|
"@assistant-ui/x-buildutils": "0.0.7"
|
|
93
94
|
},
|
|
94
95
|
"publishConfig": {
|
|
95
|
-
"access": "public"
|
|
96
|
-
"provenance": true
|
|
96
|
+
"access": "public"
|
|
97
97
|
},
|
|
98
98
|
"homepage": "https://www.assistant-ui.com/",
|
|
99
99
|
"repository": {
|
|
@@ -50,6 +50,13 @@ export type ExternalThreadQueueAdapter = {
|
|
|
50
50
|
export type ExternalThreadProps = {
|
|
51
51
|
messages: readonly ExternalThreadMessage[];
|
|
52
52
|
isRunning?: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Whether sending new messages is currently disabled. When `true`, the
|
|
55
|
+
* thread composer's input remains usable but `send()` is a no-op and
|
|
56
|
+
* `composer.canSend` is `false`. Edit composers (saving message edits)
|
|
57
|
+
* intentionally ignore this flag.
|
|
58
|
+
*/
|
|
59
|
+
isSendDisabled?: boolean;
|
|
53
60
|
/**
|
|
54
61
|
* Callback for new messages (non-queue runtimes).
|
|
55
62
|
* @note Unused when `queue` is provided — new messages are routed through `queue.enqueue` instead.
|
|
@@ -241,6 +248,7 @@ type ComposerClientResourceProps = {
|
|
|
241
248
|
type: "thread" | "edit";
|
|
242
249
|
isEditing: boolean;
|
|
243
250
|
canCancel: boolean;
|
|
251
|
+
isSendDisabled?: boolean;
|
|
244
252
|
onCancel: () => void;
|
|
245
253
|
onBeginEdit?: () => void;
|
|
246
254
|
onSend?: (message: AppendMessage) => void;
|
|
@@ -272,6 +280,7 @@ const ComposerClientResource = resource(
|
|
|
272
280
|
type,
|
|
273
281
|
isEditing,
|
|
274
282
|
canCancel,
|
|
283
|
+
isSendDisabled = false,
|
|
275
284
|
onCancel,
|
|
276
285
|
onBeginEdit,
|
|
277
286
|
onSend,
|
|
@@ -341,34 +350,36 @@ const ComposerClientResource = resource(
|
|
|
341
350
|
[queueItems],
|
|
342
351
|
);
|
|
343
352
|
|
|
344
|
-
const state = tapMemo(
|
|
345
|
-
()
|
|
353
|
+
const state = tapMemo(() => {
|
|
354
|
+
const isEmpty = !text.trim() && !attachments.length;
|
|
355
|
+
return {
|
|
346
356
|
text,
|
|
347
357
|
role,
|
|
348
358
|
attachments: attachmentClients.state,
|
|
349
359
|
runConfig,
|
|
350
360
|
isEditing,
|
|
351
361
|
canCancel,
|
|
362
|
+
canSend: isEditing && !isEmpty && !isSendDisabled,
|
|
352
363
|
attachmentAccept: "*",
|
|
353
|
-
isEmpty
|
|
364
|
+
isEmpty,
|
|
354
365
|
type,
|
|
355
366
|
dictation: undefined,
|
|
356
367
|
quote,
|
|
357
368
|
queue: queueItems,
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
);
|
|
369
|
+
};
|
|
370
|
+
}, [
|
|
371
|
+
text,
|
|
372
|
+
role,
|
|
373
|
+
attachmentClients.state,
|
|
374
|
+
runConfig,
|
|
375
|
+
isEditing,
|
|
376
|
+
canCancel,
|
|
377
|
+
isSendDisabled,
|
|
378
|
+
type,
|
|
379
|
+
attachments.length,
|
|
380
|
+
quote,
|
|
381
|
+
queueItems,
|
|
382
|
+
]);
|
|
372
383
|
|
|
373
384
|
return {
|
|
374
385
|
getState: () => state,
|
|
@@ -416,6 +427,8 @@ const ComposerClientResource = resource(
|
|
|
416
427
|
setQuote(undefined);
|
|
417
428
|
},
|
|
418
429
|
send: (opts?: ComposerSendOptions) => {
|
|
430
|
+
if (!state.canSend) return;
|
|
431
|
+
|
|
419
432
|
const currentQuote = quote;
|
|
420
433
|
const composedMessage: AppendMessage = {
|
|
421
434
|
role,
|
|
@@ -458,6 +471,7 @@ export const ExternalThread = resource(
|
|
|
458
471
|
({
|
|
459
472
|
messages,
|
|
460
473
|
isRunning = false,
|
|
474
|
+
isSendDisabled = false,
|
|
461
475
|
onNew,
|
|
462
476
|
onEdit,
|
|
463
477
|
onReload,
|
|
@@ -503,6 +517,7 @@ export const ExternalThread = resource(
|
|
|
503
517
|
type: "thread",
|
|
504
518
|
isEditing: true,
|
|
505
519
|
canCancel: isRunning,
|
|
520
|
+
isSendDisabled,
|
|
506
521
|
onCancel: handleCancelRun,
|
|
507
522
|
onSend: handleSendNew,
|
|
508
523
|
queue,
|
package/src/index.ts
CHANGED
|
@@ -274,12 +274,14 @@ export type {
|
|
|
274
274
|
AppendMessage,
|
|
275
275
|
TextMessagePart,
|
|
276
276
|
ReasoningMessagePart,
|
|
277
|
+
SourceProviderMetadata,
|
|
277
278
|
SourceMessagePart,
|
|
278
279
|
ImageMessagePart,
|
|
279
280
|
FileMessagePart,
|
|
280
281
|
DataMessagePart,
|
|
281
282
|
Unstable_AudioMessagePart,
|
|
282
283
|
ToolCallMessagePart,
|
|
284
|
+
ToolModelContentPart,
|
|
283
285
|
MessageStatus,
|
|
284
286
|
MessagePartStatus,
|
|
285
287
|
ToolCallMessagePartStatus,
|
|
@@ -378,3 +380,22 @@ export {
|
|
|
378
380
|
} from "./primitives/composer/trigger";
|
|
379
381
|
|
|
380
382
|
export type { Assistant } from "./augmentations";
|
|
383
|
+
|
|
384
|
+
// --- mcp-apps ---
|
|
385
|
+
export { McpAppRenderer, McpAppsRemoteHost } from "./mcp-apps";
|
|
386
|
+
export type {
|
|
387
|
+
McpAppRendererOptions,
|
|
388
|
+
McpAppMetadata,
|
|
389
|
+
McpAppResource,
|
|
390
|
+
McpAppResourceMeta,
|
|
391
|
+
McpAppResourceCSP,
|
|
392
|
+
McpAppSandboxConfig,
|
|
393
|
+
McpAppHostInfo,
|
|
394
|
+
McpAppHostContext,
|
|
395
|
+
McpAppDisplayMode,
|
|
396
|
+
McpAppsHost,
|
|
397
|
+
McpAppsRemoteHostOptions,
|
|
398
|
+
McpAppToolCallParams,
|
|
399
|
+
ToolCallMessagePartMcpMetadata,
|
|
400
|
+
} from "./mcp-apps";
|
|
401
|
+
export type { McpAppResourceOutput } from "@assistant-ui/core/react";
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type {
|
|
2
|
+
MessageStatus,
|
|
3
|
+
SourceProviderMetadata,
|
|
4
|
+
ThreadMessage,
|
|
5
|
+
} from "@assistant-ui/core";
|
|
2
6
|
import { fromThreadMessageLike } from "../runtime-cores/external-store/ThreadMessageLike";
|
|
3
7
|
import type { CloudMessage } from "assistant-cloud";
|
|
4
8
|
import { isJSONValue } from "../../utils/json/is-json";
|
|
@@ -23,6 +27,16 @@ type AuiV0MessagePart =
|
|
|
23
27
|
readonly id: string;
|
|
24
28
|
readonly url: string;
|
|
25
29
|
readonly title?: string;
|
|
30
|
+
readonly providerMetadata?: SourceProviderMetadata;
|
|
31
|
+
}
|
|
32
|
+
| {
|
|
33
|
+
readonly type: "source";
|
|
34
|
+
readonly sourceType: "document";
|
|
35
|
+
readonly id: string;
|
|
36
|
+
readonly title: string;
|
|
37
|
+
readonly mediaType: string;
|
|
38
|
+
readonly filename?: string;
|
|
39
|
+
readonly providerMetadata?: SourceProviderMetadata;
|
|
26
40
|
}
|
|
27
41
|
| {
|
|
28
42
|
readonly type: "tool-call";
|
|
@@ -90,12 +104,31 @@ export function auiV0Encode(message: ThreadMessage): AuiV0Message {
|
|
|
90
104
|
return { type: "reasoning", text: part.text };
|
|
91
105
|
|
|
92
106
|
case "source":
|
|
107
|
+
if (part.sourceType === "url") {
|
|
108
|
+
return {
|
|
109
|
+
type: "source",
|
|
110
|
+
sourceType: "url",
|
|
111
|
+
id: part.id,
|
|
112
|
+
url: part.url,
|
|
113
|
+
...(part.title != null ? { title: part.title } : undefined),
|
|
114
|
+
...(part.providerMetadata != null
|
|
115
|
+
? { providerMetadata: part.providerMetadata }
|
|
116
|
+
: undefined),
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
|
|
93
120
|
return {
|
|
94
121
|
type: "source",
|
|
95
|
-
sourceType:
|
|
122
|
+
sourceType: "document",
|
|
96
123
|
id: part.id,
|
|
97
|
-
|
|
98
|
-
|
|
124
|
+
title: part.title,
|
|
125
|
+
mediaType: part.mediaType,
|
|
126
|
+
...(part.filename != null
|
|
127
|
+
? { filename: part.filename }
|
|
128
|
+
: undefined),
|
|
129
|
+
...(part.providerMetadata != null
|
|
130
|
+
? { providerMetadata: part.providerMetadata }
|
|
131
|
+
: undefined),
|
|
99
132
|
};
|
|
100
133
|
|
|
101
134
|
case "tool-call": {
|