@assistant-ui/react 0.7.65 → 0.7.66

Sign up to get free protection for your applications and to get access to all the features.
Files changed (117) hide show
  1. package/dist/api/ThreadListItemRuntime.d.ts +2 -0
  2. package/dist/api/ThreadListItemRuntime.d.ts.map +1 -1
  3. package/dist/api/ThreadListItemRuntime.js +5 -0
  4. package/dist/api/ThreadListItemRuntime.js.map +1 -1
  5. package/dist/api/ThreadListItemRuntime.mjs +5 -0
  6. package/dist/api/ThreadListItemRuntime.mjs.map +1 -1
  7. package/dist/cloud/AssistantCloudThreads.d.ts +1 -1
  8. package/dist/cloud/AssistantCloudThreads.d.ts.map +1 -1
  9. package/dist/cloud/AssistantCloudThreads.js.map +1 -1
  10. package/dist/cloud/AssistantCloudThreads.mjs.map +1 -1
  11. package/dist/cloud/useCloudThreadListRuntime.d.ts +1 -1
  12. package/dist/cloud/useCloudThreadListRuntime.d.ts.map +1 -1
  13. package/dist/cloud/useCloudThreadListRuntime.js +8 -83
  14. package/dist/cloud/useCloudThreadListRuntime.js.map +1 -1
  15. package/dist/cloud/useCloudThreadListRuntime.mjs +8 -89
  16. package/dist/cloud/useCloudThreadListRuntime.mjs.map +1 -1
  17. package/dist/runtimes/core/ThreadListRuntimeCore.d.ts +1 -0
  18. package/dist/runtimes/core/ThreadListRuntimeCore.d.ts.map +1 -1
  19. package/dist/runtimes/core/ThreadListRuntimeCore.js.map +1 -1
  20. package/dist/runtimes/dangerous-in-browser/useDangerousInBrowserRuntime.d.ts +1 -1
  21. package/dist/runtimes/dangerous-in-browser/useDangerousInBrowserRuntime.d.ts.map +1 -1
  22. package/dist/runtimes/edge/EdgeChatAdapter.d.ts +22 -3
  23. package/dist/runtimes/edge/EdgeChatAdapter.d.ts.map +1 -1
  24. package/dist/runtimes/edge/EdgeChatAdapter.js +44 -13
  25. package/dist/runtimes/edge/EdgeChatAdapter.js.map +1 -1
  26. package/dist/runtimes/edge/EdgeChatAdapter.mjs +34 -13
  27. package/dist/runtimes/edge/EdgeChatAdapter.mjs.map +1 -1
  28. package/dist/runtimes/edge/useEdgeRuntime.d.ts +1 -1
  29. package/dist/runtimes/edge/useEdgeRuntime.d.ts.map +1 -1
  30. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.d.ts +1 -0
  31. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.d.ts.map +1 -1
  32. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.js +3 -0
  33. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.js.map +1 -1
  34. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.mjs +3 -0
  35. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.mjs.map +1 -1
  36. package/dist/runtimes/local/ChatModelAdapter.d.ts +1 -0
  37. package/dist/runtimes/local/ChatModelAdapter.d.ts.map +1 -1
  38. package/dist/runtimes/local/ChatModelAdapter.js.map +1 -1
  39. package/dist/runtimes/local/LocalRuntimeOptions.d.ts +4 -1
  40. package/dist/runtimes/local/LocalRuntimeOptions.d.ts.map +1 -1
  41. package/dist/runtimes/local/LocalRuntimeOptions.js +2 -0
  42. package/dist/runtimes/local/LocalRuntimeOptions.js.map +1 -1
  43. package/dist/runtimes/local/LocalRuntimeOptions.mjs +2 -0
  44. package/dist/runtimes/local/LocalRuntimeOptions.mjs.map +1 -1
  45. package/dist/runtimes/local/LocalThreadListRuntimeCore.d.ts +21 -31
  46. package/dist/runtimes/local/LocalThreadListRuntimeCore.d.ts.map +1 -1
  47. package/dist/runtimes/local/LocalThreadListRuntimeCore.js +43 -147
  48. package/dist/runtimes/local/LocalThreadListRuntimeCore.js.map +1 -1
  49. package/dist/runtimes/local/LocalThreadListRuntimeCore.mjs +43 -147
  50. package/dist/runtimes/local/LocalThreadListRuntimeCore.mjs.map +1 -1
  51. package/dist/runtimes/local/LocalThreadRuntimeCore.d.ts.map +1 -1
  52. package/dist/runtimes/local/LocalThreadRuntimeCore.js +4 -1
  53. package/dist/runtimes/local/LocalThreadRuntimeCore.js.map +1 -1
  54. package/dist/runtimes/local/LocalThreadRuntimeCore.mjs +4 -1
  55. package/dist/runtimes/local/LocalThreadRuntimeCore.mjs.map +1 -1
  56. package/dist/runtimes/local/useLocalRuntime.d.ts +1 -1
  57. package/dist/runtimes/local/useLocalRuntime.d.ts.map +1 -1
  58. package/dist/runtimes/local/useLocalRuntime.js +10 -1
  59. package/dist/runtimes/local/useLocalRuntime.js.map +1 -1
  60. package/dist/runtimes/local/useLocalRuntime.mjs +10 -1
  61. package/dist/runtimes/local/useLocalRuntime.mjs.map +1 -1
  62. package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
  63. package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.js +4 -0
  64. package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.js.map +1 -1
  65. package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.mjs +4 -0
  66. package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.mjs.map +1 -1
  67. package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.d.ts +6 -6
  68. package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
  69. package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.js +25 -23
  70. package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
  71. package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.mjs +25 -23
  72. package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.mjs.map +1 -1
  73. package/dist/runtimes/remote-thread-list/adapter/cloud.d.ts +13 -0
  74. package/dist/runtimes/remote-thread-list/adapter/cloud.d.ts.map +1 -0
  75. package/dist/runtimes/remote-thread-list/adapter/cloud.js +96 -0
  76. package/dist/runtimes/remote-thread-list/adapter/cloud.js.map +1 -0
  77. package/dist/runtimes/remote-thread-list/adapter/cloud.mjs +76 -0
  78. package/dist/runtimes/remote-thread-list/adapter/cloud.mjs.map +1 -0
  79. package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts +12 -0
  80. package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts.map +1 -0
  81. package/dist/runtimes/remote-thread-list/adapter/in-memory.js +58 -0
  82. package/dist/runtimes/remote-thread-list/adapter/in-memory.js.map +1 -0
  83. package/dist/runtimes/remote-thread-list/adapter/in-memory.mjs +35 -0
  84. package/dist/runtimes/remote-thread-list/adapter/in-memory.mjs.map +1 -0
  85. package/dist/runtimes/remote-thread-list/index.d.ts +2 -1
  86. package/dist/runtimes/remote-thread-list/index.d.ts.map +1 -1
  87. package/dist/runtimes/remote-thread-list/index.js +3 -0
  88. package/dist/runtimes/remote-thread-list/index.js.map +1 -1
  89. package/dist/runtimes/remote-thread-list/index.mjs +2 -0
  90. package/dist/runtimes/remote-thread-list/index.mjs.map +1 -1
  91. package/dist/runtimes/remote-thread-list/types.d.ts +6 -6
  92. package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -1
  93. package/dist/runtimes/remote-thread-list/types.js.map +1 -1
  94. package/dist/runtimes/remote-thread-list/useRemoteThreadListRuntime.d.ts +2 -2
  95. package/dist/runtimes/remote-thread-list/useRemoteThreadListRuntime.js +7 -7
  96. package/dist/runtimes/remote-thread-list/useRemoteThreadListRuntime.js.map +1 -1
  97. package/dist/runtimes/remote-thread-list/useRemoteThreadListRuntime.mjs +7 -7
  98. package/dist/runtimes/remote-thread-list/useRemoteThreadListRuntime.mjs.map +1 -1
  99. package/package.json +1 -1
  100. package/src/api/ThreadListItemRuntime.ts +8 -0
  101. package/src/cloud/AssistantCloudThreads.tsx +1 -1
  102. package/src/cloud/useCloudThreadListRuntime.tsx +8 -110
  103. package/src/runtimes/core/ThreadListRuntimeCore.tsx +1 -0
  104. package/src/runtimes/edge/EdgeChatAdapter.ts +90 -19
  105. package/src/runtimes/external-store/ExternalStoreThreadListRuntimeCore.tsx +4 -0
  106. package/src/runtimes/local/ChatModelAdapter.tsx +1 -0
  107. package/src/runtimes/local/LocalRuntimeOptions.tsx +4 -0
  108. package/src/runtimes/local/LocalThreadListRuntimeCore.tsx +47 -190
  109. package/src/runtimes/local/LocalThreadRuntimeCore.tsx +3 -0
  110. package/src/runtimes/local/useLocalRuntime.tsx +15 -2
  111. package/src/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.tsx +7 -0
  112. package/src/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.tsx +27 -28
  113. package/src/runtimes/remote-thread-list/adapter/cloud.tsx +99 -0
  114. package/src/runtimes/remote-thread-list/adapter/in-memory.tsx +43 -0
  115. package/src/runtimes/remote-thread-list/index.ts +3 -4
  116. package/src/runtimes/remote-thread-list/types.tsx +10 -12
  117. package/src/runtimes/remote-thread-list/useRemoteThreadListRuntime.tsx +8 -8
@@ -4,7 +4,7 @@ import { ThreadListRuntimeCore } from "../core/ThreadListRuntimeCore";
4
4
  import { generateId } from "../../internal";
5
5
  import {
6
6
  RemoteThreadInitializeResponse,
7
- RemoteThreadListAdapter,
7
+ RemoteThreadListOptions,
8
8
  } from "./types";
9
9
  import { RemoteThreadListHookInstanceManager } from "./RemoteThreadListHookInstanceManager";
10
10
  import { BaseSubscribable } from "./BaseSubscribable";
@@ -12,7 +12,7 @@ import { EMPTY_THREAD_CORE } from "./EMPTY_THREAD_CORE";
12
12
  import { OptimisticState } from "./OptimisticState";
13
13
  import { FC, Fragment, useEffect, useId } from "react";
14
14
  import { create } from "zustand";
15
- import { AssistantStream, AssistantMessageStream } from "assistant-stream";
15
+ import { AssistantMessageStream } from "assistant-stream";
16
16
  import { ModelContextProvider } from "../../model-context";
17
17
  import { RuntimeAdapterProvider } from "../adapters/RuntimeAdapterProvider";
18
18
 
@@ -141,7 +141,7 @@ export class RemoteThreadListThreadListRuntimeCore
141
141
  extends BaseSubscribable
142
142
  implements ThreadListRuntimeCore
143
143
  {
144
- private _adapter!: RemoteThreadListAdapter;
144
+ private _options!: RemoteThreadListOptions;
145
145
  private readonly _hookManager: RemoteThreadListHookInstanceManager;
146
146
 
147
147
  private _loadThreadsPromise: Promise<void> | undefined;
@@ -161,7 +161,7 @@ export class RemoteThreadListThreadListRuntimeCore
161
161
  if (!this._loadThreadsPromise) {
162
162
  this._loadThreadsPromise = this._state
163
163
  .optimisticUpdate({
164
- execute: () => this._adapter.list(),
164
+ execute: () => this._options.adapter.list(),
165
165
  loading: (state) => {
166
166
  return {
167
167
  ...state,
@@ -228,43 +228,40 @@ export class RemoteThreadListThreadListRuntimeCore
228
228
  }
229
229
 
230
230
  constructor(
231
- adapter: RemoteThreadListAdapter,
231
+ options: RemoteThreadListOptions,
232
232
  private readonly contextProvider: ModelContextProvider,
233
233
  ) {
234
234
  super();
235
235
 
236
236
  this._state.subscribe(() => this._notifySubscribers());
237
237
  this._hookManager = new RemoteThreadListHookInstanceManager(
238
- adapter.runtimeHook,
238
+ options.runtimeHook,
239
239
  );
240
240
  this.useProvider = create(() => ({
241
- Provider: adapter.unstable_Provider ?? Fragment,
241
+ Provider: options.adapter.unstable_Provider ?? Fragment,
242
242
  }));
243
- this.__internal_setAdapter(adapter);
243
+ this.__internal_setOptions(options);
244
244
 
245
245
  this.switchToNewThread();
246
246
  }
247
247
 
248
248
  private useProvider;
249
249
 
250
- public __internal_setAdapter(adapter: RemoteThreadListAdapter) {
251
- if (this._adapter === adapter) return;
250
+ public __internal_setOptions(options: RemoteThreadListOptions) {
251
+ if (this._options === options) return;
252
252
 
253
- this._adapter = adapter;
253
+ this._options = options;
254
254
 
255
- const Provider = adapter.unstable_Provider ?? Fragment;
255
+ const Provider = options.adapter.unstable_Provider ?? Fragment;
256
256
  if (Provider !== this.useProvider.getState().Provider) {
257
257
  this.useProvider.setState({ Provider }, true);
258
258
  }
259
259
 
260
- this._hookManager.setRuntimeHook(adapter.runtimeHook);
260
+ this._hookManager.setRuntimeHook(options.runtimeHook);
261
261
  }
262
262
 
263
- public __internal_bindAdapter() {
263
+ public __internal_load() {
264
264
  this.getLoadThreadsPromise(); // begin loading on initial bind
265
- return this._adapter.subscribe?.({
266
- onGenerateTitle: this._onGenerateTitle,
267
- });
268
265
  }
269
266
 
270
267
  public get threadIds() {
@@ -368,7 +365,7 @@ export class RemoteThreadListThreadListRuntimeCore
368
365
 
369
366
  return this._state.optimisticUpdate({
370
367
  execute: () => {
371
- return this._adapter.initialize(threadId);
368
+ return this._options.adapter.initialize(threadId);
372
369
  },
373
370
  optimistic: (state) => {
374
371
  return updateStatusReducer(state, threadId, "regular");
@@ -411,15 +408,17 @@ export class RemoteThreadListThreadListRuntimeCore
411
408
  });
412
409
  };
413
410
 
414
- private _onGenerateTitle = async (
415
- remoteId: string,
416
- begin: () => Promise<AssistantStream>,
417
- ) => {
418
- const data = this.getItemById(remoteId);
411
+ public generateTitle = async (threadId: string) => {
412
+ const data = this.getItemById(threadId);
419
413
  if (!data) throw new Error("Thread not found");
420
414
  if (data.status === "new") throw new Error("Thread is not yet initialized");
421
415
 
422
- const stream = await begin();
416
+ const { remoteId } = await data.initializeTask;
417
+ const messages = this.getThreadRuntimeCore(threadId).messages;
418
+ const stream = await this._options.adapter.generateTitle(
419
+ remoteId,
420
+ messages,
421
+ );
423
422
  const messageStream = AssistantMessageStream.fromAssistantStream(stream);
424
423
  for await (const result of messageStream) {
425
424
  const newTitle =
@@ -447,7 +446,7 @@ export class RemoteThreadListThreadListRuntimeCore
447
446
  return this._state.optimisticUpdate({
448
447
  execute: async () => {
449
448
  const { remoteId } = await data.initializeTask;
450
- return this._adapter.rename(remoteId, newTitle);
449
+ return this._options.adapter.rename(remoteId, newTitle);
451
450
  },
452
451
  optimistic: (state) => {
453
452
  const data = getThreadData(state, threadIdOrRemoteId);
@@ -484,7 +483,7 @@ export class RemoteThreadListThreadListRuntimeCore
484
483
  execute: async () => {
485
484
  await this._ensureThreadIsNotMain(data.threadId);
486
485
  const { remoteId } = await data.initializeTask;
487
- return this._adapter.archive(remoteId);
486
+ return this._options.adapter.archive(remoteId);
488
487
  },
489
488
  optimistic: (state) => {
490
489
  return updateStatusReducer(state, data.threadId, "archived");
@@ -501,7 +500,7 @@ export class RemoteThreadListThreadListRuntimeCore
501
500
  execute: async () => {
502
501
  try {
503
502
  const { remoteId } = await data.initializeTask;
504
- return await this._adapter.unarchive(remoteId);
503
+ return await this._options.adapter.unarchive(remoteId);
505
504
  } catch (error) {
506
505
  await this._ensureThreadIsNotMain(data.threadId);
507
506
  throw error;
@@ -523,7 +522,7 @@ export class RemoteThreadListThreadListRuntimeCore
523
522
  execute: async () => {
524
523
  await this._ensureThreadIsNotMain(data.threadId);
525
524
  const { remoteId } = await data.initializeTask;
526
- return await this._adapter.delete(remoteId);
525
+ return await this._options.adapter.delete(remoteId);
527
526
  },
528
527
  optimistic: (state) => {
529
528
  return updateStatusReducer(state, data.threadId, "deleted");
@@ -0,0 +1,99 @@
1
+ import {
2
+ FC,
3
+ PropsWithChildren,
4
+ useCallback,
5
+ useEffect,
6
+ useMemo,
7
+ useRef,
8
+ } from "react";
9
+ import { AssistantCloud } from "../../../cloud";
10
+ import { RemoteThreadListAdapter } from "../types";
11
+ import { useAssistantCloudThreadHistoryAdapter } from "../../../cloud/AssistantCloudThreadHistoryAdapter";
12
+ import { RuntimeAdapterProvider } from "../../adapters/RuntimeAdapterProvider";
13
+ import { toCoreMessages } from "../../edge";
14
+ import { InMemoryThreadListAdapter } from "./in-memory";
15
+
16
+ type ThreadData = {
17
+ externalId: string;
18
+ };
19
+ type CloudThreadListAdapterOptions = {
20
+ cloud?: AssistantCloud | undefined;
21
+
22
+ create?(): Promise<ThreadData>;
23
+ delete?(threadId: string): Promise<void>;
24
+ };
25
+
26
+ export const useCloudThreadListAdapter = (
27
+ adapter: CloudThreadListAdapterOptions,
28
+ ): RemoteThreadListAdapter => {
29
+ const adapterRef = useRef(adapter);
30
+ useEffect(() => {
31
+ adapterRef.current = adapter;
32
+ }, [adapter]);
33
+
34
+ const cloud = adapter.cloud;
35
+ if (!cloud) return new InMemoryThreadListAdapter();
36
+
37
+ return {
38
+ list: async () => {
39
+ const { threads } = await cloud.threads.list();
40
+ return {
41
+ threads: threads.map((t) => ({
42
+ status: t.is_archived ? "archived" : "regular",
43
+ remoteId: t.id,
44
+ title: t.title,
45
+ externalId: t.external_id ?? undefined,
46
+ })),
47
+ };
48
+ },
49
+
50
+ initialize: async () => {
51
+ const createTask = adapter.create?.() ?? Promise.resolve();
52
+ const t = await createTask;
53
+ const external_id = t ? t.externalId : undefined;
54
+ const { thread_id: remoteId } = await cloud.threads.create({
55
+ last_message_at: new Date(),
56
+ external_id,
57
+ });
58
+
59
+ return { externalId: external_id, remoteId: remoteId };
60
+ },
61
+
62
+ rename: async (threadId, newTitle) => {
63
+ return cloud.threads.update(threadId, { title: newTitle });
64
+ },
65
+ archive: async (threadId) => {
66
+ return cloud.threads.update(threadId, { is_archived: true });
67
+ },
68
+ unarchive: async (threadId) => {
69
+ return cloud.threads.update(threadId, { is_archived: false });
70
+ },
71
+ delete: async (threadId) => {
72
+ await adapter.delete?.(threadId);
73
+ return cloud.threads.delete(threadId);
74
+ },
75
+
76
+ generateTitle: async (threadId, messages) => {
77
+ return cloud.runs.stream({
78
+ thread_id: threadId,
79
+ assistant_id: "system/thread_title",
80
+ messages: toCoreMessages(messages),
81
+ });
82
+ },
83
+
84
+ unstable_Provider: useCallback<FC<PropsWithChildren>>(({ children }) => {
85
+ const history = useAssistantCloudThreadHistoryAdapter({
86
+ get current() {
87
+ return adapterRef.current.cloud!;
88
+ },
89
+ });
90
+ const adapters = useMemo(() => ({ history }), [history]);
91
+
92
+ return (
93
+ <RuntimeAdapterProvider adapters={adapters}>
94
+ {children}
95
+ </RuntimeAdapterProvider>
96
+ );
97
+ }, []),
98
+ };
99
+ };
@@ -0,0 +1,43 @@
1
+ import {
2
+ AssistantStream,
3
+ AssistantStreamChunk,
4
+ } from "@assistant-ui/assistant-stream";
5
+ import {
6
+ RemoteThreadInitializeResponse,
7
+ RemoteThreadListAdapter,
8
+ RemoteThreadListResponse,
9
+ } from "../types";
10
+
11
+ export class InMemoryThreadListAdapter implements RemoteThreadListAdapter {
12
+ list(): Promise<RemoteThreadListResponse> {
13
+ return Promise.resolve({
14
+ threads: [],
15
+ });
16
+ }
17
+
18
+ rename(): Promise<void> {
19
+ return Promise.resolve();
20
+ }
21
+
22
+ archive(): Promise<void> {
23
+ return Promise.resolve();
24
+ }
25
+
26
+ unarchive(): Promise<void> {
27
+ return Promise.resolve();
28
+ }
29
+
30
+ delete(): Promise<void> {
31
+ return Promise.resolve();
32
+ }
33
+
34
+ initialize(threadId: string): Promise<RemoteThreadInitializeResponse> {
35
+ return Promise.resolve({ remoteId: threadId, externalId: undefined });
36
+ }
37
+
38
+ generateTitle(): Promise<AssistantStream> {
39
+ return Promise.resolve(
40
+ new AssistantStream(new ReadableStream<AssistantStreamChunk>()),
41
+ );
42
+ }
43
+ }
@@ -1,5 +1,4 @@
1
1
  export { useRemoteThreadListRuntime as unstable_useRemoteThreadListRuntime } from "./useRemoteThreadListRuntime";
2
- export type {
3
- RemoteThreadListAdapter as unstable_RemoteThreadListAdapter,
4
- RemoteThreadListSubscriber as unstable_RemoteThreadListSubscriber,
5
- } from "./types";
2
+ export type { RemoteThreadListAdapter as unstable_RemoteThreadListAdapter } from "./types";
3
+
4
+ export { InMemoryThreadListAdapter as unstable_InMemoryThreadListAdapter } from "./adapter/in-memory";
@@ -1,7 +1,7 @@
1
1
  import { ComponentType, PropsWithChildren } from "react";
2
2
  import { AssistantRuntime } from "../../api";
3
- import { Unsubscribe } from "../../types";
4
3
  import { AssistantStream } from "assistant-stream";
4
+ import { ThreadMessage } from "../../types";
5
5
 
6
6
  export type RemoteThreadInitializeResponse = {
7
7
  remoteId: string;
@@ -19,16 +19,7 @@ export type RemoteThreadListResponse = {
19
19
  threads: RemoteThreadMetadata[];
20
20
  };
21
21
 
22
- export type RemoteThreadListSubscriber = {
23
- onGenerateTitle: (
24
- threadId: string,
25
- begin: () => Promise<AssistantStream>,
26
- ) => void;
27
- };
28
-
29
22
  export type RemoteThreadListAdapter = {
30
- runtimeHook: () => AssistantRuntime;
31
-
32
23
  list(): Promise<RemoteThreadListResponse>;
33
24
 
34
25
  rename(remoteId: string, newTitle: string): Promise<void>;
@@ -36,8 +27,15 @@ export type RemoteThreadListAdapter = {
36
27
  unarchive(remoteId: string): Promise<void>;
37
28
  delete(remoteId: string): Promise<void>;
38
29
  initialize(threadId: string): Promise<RemoteThreadInitializeResponse>;
39
-
40
- subscribe?(subscriber: RemoteThreadListSubscriber): Unsubscribe;
30
+ generateTitle(
31
+ remoteId: string,
32
+ unstable_messages: readonly ThreadMessage[],
33
+ ): Promise<AssistantStream>;
41
34
 
42
35
  unstable_Provider?: ComponentType<PropsWithChildren>;
43
36
  };
37
+
38
+ export type RemoteThreadListOptions = {
39
+ runtimeHook: () => AssistantRuntime;
40
+ adapter: RemoteThreadListAdapter;
41
+ };
@@ -3,7 +3,7 @@
3
3
  import { useState, useEffect, useMemo } from "react";
4
4
  import { BaseAssistantRuntimeCore } from "../core/BaseAssistantRuntimeCore";
5
5
  import { RemoteThreadListThreadListRuntimeCore } from "./RemoteThreadListThreadListRuntimeCore";
6
- import { RemoteThreadListAdapter } from "./types";
6
+ import { RemoteThreadListOptions } from "./types";
7
7
  import { AssistantRuntimeImpl } from "../../internal";
8
8
  import { AssistantRuntimeCore } from "../core/AssistantRuntimeCore";
9
9
 
@@ -13,10 +13,10 @@ class RemoteThreadListRuntimeCore
13
13
  {
14
14
  public readonly threads;
15
15
 
16
- constructor(adapter: RemoteThreadListAdapter) {
16
+ constructor(options: RemoteThreadListOptions) {
17
17
  super();
18
18
  this.threads = new RemoteThreadListThreadListRuntimeCore(
19
- adapter,
19
+ options,
20
20
  this._contextProvider,
21
21
  );
22
22
  }
@@ -27,12 +27,12 @@ class RemoteThreadListRuntimeCore
27
27
  }
28
28
 
29
29
  export const useRemoteThreadListRuntime = (
30
- adapter: RemoteThreadListAdapter,
30
+ options: RemoteThreadListOptions,
31
31
  ) => {
32
- const [runtime] = useState(() => new RemoteThreadListRuntimeCore(adapter));
32
+ const [runtime] = useState(() => new RemoteThreadListRuntimeCore(options));
33
33
  useEffect(() => {
34
- runtime.threads.__internal_setAdapter(adapter);
35
- return runtime.threads.__internal_bindAdapter();
36
- }, [runtime, adapter]);
34
+ runtime.threads.__internal_setOptions(options);
35
+ runtime.threads.__internal_load();
36
+ }, [runtime, options]);
37
37
  return useMemo(() => AssistantRuntimeImpl.create(runtime), [runtime]);
38
38
  };