@assistant-ui/react-ag-ui 0.0.12 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/runtime/types.d.ts +20 -1
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/useAgUiRuntime.d.ts.map +1 -1
- package/dist/useAgUiRuntime.js +38 -22
- package/dist/useAgUiRuntime.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +5 -1
- package/src/runtime/types.ts +22 -0
- package/src/useAgUiRuntime.ts +43 -20
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { useAgUiRuntime } from "./useAgUiRuntime.js";
|
|
2
|
-
export type { UseAgUiRuntimeOptions } from "./runtime/types.js";
|
|
2
|
+
export type { UseAgUiRuntimeOptions, UseAgUiRuntimeAdapters, UseAgUiThreadListAdapter, } from "./runtime/types.js";
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,4BAAyB;AAClD,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,4BAAyB;AAClD,YAAY,EACV,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,GACzB,2BAAwB"}
|
package/dist/runtime/types.d.ts
CHANGED
|
@@ -1,12 +1,31 @@
|
|
|
1
|
-
import type { AttachmentAdapter, DictationAdapter, FeedbackAdapter, SpeechSynthesisAdapter, ThreadHistoryAdapter } from "@assistant-ui/react";
|
|
1
|
+
import type { AttachmentAdapter, DictationAdapter, FeedbackAdapter, SpeechSynthesisAdapter, ThreadHistoryAdapter, ThreadMessage } from "@assistant-ui/react";
|
|
2
2
|
import type { HttpAgent } from "@ag-ui/client";
|
|
3
3
|
import type { Logger } from "./logger.js";
|
|
4
|
+
import type { ReadonlyJSONValue } from "assistant-stream/utils";
|
|
5
|
+
/**
|
|
6
|
+
* @experimental This API is still under active development and might change without notice.
|
|
7
|
+
*/
|
|
8
|
+
export type UseAgUiThreadListAdapter = {
|
|
9
|
+
threadId?: string | undefined;
|
|
10
|
+
onSwitchToNewThread?: (() => Promise<void> | void) | undefined;
|
|
11
|
+
onSwitchToThread?: ((threadId: string) => Promise<{
|
|
12
|
+
messages: readonly ThreadMessage[];
|
|
13
|
+
state?: ReadonlyJSONValue;
|
|
14
|
+
}> | {
|
|
15
|
+
messages: readonly ThreadMessage[];
|
|
16
|
+
state?: ReadonlyJSONValue;
|
|
17
|
+
}) | undefined;
|
|
18
|
+
};
|
|
4
19
|
export type UseAgUiRuntimeAdapters = {
|
|
5
20
|
attachments?: AttachmentAdapter;
|
|
6
21
|
speech?: SpeechSynthesisAdapter;
|
|
7
22
|
dictation?: DictationAdapter;
|
|
8
23
|
feedback?: FeedbackAdapter;
|
|
9
24
|
history?: ThreadHistoryAdapter;
|
|
25
|
+
/**
|
|
26
|
+
* @experimental This API is still under active development and might change without notice.
|
|
27
|
+
*/
|
|
28
|
+
threadList?: UseAgUiThreadListAdapter;
|
|
10
29
|
};
|
|
11
30
|
export type UseAgUiRuntimeOptions = {
|
|
12
31
|
agent: HttpAgent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAgUiRuntime.d.ts","sourceRoot":"","sources":["../src/useAgUiRuntime.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,gBAAgB,EAIjB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,2BAAwB;AAG7D,wBAAgB,cAAc,CAC5B,OAAO,EAAE,qBAAqB,GAC7B,gBAAgB,
|
|
1
|
+
{"version":3,"file":"useAgUiRuntime.d.ts","sourceRoot":"","sources":["../src/useAgUiRuntime.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,gBAAgB,EAIjB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,2BAAwB;AAG7D,wBAAgB,cAAc,CAC5B,OAAO,EAAE,qBAAqB,GAC7B,gBAAgB,CAgHlB"}
|
package/dist/useAgUiRuntime.js
CHANGED
|
@@ -9,19 +9,16 @@ export function useAgUiRuntime(options) {
|
|
|
9
9
|
const notifyUpdate = useCallback(() => setVersion((v) => v + 1), []);
|
|
10
10
|
const coreRef = useRef(null);
|
|
11
11
|
const runtimeAdapters = useRuntimeAdapters();
|
|
12
|
-
const attachmentsAdapter = options.adapters?.attachments ?? runtimeAdapters?.attachments;
|
|
13
12
|
const historyAdapter = options.adapters?.history ?? runtimeAdapters?.history;
|
|
14
|
-
const
|
|
15
|
-
const dictationAdapter = options.adapters?.dictation;
|
|
16
|
-
const feedbackAdapter = options.adapters?.feedback;
|
|
13
|
+
const threadListAdapter = options.adapters?.threadList;
|
|
17
14
|
if (!coreRef.current) {
|
|
18
15
|
coreRef.current = new AgUiThreadRuntimeCore({
|
|
19
16
|
agent: options.agent,
|
|
20
17
|
logger,
|
|
21
18
|
showThinking: options.showThinking ?? true,
|
|
22
|
-
...(options.onError
|
|
23
|
-
...(options.onCancel
|
|
24
|
-
...(historyAdapter
|
|
19
|
+
...(options.onError && { onError: options.onError }),
|
|
20
|
+
...(options.onCancel && { onCancel: options.onCancel }),
|
|
21
|
+
...(historyAdapter && { history: historyAdapter }),
|
|
25
22
|
notifyUpdate,
|
|
26
23
|
});
|
|
27
24
|
}
|
|
@@ -30,22 +27,41 @@ export function useAgUiRuntime(options) {
|
|
|
30
27
|
agent: options.agent,
|
|
31
28
|
logger,
|
|
32
29
|
showThinking: options.showThinking ?? true,
|
|
33
|
-
...(options.onError
|
|
34
|
-
...(options.onCancel
|
|
35
|
-
...(historyAdapter
|
|
30
|
+
...(options.onError && { onError: options.onError }),
|
|
31
|
+
...(options.onCancel && { onCancel: options.onCancel }),
|
|
32
|
+
...(historyAdapter && { history: historyAdapter }),
|
|
36
33
|
});
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
34
|
+
const threadList = useMemo(() => {
|
|
35
|
+
if (!threadListAdapter)
|
|
36
|
+
return undefined;
|
|
37
|
+
const { onSwitchToNewThread, onSwitchToThread } = threadListAdapter;
|
|
38
|
+
return {
|
|
39
|
+
threadId: threadListAdapter.threadId,
|
|
40
|
+
onSwitchToNewThread: onSwitchToNewThread
|
|
41
|
+
? async () => {
|
|
42
|
+
await onSwitchToNewThread();
|
|
43
|
+
core.applyExternalMessages([]);
|
|
44
|
+
}
|
|
45
|
+
: undefined,
|
|
46
|
+
onSwitchToThread: onSwitchToThread
|
|
47
|
+
? async (threadId) => {
|
|
48
|
+
const result = await onSwitchToThread(threadId);
|
|
49
|
+
core.applyExternalMessages(result.messages);
|
|
50
|
+
if (result.state) {
|
|
51
|
+
core.loadExternalState(result.state);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
: undefined,
|
|
55
|
+
};
|
|
56
|
+
}, [threadListAdapter, core]);
|
|
57
|
+
const adapters = options.adapters;
|
|
58
|
+
const adapterAdapters = useMemo(() => ({
|
|
59
|
+
attachments: adapters?.attachments ?? runtimeAdapters?.attachments,
|
|
60
|
+
speech: adapters?.speech,
|
|
61
|
+
dictation: adapters?.dictation,
|
|
62
|
+
feedback: adapters?.feedback,
|
|
63
|
+
threadList,
|
|
64
|
+
}), [adapters, runtimeAdapters, threadList]);
|
|
49
65
|
const store = useMemo(() => {
|
|
50
66
|
void _version; // rerender on version change
|
|
51
67
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAgUiRuntime.js","sourceRoot":"","sources":["../src/useAgUiRuntime.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC1E,OAAO,EACL,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAQ7B,OAAO,EAAE,UAAU,EAAE,4BAAyB;AAE9C,OAAO,EAAE,qBAAqB,EAAE,2CAAwC;AAExE,MAAM,UAAU,cAAc,CAC5B,OAA8B;IAE9B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3E,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrE,MAAM,OAAO,GAAG,MAAM,CAA+B,IAAI,CAAC,CAAC;IAC3D,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;IAE7C,MAAM,
|
|
1
|
+
{"version":3,"file":"useAgUiRuntime.js","sourceRoot":"","sources":["../src/useAgUiRuntime.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
package/src/runtime/types.ts
CHANGED
|
@@ -4,9 +4,27 @@ import type {
|
|
|
4
4
|
FeedbackAdapter,
|
|
5
5
|
SpeechSynthesisAdapter,
|
|
6
6
|
ThreadHistoryAdapter,
|
|
7
|
+
ThreadMessage,
|
|
7
8
|
} from "@assistant-ui/react";
|
|
8
9
|
import type { HttpAgent } from "@ag-ui/client";
|
|
9
10
|
import type { Logger } from "./logger";
|
|
11
|
+
import type { ReadonlyJSONValue } from "assistant-stream/utils";
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @experimental This API is still under active development and might change without notice.
|
|
15
|
+
*/
|
|
16
|
+
export type UseAgUiThreadListAdapter = {
|
|
17
|
+
threadId?: string | undefined;
|
|
18
|
+
onSwitchToNewThread?: (() => Promise<void> | void) | undefined;
|
|
19
|
+
onSwitchToThread?:
|
|
20
|
+
| ((threadId: string) =>
|
|
21
|
+
| Promise<{
|
|
22
|
+
messages: readonly ThreadMessage[];
|
|
23
|
+
state?: ReadonlyJSONValue;
|
|
24
|
+
}>
|
|
25
|
+
| { messages: readonly ThreadMessage[]; state?: ReadonlyJSONValue })
|
|
26
|
+
| undefined;
|
|
27
|
+
};
|
|
10
28
|
|
|
11
29
|
export type UseAgUiRuntimeAdapters = {
|
|
12
30
|
attachments?: AttachmentAdapter;
|
|
@@ -14,6 +32,10 @@ export type UseAgUiRuntimeAdapters = {
|
|
|
14
32
|
dictation?: DictationAdapter;
|
|
15
33
|
feedback?: FeedbackAdapter;
|
|
16
34
|
history?: ThreadHistoryAdapter;
|
|
35
|
+
/**
|
|
36
|
+
* @experimental This API is still under active development and might change without notice.
|
|
37
|
+
*/
|
|
38
|
+
threadList?: UseAgUiThreadListAdapter;
|
|
17
39
|
};
|
|
18
40
|
|
|
19
41
|
export type UseAgUiRuntimeOptions = {
|
package/src/useAgUiRuntime.ts
CHANGED
|
@@ -25,21 +25,17 @@ export function useAgUiRuntime(
|
|
|
25
25
|
const coreRef = useRef<AgUiThreadRuntimeCore | null>(null);
|
|
26
26
|
const runtimeAdapters = useRuntimeAdapters();
|
|
27
27
|
|
|
28
|
-
const attachmentsAdapter =
|
|
29
|
-
options.adapters?.attachments ?? runtimeAdapters?.attachments;
|
|
30
28
|
const historyAdapter = options.adapters?.history ?? runtimeAdapters?.history;
|
|
31
|
-
const
|
|
32
|
-
const dictationAdapter = options.adapters?.dictation;
|
|
33
|
-
const feedbackAdapter = options.adapters?.feedback;
|
|
29
|
+
const threadListAdapter = options.adapters?.threadList;
|
|
34
30
|
|
|
35
31
|
if (!coreRef.current) {
|
|
36
32
|
coreRef.current = new AgUiThreadRuntimeCore({
|
|
37
33
|
agent: options.agent,
|
|
38
34
|
logger,
|
|
39
35
|
showThinking: options.showThinking ?? true,
|
|
40
|
-
...(options.onError
|
|
41
|
-
...(options.onCancel
|
|
42
|
-
...(historyAdapter
|
|
36
|
+
...(options.onError && { onError: options.onError }),
|
|
37
|
+
...(options.onCancel && { onCancel: options.onCancel }),
|
|
38
|
+
...(historyAdapter && { history: historyAdapter }),
|
|
43
39
|
notifyUpdate,
|
|
44
40
|
});
|
|
45
41
|
}
|
|
@@ -49,20 +45,47 @@ export function useAgUiRuntime(
|
|
|
49
45
|
agent: options.agent,
|
|
50
46
|
logger,
|
|
51
47
|
showThinking: options.showThinking ?? true,
|
|
52
|
-
...(options.onError
|
|
53
|
-
...(options.onCancel
|
|
54
|
-
...(historyAdapter
|
|
48
|
+
...(options.onError && { onError: options.onError }),
|
|
49
|
+
...(options.onCancel && { onCancel: options.onCancel }),
|
|
50
|
+
...(historyAdapter && { history: historyAdapter }),
|
|
55
51
|
});
|
|
56
52
|
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
53
|
+
const threadList = useMemo(() => {
|
|
54
|
+
if (!threadListAdapter) return undefined;
|
|
55
|
+
|
|
56
|
+
const { onSwitchToNewThread, onSwitchToThread } = threadListAdapter;
|
|
57
|
+
|
|
58
|
+
return {
|
|
59
|
+
threadId: threadListAdapter.threadId,
|
|
60
|
+
onSwitchToNewThread: onSwitchToNewThread
|
|
61
|
+
? async () => {
|
|
62
|
+
await onSwitchToNewThread();
|
|
63
|
+
core.applyExternalMessages([]);
|
|
64
|
+
}
|
|
65
|
+
: undefined,
|
|
66
|
+
onSwitchToThread: onSwitchToThread
|
|
67
|
+
? async (threadId: string) => {
|
|
68
|
+
const result = await onSwitchToThread(threadId);
|
|
69
|
+
core.applyExternalMessages(result.messages);
|
|
70
|
+
if (result.state) {
|
|
71
|
+
core.loadExternalState(result.state);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
: undefined,
|
|
75
|
+
};
|
|
76
|
+
}, [threadListAdapter, core]);
|
|
77
|
+
|
|
78
|
+
const adapters = options.adapters;
|
|
79
|
+
const adapterAdapters = useMemo(
|
|
80
|
+
() => ({
|
|
81
|
+
attachments: adapters?.attachments ?? runtimeAdapters?.attachments,
|
|
82
|
+
speech: adapters?.speech,
|
|
83
|
+
dictation: adapters?.dictation,
|
|
84
|
+
feedback: adapters?.feedback,
|
|
85
|
+
threadList,
|
|
86
|
+
}),
|
|
87
|
+
[adapters, runtimeAdapters, threadList],
|
|
88
|
+
);
|
|
66
89
|
|
|
67
90
|
const store = useMemo(
|
|
68
91
|
() => {
|