@assistant-ui/react-ag-ui 0.0.12 → 0.0.14

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 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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,4BAAyB;AAClD,YAAY,EAAE,qBAAqB,EAAE,2BAAwB"}
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"}
@@ -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,EACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,oBAAiB;AAEvC,MAAM,MAAM,sBAAsB,GAAG;IACnC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAChC,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,sBAAsB,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACnE;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,6BAA6B,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,+BAA+B,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,2BAA2B,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IACE,IAAI,EAAE,iBAAiB,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GACD;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC7C;IACE,IAAI,EAAE,iBAAiB,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACD;IACE,IAAI,EAAE,kBAAkB,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GACD;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,GAAG,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,GAAG,EAAE,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,QAAQ,EAAE,GAAG,EAAE,CAAA;CAAE,CAAC"}
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,CAyFlB"}
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"}
@@ -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 speechAdapter = options.adapters?.speech;
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 ? { onError: options.onError } : {}),
23
- ...(options.onCancel ? { onCancel: options.onCancel } : {}),
24
- ...(historyAdapter ? { history: 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 ? { onError: options.onError } : {}),
34
- ...(options.onCancel ? { onCancel: options.onCancel } : {}),
35
- ...(historyAdapter ? { history: historyAdapter } : {}),
30
+ ...(options.onError && { onError: options.onError }),
31
+ ...(options.onCancel && { onCancel: options.onCancel }),
32
+ ...(historyAdapter && { history: historyAdapter }),
36
33
  });
37
- const adapterAdapters = useMemo(() => {
38
- const value = {};
39
- if (attachmentsAdapter)
40
- value.attachments = attachmentsAdapter;
41
- if (speechAdapter)
42
- value.speech = speechAdapter;
43
- if (dictationAdapter)
44
- value.dictation = dictationAdapter;
45
- if (feedbackAdapter)
46
- value.feedback = feedbackAdapter;
47
- return Object.keys(value).length ? value : undefined;
48
- }, [attachmentsAdapter, speechAdapter, dictationAdapter, feedbackAdapter]);
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":"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"}
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,cAAc,GAAG,OAAO,CAAC,QAAQ,EAAE,OAAO,IAAI,eAAe,EAAE,OAAO,CAAC;IAC7E,MAAM,iBAAiB,GAAG,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC;IAEvD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,CAAC,OAAO,GAAG,IAAI,qBAAqB,CAAC;YAC1C,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM;YACN,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,IAAI;YAC1C,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;YACpD,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;YACvD,GAAG,CAAC,cAAc,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;YAClD,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAC7B,IAAI,CAAC,aAAa,CAAC;QACjB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM;QACN,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,IAAI;QAC1C,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;QACpD,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;QACvD,GAAG,CAAC,cAAc,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;KACnD,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE;QAC9B,IAAI,CAAC,iBAAiB;YAAE,OAAO,SAAS,CAAC;QAEzC,MAAM,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,GAAG,iBAAiB,CAAC;QAEpE,OAAO;YACL,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;YACpC,mBAAmB,EAAE,mBAAmB;gBACtC,CAAC,CAAC,KAAK,IAAI,EAAE;oBACT,MAAM,mBAAmB,EAAE,CAAC;oBAC5B,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;gBACjC,CAAC;gBACH,CAAC,CAAC,SAAS;YACb,gBAAgB,EAAE,gBAAgB;gBAChC,CAAC,CAAC,KAAK,EAAE,QAAgB,EAAE,EAAE;oBACzB,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;oBAChD,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBAC5C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;wBACjB,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACvC,CAAC;gBACH,CAAC;gBACH,CAAC,CAAC,SAAS;SACd,CAAC;IACJ,CAAC,EAAE,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAC;IAE9B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,eAAe,GAAG,OAAO,CAC7B,GAAG,EAAE,CAAC,CAAC;QACL,WAAW,EAAE,QAAQ,EAAE,WAAW,IAAI,eAAe,EAAE,WAAW;QAClE,MAAM,EAAE,QAAQ,EAAE,MAAM;QACxB,SAAS,EAAE,QAAQ,EAAE,SAAS;QAC9B,QAAQ,EAAE,QAAQ,EAAE,QAAQ;QAC5B,UAAU;KACX,CAAC,EACF,CAAC,QAAQ,EAAE,eAAe,EAAE,UAAU,CAAC,CACxC,CAAC;IAEF,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE;QACH,KAAK,QAAQ,CAAC,CAAC,6BAA6B;QAE5C,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE;YAC5B,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;YACtB,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;YAC3B,KAAK,EAAE,CAAC,OAAsB,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACvD,MAAM,EAAE,CAAC,OAAsB,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACtD,QAAQ,EAAE,CAAC,QAAuB,EAAE,MAA2B,EAAE,EAAE,CACjE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;YAC/B,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE;YAC7B,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YACzD,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACzC,WAAW,EAAE,CAAC,QAAkC,EAAE,EAAE,CAClD,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC;YACtC,QAAQ,EAAE,CAAC,QAAkC,EAAE,EAAE,CAC/C,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC;YACtC,mBAAmB,EAAE,CAAC,KAAwB,EAAE,EAAE,CAChD,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;YAC/B,QAAQ,EAAE,eAAe;SACoB,CAAC;IAClD,CAAC;IACD,wGAAwG;IACxG,CAAC,eAAe,EAAE,IAAI,EAAE,QAAQ,CAAC,CAClC,CAAC;IAEF,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAE/C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAEpB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,OAAO,OAAO,CAAC;AACjB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@assistant-ui/react-ag-ui",
3
- "version": "0.0.12",
3
+ "version": "0.0.14",
4
4
  "description": "AG-UI protocol adapter for assistant-ui",
5
5
  "keywords": [
6
6
  "ag-ui",
@@ -30,12 +30,12 @@
30
30
  ],
31
31
  "sideEffects": false,
32
32
  "dependencies": {
33
- "@ag-ui/client": "^0.0.43",
34
- "assistant-stream": "^0.3.0",
33
+ "@ag-ui/client": "^0.0.44",
34
+ "assistant-stream": "^0.3.1",
35
35
  "zod": "^4.3.6"
36
36
  },
37
37
  "peerDependencies": {
38
- "@assistant-ui/react": "^0.12.3",
38
+ "@assistant-ui/react": "^0.12.5",
39
39
  "@types/react": "*",
40
40
  "react": "^18 || ^19"
41
41
  },
@@ -45,10 +45,10 @@
45
45
  }
46
46
  },
47
47
  "devDependencies": {
48
- "@types/react": "^19.2.9",
48
+ "@types/react": "^19.2.10",
49
49
  "react": "^19.2.4",
50
50
  "vitest": "^4.0.18",
51
- "@assistant-ui/react": "0.12.3",
51
+ "@assistant-ui/react": "0.12.5",
52
52
  "@assistant-ui/x-buildutils": "0.0.1"
53
53
  },
54
54
  "publishConfig": {
package/src/index.ts CHANGED
@@ -1,2 +1,6 @@
1
1
  export { useAgUiRuntime } from "./useAgUiRuntime";
2
- export type { UseAgUiRuntimeOptions } from "./runtime/types";
2
+ export type {
3
+ UseAgUiRuntimeOptions,
4
+ UseAgUiRuntimeAdapters,
5
+ UseAgUiThreadListAdapter,
6
+ } from "./runtime/types";
@@ -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 = {
@@ -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 speechAdapter = options.adapters?.speech;
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 ? { onError: options.onError } : {}),
41
- ...(options.onCancel ? { onCancel: options.onCancel } : {}),
42
- ...(historyAdapter ? { history: 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 ? { onError: options.onError } : {}),
53
- ...(options.onCancel ? { onCancel: options.onCancel } : {}),
54
- ...(historyAdapter ? { history: historyAdapter } : {}),
48
+ ...(options.onError && { onError: options.onError }),
49
+ ...(options.onCancel && { onCancel: options.onCancel }),
50
+ ...(historyAdapter && { history: historyAdapter }),
55
51
  });
56
52
 
57
- const adapterAdapters = useMemo(() => {
58
- const value: NonNullable<ExternalStoreAdapter<ThreadMessage>["adapters"]> =
59
- {};
60
- if (attachmentsAdapter) value.attachments = attachmentsAdapter;
61
- if (speechAdapter) value.speech = speechAdapter;
62
- if (dictationAdapter) value.dictation = dictationAdapter;
63
- if (feedbackAdapter) value.feedback = feedbackAdapter;
64
- return Object.keys(value).length ? value : undefined;
65
- }, [attachmentsAdapter, speechAdapter, dictationAdapter, feedbackAdapter]);
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
  () => {