@assistant-ui/react 0.11.38 → 0.11.41
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/client/AssistantClient.d.ts.map +1 -1
- package/dist/client/AssistantClient.js +14 -30
- package/dist/client/AssistantClient.js.map +1 -1
- package/dist/client/ModelContextClient.d.ts +1 -1
- package/dist/client/NoOpComposerClient.d.ts +1 -1
- package/dist/client/ThreadMessageClient.d.ts +1 -1
- package/dist/client/Tools.d.ts +1 -1
- package/dist/client/Tools.d.ts.map +1 -1
- package/dist/client/Tools.js +29 -18
- package/dist/client/Tools.js.map +1 -1
- package/dist/client/types/Tools.d.ts +6 -1
- package/dist/client/types/Tools.d.ts.map +1 -1
- package/dist/context/react/AssistantApiContext.d.ts +2 -4
- package/dist/context/react/AssistantApiContext.d.ts.map +1 -1
- package/dist/context/react/AssistantApiContext.js +0 -7
- package/dist/context/react/AssistantApiContext.js.map +1 -1
- package/dist/context/react/hooks/useAssistantState.js +2 -2
- package/dist/context/react/hooks/useAssistantState.js.map +1 -1
- package/dist/legacy-runtime/RuntimeAdapter.d.ts +1 -1
- package/dist/legacy-runtime/client/AttachmentRuntimeClient.d.ts +1 -1
- package/dist/legacy-runtime/client/ComposerRuntimeClient.d.ts +1 -1
- package/dist/legacy-runtime/client/EventManagerRuntimeClient.d.ts +1 -1
- package/dist/legacy-runtime/client/MessagePartRuntimeClient.d.ts +1 -1
- package/dist/legacy-runtime/client/MessageRuntimeClient.d.ts +1 -1
- package/dist/legacy-runtime/client/ThreadListItemRuntimeClient.d.ts +1 -1
- package/dist/legacy-runtime/client/ThreadListRuntimeClient.d.ts +1 -1
- package/dist/legacy-runtime/client/ThreadRuntimeClient.d.ts +1 -1
- package/dist/legacy-runtime/cloud/auiV0.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/runManager.d.ts +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/runManager.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/runManager.js +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/runManager.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/types.d.ts +8 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/types.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.js +23 -11
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/external-store/ThreadMessageLike.d.ts +2 -2
- package/dist/legacy-runtime/runtime-cores/external-store/ThreadMessageLike.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/external-store/ThreadMessageLike.js +2 -0
- package/dist/legacy-runtime/runtime-cores/external-store/ThreadMessageLike.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/local/LocalThreadRuntimeCore.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/local/LocalThreadRuntimeCore.js +7 -4
- package/dist/legacy-runtime/runtime-cores/local/LocalThreadRuntimeCore.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/utils/MessageRepository.d.ts +7 -2
- package/dist/legacy-runtime/runtime-cores/utils/MessageRepository.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/utils/MessageRepository.js +17 -3
- package/dist/legacy-runtime/runtime-cores/utils/MessageRepository.js.map +1 -1
- package/dist/model-context/index.d.ts +1 -1
- package/dist/model-context/index.d.ts.map +1 -1
- package/dist/model-context/index.js +0 -4
- package/dist/model-context/index.js.map +1 -1
- package/dist/model-context/makeAssistantVisible.d.ts.map +1 -1
- package/dist/model-context/makeAssistantVisible.js +21 -8
- package/dist/model-context/makeAssistantVisible.js.map +1 -1
- package/dist/model-context/toolbox.d.ts +1 -19
- package/dist/model-context/toolbox.d.ts.map +1 -1
- package/dist/model-context/toolbox.js +0 -13
- package/dist/model-context/toolbox.js.map +1 -1
- package/dist/model-context/useAssistantTool.js +1 -1
- package/dist/model-context/useAssistantTool.js.map +1 -1
- package/dist/model-context/useAssistantToolUI.js +1 -1
- package/dist/model-context/useAssistantToolUI.js.map +1 -1
- package/dist/primitives/index.d.ts +1 -0
- package/dist/primitives/index.d.ts.map +1 -1
- package/dist/primitives/index.js +2 -0
- package/dist/primitives/index.js.map +1 -1
- package/dist/primitives/message/MessageParts.d.ts.map +1 -1
- package/dist/primitives/message/MessageParts.js +4 -2
- package/dist/primitives/message/MessageParts.js.map +1 -1
- package/dist/primitives/message/MessagePartsGrouped.d.ts.map +1 -1
- package/dist/primitives/message/MessagePartsGrouped.js +4 -2
- package/dist/primitives/message/MessagePartsGrouped.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartData.d.ts +3 -0
- package/dist/primitives/messagePart/useMessagePartData.d.ts.map +1 -0
- package/dist/primitives/messagePart/useMessagePartData.js +23 -0
- package/dist/primitives/messagePart/useMessagePartData.js.map +1 -0
- package/dist/tests/setup.js +14 -14
- package/dist/tests/setup.js.map +1 -1
- package/dist/types/AssistantTypes.d.ts +2 -2
- package/dist/types/AssistantTypes.d.ts.map +1 -1
- package/dist/types/MessagePartTypes.d.ts +6 -1
- package/dist/types/MessagePartTypes.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/tap-store/derived-scopes.d.ts +1 -1
- package/dist/utils/tap-store/derived-scopes.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/client/AssistantClient.ts +14 -33
- package/src/client/Tools.ts +31 -22
- package/src/client/types/Tools.ts +11 -2
- package/src/context/react/AssistantApiContext.tsx +2 -11
- package/src/context/react/hooks/useAssistantState.tsx +2 -2
- package/src/legacy-runtime/cloud/auiV0.ts +1 -1
- package/src/legacy-runtime/runtime-cores/assistant-transport/runManager.ts +2 -2
- package/src/legacy-runtime/runtime-cores/assistant-transport/types.ts +8 -1
- package/src/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.tsx +26 -11
- package/src/legacy-runtime/runtime-cores/external-store/ThreadMessageLike.tsx +10 -1
- package/src/legacy-runtime/runtime-cores/local/LocalThreadRuntimeCore.tsx +7 -3
- package/src/legacy-runtime/runtime-cores/utils/MessageRepository.tsx +27 -3
- package/src/model-context/index.ts +1 -6
- package/src/model-context/makeAssistantVisible.tsx +23 -12
- package/src/model-context/toolbox.tsx +1 -21
- package/src/model-context/useAssistantTool.tsx +1 -1
- package/src/model-context/useAssistantToolUI.tsx +1 -1
- package/src/primitives/index.ts +1 -0
- package/src/primitives/message/MessageParts.tsx +5 -3
- package/src/primitives/message/MessagePartsGrouped.tsx +5 -3
- package/src/primitives/messagePart/useMessagePartData.tsx +23 -0
- package/src/types/AssistantTypes.ts +2 -0
- package/src/types/MessagePartTypes.ts +8 -1
- package/src/types/index.ts +1 -0
- package/dist/client/ToolUIClient.d.ts +0 -7
- package/dist/client/ToolUIClient.d.ts.map +0 -1
- package/dist/client/ToolUIClient.js +0 -71
- package/dist/client/ToolUIClient.js.map +0 -1
- package/dist/client/ToolUIContext.d.ts +0 -4
- package/dist/client/ToolUIContext.d.ts.map +0 -1
- package/dist/client/ToolUIContext.js +0 -20
- package/dist/client/ToolUIContext.js.map +0 -1
- package/dist/client/types/ToolUI.d.ts +0 -23
- package/dist/client/types/ToolUI.d.ts.map +0 -1
- package/dist/client/types/ToolUI.js +0 -1
- package/dist/client/types/ToolUI.js.map +0 -1
- package/src/client/ToolUIClient.ts +0 -76
- package/src/client/ToolUIContext.ts +0 -22
- package/src/client/types/ToolUI.ts +0 -27
|
@@ -19,12 +19,7 @@ export { tool } from "./tool";
|
|
|
19
19
|
|
|
20
20
|
export { makeAssistantVisible } from "./makeAssistantVisible";
|
|
21
21
|
|
|
22
|
-
export {
|
|
23
|
-
Toolkit,
|
|
24
|
-
type ToolDefinition,
|
|
25
|
-
type ToolkitFallback,
|
|
26
|
-
type ToolkitLayout,
|
|
27
|
-
} from "./toolbox";
|
|
22
|
+
export type { Toolkit, ToolDefinition } from "./toolbox";
|
|
28
23
|
|
|
29
24
|
export { Tools } from "../client/Tools";
|
|
30
25
|
|
|
@@ -11,18 +11,21 @@ import {
|
|
|
11
11
|
createContext,
|
|
12
12
|
useContext,
|
|
13
13
|
} from "react";
|
|
14
|
-
import { z } from "zod";
|
|
15
14
|
import { useAssistantApi } from "../context/react/AssistantApiContext";
|
|
16
15
|
import { useComposedRefs } from "@radix-ui/react-compose-refs";
|
|
17
16
|
import { tool } from "./tool";
|
|
18
17
|
|
|
19
|
-
// TODO replace zod with json-schema so we can drop the zod dep
|
|
20
|
-
|
|
21
18
|
const click = tool({
|
|
22
|
-
parameters:
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
parameters: {
|
|
20
|
+
type: "object",
|
|
21
|
+
properties: {
|
|
22
|
+
clickId: {
|
|
23
|
+
type: "string",
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
required: ["clickId"],
|
|
27
|
+
},
|
|
28
|
+
execute: async ({ clickId }: { clickId: string }) => {
|
|
26
29
|
const escapedClickId = CSS.escape(clickId);
|
|
27
30
|
const el = document.querySelector(`[data-click-id='${escapedClickId}']`);
|
|
28
31
|
if (el instanceof HTMLElement) {
|
|
@@ -38,11 +41,19 @@ const click = tool({
|
|
|
38
41
|
});
|
|
39
42
|
|
|
40
43
|
const edit = tool({
|
|
41
|
-
parameters:
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
parameters: {
|
|
45
|
+
type: "object",
|
|
46
|
+
properties: {
|
|
47
|
+
editId: {
|
|
48
|
+
type: "string",
|
|
49
|
+
},
|
|
50
|
+
value: {
|
|
51
|
+
type: "string",
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
required: ["editId", "value"],
|
|
55
|
+
},
|
|
56
|
+
execute: async ({ editId, value }: { editId: string; value: string }) => {
|
|
46
57
|
const escapedEditId = CSS.escape(editId);
|
|
47
58
|
const el = document.querySelector(`[data-edit-id='${escapedEditId}']`);
|
|
48
59
|
if (el instanceof HTMLInputElement || el instanceof HTMLTextAreaElement) {
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import type { ComponentType, ReactNode } from "react";
|
|
4
3
|
import type { Tool } from "assistant-stream";
|
|
5
4
|
import type { ToolCallMessagePartComponent } from "../types/MessagePartComponentTypes";
|
|
6
5
|
|
|
@@ -11,26 +10,7 @@ export type ToolDefinition<
|
|
|
11
10
|
render?: ToolCallMessagePartComponent<TArgs, TResult> | undefined;
|
|
12
11
|
};
|
|
13
12
|
|
|
14
|
-
export
|
|
15
|
-
export const LayoutSymbol = Symbol("Toolkit.Layout");
|
|
16
|
-
|
|
17
|
-
export type ToolkitFallback = {
|
|
18
|
-
render: ToolCallMessagePartComponent<unknown, unknown>;
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
export type ToolkitLayout = {
|
|
22
|
-
render: ComponentType<{ children: ReactNode }>;
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
export type Toolkit = Record<string, ToolDefinition<any, any>> & {
|
|
26
|
-
[FallbackSymbol]?: ToolkitFallback;
|
|
27
|
-
[LayoutSymbol]?: ToolkitLayout;
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
export const Toolkit = {
|
|
31
|
-
Fallback: FallbackSymbol,
|
|
32
|
-
Layout: LayoutSymbol,
|
|
33
|
-
} as const;
|
|
13
|
+
export type Toolkit = Record<string, ToolDefinition<any, any>>;
|
|
34
14
|
|
|
35
15
|
export type ToolsConfig = {
|
|
36
16
|
toolkit: Toolkit;
|
|
@@ -23,7 +23,7 @@ export const useAssistantTool = <
|
|
|
23
23
|
|
|
24
24
|
useEffect(() => {
|
|
25
25
|
if (!tool.render) return undefined;
|
|
26
|
-
return api.
|
|
26
|
+
return api.tools().setToolUI(tool.toolName, tool.render);
|
|
27
27
|
}, [api, tool.toolName, tool.render]);
|
|
28
28
|
|
|
29
29
|
useEffect(() => {
|
|
@@ -15,6 +15,6 @@ export const useAssistantToolUI = (
|
|
|
15
15
|
const api = useAssistantApi();
|
|
16
16
|
useEffect(() => {
|
|
17
17
|
if (!tool?.toolName || !tool?.render) return undefined;
|
|
18
|
-
return api.
|
|
18
|
+
return api.tools().setToolUI(tool.toolName, tool.render);
|
|
19
19
|
}, [api, tool?.toolName, tool?.render]);
|
|
20
20
|
};
|
package/src/primitives/index.ts
CHANGED
|
@@ -15,5 +15,6 @@ export { useMessagePartReasoning } from "./messagePart/useMessagePartReasoning";
|
|
|
15
15
|
export { useMessagePartSource } from "./messagePart/useMessagePartSource";
|
|
16
16
|
export { useMessagePartFile } from "./messagePart/useMessagePartFile";
|
|
17
17
|
export { useMessagePartImage } from "./messagePart/useMessagePartImage";
|
|
18
|
+
export { useMessagePartData } from "./messagePart/useMessagePartData";
|
|
18
19
|
export { useThreadViewportAutoScroll } from "./thread/useThreadViewportAutoScroll";
|
|
19
20
|
export { useScrollLock } from "./reasoning";
|
|
@@ -252,9 +252,8 @@ const ToolUIDisplay = ({
|
|
|
252
252
|
}: {
|
|
253
253
|
Fallback: ToolCallMessagePartComponent | undefined;
|
|
254
254
|
} & ToolCallMessagePartProps) => {
|
|
255
|
-
const Render = useAssistantState(({
|
|
256
|
-
const Render =
|
|
257
|
-
toolUIs.tools[props.toolName] ?? toolUIs.fallback ?? Fallback;
|
|
255
|
+
const Render = useAssistantState(({ tools }) => {
|
|
256
|
+
const Render = tools.tools[props.toolName] ?? Fallback;
|
|
258
257
|
if (Array.isArray(Render)) return Render[0] ?? Fallback;
|
|
259
258
|
return Render;
|
|
260
259
|
});
|
|
@@ -338,6 +337,9 @@ const MessagePartComponent: FC<MessagePartComponentProps> = ({
|
|
|
338
337
|
case "audio":
|
|
339
338
|
return <Audio {...part} />;
|
|
340
339
|
|
|
340
|
+
case "data":
|
|
341
|
+
return null;
|
|
342
|
+
|
|
341
343
|
default:
|
|
342
344
|
const unhandledType: never = type;
|
|
343
345
|
throw new Error(`Unknown message part type: ${unhandledType}`);
|
|
@@ -220,9 +220,8 @@ const ToolUIDisplay = ({
|
|
|
220
220
|
}: {
|
|
221
221
|
Fallback: ToolCallMessagePartComponent | undefined;
|
|
222
222
|
} & ToolCallMessagePartProps) => {
|
|
223
|
-
const Render = useAssistantState(({
|
|
224
|
-
const Render =
|
|
225
|
-
toolUIs.tools[props.toolName] ?? toolUIs.fallback ?? Fallback;
|
|
223
|
+
const Render = useAssistantState(({ tools }) => {
|
|
224
|
+
const Render = tools.tools[props.toolName] ?? Fallback;
|
|
226
225
|
if (Array.isArray(Render)) return Render[0] ?? Fallback;
|
|
227
226
|
return Render;
|
|
228
227
|
});
|
|
@@ -305,6 +304,9 @@ const MessagePartComponent: FC<MessagePartComponentProps> = ({
|
|
|
305
304
|
case "audio":
|
|
306
305
|
return <Audio {...part} />;
|
|
307
306
|
|
|
307
|
+
case "data":
|
|
308
|
+
return null;
|
|
309
|
+
|
|
308
310
|
default:
|
|
309
311
|
const unhandledType: never = type;
|
|
310
312
|
throw new Error(`Unknown message part type: ${unhandledType}`);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useAssistantState } from "../../context";
|
|
4
|
+
import { DataMessagePart } from "../../types";
|
|
5
|
+
|
|
6
|
+
export const useMessagePartData = <T = any,>(name?: string) => {
|
|
7
|
+
const part = useAssistantState(({ part }) => {
|
|
8
|
+
if (part.type !== "data") {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
return part as DataMessagePart<T>;
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
if (!part) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
if (name && part.name !== name) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return part;
|
|
23
|
+
};
|
|
@@ -6,6 +6,7 @@ import type {
|
|
|
6
6
|
SourceMessagePart,
|
|
7
7
|
ImageMessagePart,
|
|
8
8
|
FileMessagePart,
|
|
9
|
+
DataMessagePart,
|
|
9
10
|
Unstable_AudioMessagePart,
|
|
10
11
|
ToolCallMessagePart,
|
|
11
12
|
ThreadUserMessagePart,
|
|
@@ -19,6 +20,7 @@ export type {
|
|
|
19
20
|
SourceMessagePart,
|
|
20
21
|
ImageMessagePart,
|
|
21
22
|
FileMessagePart,
|
|
23
|
+
DataMessagePart,
|
|
22
24
|
Unstable_AudioMessagePart,
|
|
23
25
|
ToolCallMessagePart,
|
|
24
26
|
ThreadUserMessagePart,
|
|
@@ -43,6 +43,12 @@ export type Unstable_AudioMessagePart = {
|
|
|
43
43
|
};
|
|
44
44
|
};
|
|
45
45
|
|
|
46
|
+
export type DataMessagePart<T = any> = {
|
|
47
|
+
readonly type: "data";
|
|
48
|
+
readonly name: string;
|
|
49
|
+
readonly data: T;
|
|
50
|
+
};
|
|
51
|
+
|
|
46
52
|
export type ToolCallMessagePart<
|
|
47
53
|
TArgs = ReadonlyJSONObject,
|
|
48
54
|
TResult = unknown,
|
|
@@ -72,4 +78,5 @@ export type ThreadAssistantMessagePart =
|
|
|
72
78
|
| ToolCallMessagePart
|
|
73
79
|
| SourceMessagePart
|
|
74
80
|
| FileMessagePart
|
|
75
|
-
| ImageMessagePart
|
|
81
|
+
| ImageMessagePart
|
|
82
|
+
| DataMessagePart;
|
package/src/types/index.ts
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ToolUIClient.d.ts","sourceRoot":"","sources":["../../src/client/ToolUIClient.ts"],"names":[],"mappings":"AAEA,OAAO,EAAe,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAExD,eAAO,MAAM,YAAY;;;;aAuEvB,CAAC"}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
// src/client/ToolUIClient.ts
|
|
2
|
-
import { resource, tapState } from "@assistant-ui/tap";
|
|
3
|
-
import { tapApi } from "../utils/tap-store/index.js";
|
|
4
|
-
var ToolUIClient = resource(() => {
|
|
5
|
-
const [state, setState] = tapState(() => ({
|
|
6
|
-
tools: {},
|
|
7
|
-
fallback: [],
|
|
8
|
-
layout: []
|
|
9
|
-
}));
|
|
10
|
-
return tapApi({
|
|
11
|
-
getState: () => state,
|
|
12
|
-
setToolUI: (toolName, render) => {
|
|
13
|
-
setState((prev) => {
|
|
14
|
-
return {
|
|
15
|
-
...prev,
|
|
16
|
-
tools: {
|
|
17
|
-
...prev.tools,
|
|
18
|
-
[toolName]: [...prev.tools[toolName] ?? [], render]
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
});
|
|
22
|
-
return () => {
|
|
23
|
-
setState((prev) => {
|
|
24
|
-
return {
|
|
25
|
-
...prev,
|
|
26
|
-
tools: {
|
|
27
|
-
...prev.tools,
|
|
28
|
-
[toolName]: prev.tools[toolName]?.filter((r) => r !== render) ?? []
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
});
|
|
32
|
-
};
|
|
33
|
-
},
|
|
34
|
-
setFallbackToolUI: (render) => {
|
|
35
|
-
setState((prev) => {
|
|
36
|
-
return {
|
|
37
|
-
...prev,
|
|
38
|
-
fallback: [...prev.fallback, render]
|
|
39
|
-
};
|
|
40
|
-
});
|
|
41
|
-
return () => {
|
|
42
|
-
setState((prev) => {
|
|
43
|
-
return {
|
|
44
|
-
...prev,
|
|
45
|
-
fallback: prev.fallback.filter((r) => r !== render)
|
|
46
|
-
};
|
|
47
|
-
});
|
|
48
|
-
};
|
|
49
|
-
},
|
|
50
|
-
setToolUILayout: (render) => {
|
|
51
|
-
setState((prev) => {
|
|
52
|
-
return {
|
|
53
|
-
...prev,
|
|
54
|
-
layout: [...prev.layout, render]
|
|
55
|
-
};
|
|
56
|
-
});
|
|
57
|
-
return () => {
|
|
58
|
-
setState((prev) => {
|
|
59
|
-
return {
|
|
60
|
-
...prev,
|
|
61
|
-
layout: prev.layout.filter((r) => r !== render)
|
|
62
|
-
};
|
|
63
|
-
});
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
export {
|
|
69
|
-
ToolUIClient
|
|
70
|
-
};
|
|
71
|
-
//# sourceMappingURL=ToolUIClient.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/client/ToolUIClient.ts"],"sourcesContent":["import { resource, tapState } from \"@assistant-ui/tap\";\nimport { tapApi } from \"../utils/tap-store\";\nimport { ToolUIState, ToolUIApi } from \"./types/ToolUI\";\n\nexport const ToolUIClient = resource(() => {\n const [state, setState] = tapState<ToolUIState>(() => ({\n tools: {},\n fallback: [],\n layout: [],\n }));\n\n return tapApi<ToolUIApi>({\n getState: () => state,\n\n setToolUI: (toolName, render) => {\n setState((prev) => {\n return {\n ...prev,\n tools: {\n ...prev.tools,\n [toolName]: [...(prev.tools[toolName] ?? []), render],\n },\n };\n });\n\n return () => {\n setState((prev) => {\n return {\n ...prev,\n tools: {\n ...prev.tools,\n [toolName]:\n prev.tools[toolName]?.filter((r) => r !== render) ?? [],\n },\n };\n });\n };\n },\n\n setFallbackToolUI: (render) => {\n setState((prev) => {\n return {\n ...prev,\n fallback: [...prev.fallback, render],\n };\n });\n\n return () => {\n setState((prev) => {\n return {\n ...prev,\n fallback: prev.fallback.filter((r) => r !== render),\n };\n });\n };\n },\n\n setToolUILayout: (render) => {\n setState((prev) => {\n return {\n ...prev,\n layout: [...prev.layout, render],\n };\n });\n\n return () => {\n setState((prev) => {\n return {\n ...prev,\n layout: prev.layout.filter((r) => r !== render),\n };\n });\n };\n },\n });\n});\n"],"mappings":";AAAA,SAAS,UAAU,gBAAgB;AACnC,SAAS,cAAc;AAGhB,IAAM,eAAe,SAAS,MAAM;AACzC,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAsB,OAAO;AAAA,IACrD,OAAO,CAAC;AAAA,IACR,UAAU,CAAC;AAAA,IACX,QAAQ,CAAC;AAAA,EACX,EAAE;AAEF,SAAO,OAAkB;AAAA,IACvB,UAAU,MAAM;AAAA,IAEhB,WAAW,CAAC,UAAU,WAAW;AAC/B,eAAS,CAAC,SAAS;AACjB,eAAO;AAAA,UACL,GAAG;AAAA,UACH,OAAO;AAAA,YACL,GAAG,KAAK;AAAA,YACR,CAAC,QAAQ,GAAG,CAAC,GAAI,KAAK,MAAM,QAAQ,KAAK,CAAC,GAAI,MAAM;AAAA,UACtD;AAAA,QACF;AAAA,MACF,CAAC;AAED,aAAO,MAAM;AACX,iBAAS,CAAC,SAAS;AACjB,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,OAAO;AAAA,cACL,GAAG,KAAK;AAAA,cACR,CAAC,QAAQ,GACP,KAAK,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC;AAAA,YAC1D;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAEA,mBAAmB,CAAC,WAAW;AAC7B,eAAS,CAAC,SAAS;AACjB,eAAO;AAAA,UACL,GAAG;AAAA,UACH,UAAU,CAAC,GAAG,KAAK,UAAU,MAAM;AAAA,QACrC;AAAA,MACF,CAAC;AAED,aAAO,MAAM;AACX,iBAAS,CAAC,SAAS;AACjB,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,UAAU,KAAK,SAAS,OAAO,CAAC,MAAM,MAAM,MAAM;AAAA,UACpD;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAEA,iBAAiB,CAAC,WAAW;AAC3B,eAAS,CAAC,SAAS;AACjB,eAAO;AAAA,UACL,GAAG;AAAA,UACH,QAAQ,CAAC,GAAG,KAAK,QAAQ,MAAM;AAAA,QACjC;AAAA,MACF,CAAC;AAED,aAAO,MAAM;AACX,iBAAS,CAAC,SAAS;AACjB,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,QAAQ,KAAK,OAAO,OAAO,CAAC,MAAM,MAAM,MAAM;AAAA,UAChD;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,CAAC;AACH,CAAC;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ToolUIContext.d.ts","sourceRoot":"","sources":["../../src/client/ToolUIContext.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAIhD,eAAO,MAAM,kBAAkB,GAAI,OAAO,EACxC,SAAS,SAAS,EAClB,IAAI,MAAM,OAAO,YAGlB,CAAC;AAEF,eAAO,MAAM,SAAS,iBAKrB,CAAC"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
// src/client/ToolUIContext.ts
|
|
2
|
-
import {
|
|
3
|
-
createContext,
|
|
4
|
-
tapContext,
|
|
5
|
-
withContextProvider
|
|
6
|
-
} from "@assistant-ui/tap";
|
|
7
|
-
var ToolUIContext = createContext(null);
|
|
8
|
-
var withToolUIProvider = (toolUIs, fn) => {
|
|
9
|
-
return withContextProvider(ToolUIContext, toolUIs, fn);
|
|
10
|
-
};
|
|
11
|
-
var tapToolUI = () => {
|
|
12
|
-
const toolUIs = tapContext(ToolUIContext);
|
|
13
|
-
if (!toolUIs) throw new Error("ToolUI context is not available");
|
|
14
|
-
return toolUIs;
|
|
15
|
-
};
|
|
16
|
-
export {
|
|
17
|
-
tapToolUI,
|
|
18
|
-
withToolUIProvider
|
|
19
|
-
};
|
|
20
|
-
//# sourceMappingURL=ToolUIContext.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/client/ToolUIContext.ts"],"sourcesContent":["import {\n createContext,\n tapContext,\n withContextProvider,\n} from \"@assistant-ui/tap\";\nimport type { ToolUIApi } from \"./types/ToolUI\";\n\nconst ToolUIContext = createContext<ToolUIApi | null>(null);\n\nexport const withToolUIProvider = <TResult>(\n toolUIs: ToolUIApi,\n fn: () => TResult,\n) => {\n return withContextProvider(ToolUIContext, toolUIs, fn);\n};\n\nexport const tapToolUI = () => {\n const toolUIs = tapContext(ToolUIContext);\n if (!toolUIs) throw new Error(\"ToolUI context is not available\");\n\n return toolUIs;\n};\n"],"mappings":";AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,IAAM,gBAAgB,cAAgC,IAAI;AAEnD,IAAM,qBAAqB,CAChC,SACA,OACG;AACH,SAAO,oBAAoB,eAAe,SAAS,EAAE;AACvD;AAEO,IAAM,YAAY,MAAM;AAC7B,QAAM,UAAU,WAAW,aAAa;AACxC,MAAI,CAAC,QAAS,OAAM,IAAI,MAAM,iCAAiC;AAE/D,SAAO;AACT;","names":[]}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { Unsubscribe } from "@assistant-ui/tap";
|
|
2
|
-
import type { ComponentType, ReactNode } from "react";
|
|
3
|
-
import { ToolCallMessagePartComponent } from "../../types";
|
|
4
|
-
export type ToolUIState = {
|
|
5
|
-
tools: Record<string, ToolCallMessagePartComponent[]>;
|
|
6
|
-
fallback: ToolCallMessagePartComponent[];
|
|
7
|
-
layout: ComponentType<{
|
|
8
|
-
children: ReactNode;
|
|
9
|
-
}>[];
|
|
10
|
-
};
|
|
11
|
-
export type ToolUIApi = {
|
|
12
|
-
getState(): ToolUIState;
|
|
13
|
-
setToolUI(toolName: string, render: ToolCallMessagePartComponent): Unsubscribe;
|
|
14
|
-
setFallbackToolUI(render: ToolCallMessagePartComponent): Unsubscribe;
|
|
15
|
-
setToolUILayout(render: ComponentType<{
|
|
16
|
-
children: ReactNode;
|
|
17
|
-
}>): Unsubscribe;
|
|
18
|
-
};
|
|
19
|
-
export type ToolUIMeta = {
|
|
20
|
-
source: "root";
|
|
21
|
-
query: Record<string, never>;
|
|
22
|
-
};
|
|
23
|
-
//# sourceMappingURL=ToolUI.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ToolUI.d.ts","sourceRoot":"","sources":["../../../src/client/types/ToolUI.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAE3D,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,4BAA4B,EAAE,CAAC,CAAC;IACtD,QAAQ,EAAE,4BAA4B,EAAE,CAAC;IACzC,MAAM,EAAE,aAAa,CAAC;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,CAAC,EAAE,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,IAAI,WAAW,CAAC;IAExB,SAAS,CACP,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,4BAA4B,GACnC,WAAW,CAAC;IAEf,iBAAiB,CAAC,MAAM,EAAE,4BAA4B,GAAG,WAAW,CAAC;IAErE,eAAe,CAAC,MAAM,EAAE,aAAa,CAAC;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,CAAC,GAAG,WAAW,CAAC;CAC9E,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CAC9B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=ToolUI.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { resource, tapState } from "@assistant-ui/tap";
|
|
2
|
-
import { tapApi } from "../utils/tap-store";
|
|
3
|
-
import { ToolUIState, ToolUIApi } from "./types/ToolUI";
|
|
4
|
-
|
|
5
|
-
export const ToolUIClient = resource(() => {
|
|
6
|
-
const [state, setState] = tapState<ToolUIState>(() => ({
|
|
7
|
-
tools: {},
|
|
8
|
-
fallback: [],
|
|
9
|
-
layout: [],
|
|
10
|
-
}));
|
|
11
|
-
|
|
12
|
-
return tapApi<ToolUIApi>({
|
|
13
|
-
getState: () => state,
|
|
14
|
-
|
|
15
|
-
setToolUI: (toolName, render) => {
|
|
16
|
-
setState((prev) => {
|
|
17
|
-
return {
|
|
18
|
-
...prev,
|
|
19
|
-
tools: {
|
|
20
|
-
...prev.tools,
|
|
21
|
-
[toolName]: [...(prev.tools[toolName] ?? []), render],
|
|
22
|
-
},
|
|
23
|
-
};
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
return () => {
|
|
27
|
-
setState((prev) => {
|
|
28
|
-
return {
|
|
29
|
-
...prev,
|
|
30
|
-
tools: {
|
|
31
|
-
...prev.tools,
|
|
32
|
-
[toolName]:
|
|
33
|
-
prev.tools[toolName]?.filter((r) => r !== render) ?? [],
|
|
34
|
-
},
|
|
35
|
-
};
|
|
36
|
-
});
|
|
37
|
-
};
|
|
38
|
-
},
|
|
39
|
-
|
|
40
|
-
setFallbackToolUI: (render) => {
|
|
41
|
-
setState((prev) => {
|
|
42
|
-
return {
|
|
43
|
-
...prev,
|
|
44
|
-
fallback: [...prev.fallback, render],
|
|
45
|
-
};
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
return () => {
|
|
49
|
-
setState((prev) => {
|
|
50
|
-
return {
|
|
51
|
-
...prev,
|
|
52
|
-
fallback: prev.fallback.filter((r) => r !== render),
|
|
53
|
-
};
|
|
54
|
-
});
|
|
55
|
-
};
|
|
56
|
-
},
|
|
57
|
-
|
|
58
|
-
setToolUILayout: (render) => {
|
|
59
|
-
setState((prev) => {
|
|
60
|
-
return {
|
|
61
|
-
...prev,
|
|
62
|
-
layout: [...prev.layout, render],
|
|
63
|
-
};
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
return () => {
|
|
67
|
-
setState((prev) => {
|
|
68
|
-
return {
|
|
69
|
-
...prev,
|
|
70
|
-
layout: prev.layout.filter((r) => r !== render),
|
|
71
|
-
};
|
|
72
|
-
});
|
|
73
|
-
};
|
|
74
|
-
},
|
|
75
|
-
});
|
|
76
|
-
});
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
createContext,
|
|
3
|
-
tapContext,
|
|
4
|
-
withContextProvider,
|
|
5
|
-
} from "@assistant-ui/tap";
|
|
6
|
-
import type { ToolUIApi } from "./types/ToolUI";
|
|
7
|
-
|
|
8
|
-
const ToolUIContext = createContext<ToolUIApi | null>(null);
|
|
9
|
-
|
|
10
|
-
export const withToolUIProvider = <TResult>(
|
|
11
|
-
toolUIs: ToolUIApi,
|
|
12
|
-
fn: () => TResult,
|
|
13
|
-
) => {
|
|
14
|
-
return withContextProvider(ToolUIContext, toolUIs, fn);
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
export const tapToolUI = () => {
|
|
18
|
-
const toolUIs = tapContext(ToolUIContext);
|
|
19
|
-
if (!toolUIs) throw new Error("ToolUI context is not available");
|
|
20
|
-
|
|
21
|
-
return toolUIs;
|
|
22
|
-
};
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { Unsubscribe } from "@assistant-ui/tap";
|
|
2
|
-
import type { ComponentType, ReactNode } from "react";
|
|
3
|
-
import { ToolCallMessagePartComponent } from "../../types";
|
|
4
|
-
|
|
5
|
-
export type ToolUIState = {
|
|
6
|
-
tools: Record<string, ToolCallMessagePartComponent[]>;
|
|
7
|
-
fallback: ToolCallMessagePartComponent[];
|
|
8
|
-
layout: ComponentType<{ children: ReactNode }>[];
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
export type ToolUIApi = {
|
|
12
|
-
getState(): ToolUIState;
|
|
13
|
-
|
|
14
|
-
setToolUI(
|
|
15
|
-
toolName: string,
|
|
16
|
-
render: ToolCallMessagePartComponent,
|
|
17
|
-
): Unsubscribe;
|
|
18
|
-
|
|
19
|
-
setFallbackToolUI(render: ToolCallMessagePartComponent): Unsubscribe;
|
|
20
|
-
|
|
21
|
-
setToolUILayout(render: ComponentType<{ children: ReactNode }>): Unsubscribe;
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
export type ToolUIMeta = {
|
|
25
|
-
source: "root";
|
|
26
|
-
query: Record<string, never>;
|
|
27
|
-
};
|