@assistant-ui/react 0.10.43 → 0.10.45

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.
Files changed (65) hide show
  1. package/dist/model-context/frame/AssistantFrameHost.d.ts +37 -0
  2. package/dist/model-context/frame/AssistantFrameHost.d.ts.map +1 -0
  3. package/dist/model-context/frame/AssistantFrameHost.js +151 -0
  4. package/dist/model-context/frame/AssistantFrameHost.js.map +1 -0
  5. package/dist/model-context/frame/AssistantFrameProvider.d.ts +41 -0
  6. package/dist/model-context/frame/AssistantFrameProvider.d.ts.map +1 -0
  7. package/dist/model-context/frame/AssistantFrameProvider.js +142 -0
  8. package/dist/model-context/frame/AssistantFrameProvider.js.map +1 -0
  9. package/dist/model-context/frame/AssistantFrameTypes.d.ts +29 -0
  10. package/dist/model-context/frame/AssistantFrameTypes.d.ts.map +1 -0
  11. package/dist/model-context/frame/AssistantFrameTypes.js +6 -0
  12. package/dist/model-context/frame/AssistantFrameTypes.js.map +1 -0
  13. package/dist/model-context/frame/index.d.ts +5 -0
  14. package/dist/model-context/frame/index.d.ts.map +1 -0
  15. package/dist/model-context/frame/index.js +6 -0
  16. package/dist/model-context/frame/index.js.map +1 -0
  17. package/dist/model-context/frame/useAssistantFrameHost.d.ts +28 -0
  18. package/dist/model-context/frame/useAssistantFrameHost.d.ts.map +1 -0
  19. package/dist/model-context/frame/useAssistantFrameHost.js +25 -0
  20. package/dist/model-context/frame/useAssistantFrameHost.js.map +1 -0
  21. package/dist/model-context/index.d.ts +2 -0
  22. package/dist/model-context/index.d.ts.map +1 -1
  23. package/dist/model-context/index.js +2 -0
  24. package/dist/model-context/index.js.map +1 -1
  25. package/dist/model-context/registry/ModelContextRegistry.d.ts +19 -0
  26. package/dist/model-context/registry/ModelContextRegistry.d.ts.map +1 -0
  27. package/dist/model-context/registry/ModelContextRegistry.js +117 -0
  28. package/dist/model-context/registry/ModelContextRegistry.js.map +1 -0
  29. package/dist/model-context/registry/ModelContextRegistryHandles.d.ts +14 -0
  30. package/dist/model-context/registry/ModelContextRegistryHandles.d.ts.map +1 -0
  31. package/dist/model-context/registry/ModelContextRegistryHandles.js +1 -0
  32. package/dist/model-context/registry/ModelContextRegistryHandles.js.map +1 -0
  33. package/dist/model-context/registry/index.d.ts +3 -0
  34. package/dist/model-context/registry/index.d.ts.map +1 -0
  35. package/dist/model-context/registry/index.js +4 -0
  36. package/dist/model-context/registry/index.js.map +1 -0
  37. package/dist/model-context/useAssistantInstructions.d.ts +1 -2
  38. package/dist/model-context/useAssistantInstructions.d.ts.map +1 -1
  39. package/dist/model-context/useAssistantInstructions.js.map +1 -1
  40. package/dist/runtimes/composer/BaseComposerRuntimeCore.d.ts.map +1 -1
  41. package/dist/runtimes/composer/BaseComposerRuntimeCore.js +5 -4
  42. package/dist/runtimes/composer/BaseComposerRuntimeCore.js.map +1 -1
  43. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.d.ts +4 -1
  44. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.d.ts.map +1 -1
  45. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.js +25 -10
  46. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.js.map +1 -1
  47. package/dist/types/MessagePartTypes.d.ts +2 -0
  48. package/dist/types/MessagePartTypes.d.ts.map +1 -1
  49. package/package.json +3 -3
  50. package/src/model-context/frame/AssistantFrame.test.ts +353 -0
  51. package/src/model-context/frame/AssistantFrameHost.ts +218 -0
  52. package/src/model-context/frame/AssistantFrameProvider.ts +225 -0
  53. package/src/model-context/frame/AssistantFrameTypes.ts +40 -0
  54. package/src/model-context/frame/SPEC_AssistantFrame.md +104 -0
  55. package/src/model-context/frame/index.ts +4 -0
  56. package/src/model-context/frame/useAssistantFrameHost.ts +48 -0
  57. package/src/model-context/index.ts +3 -0
  58. package/src/model-context/registry/ModelContextRegistry.ts +165 -0
  59. package/src/model-context/registry/ModelContextRegistryHandles.ts +19 -0
  60. package/src/model-context/registry/SPEC_ModelContextRegistry.md +40 -0
  61. package/src/model-context/registry/index.ts +2 -0
  62. package/src/model-context/useAssistantInstructions.tsx +1 -1
  63. package/src/runtimes/composer/BaseComposerRuntimeCore.tsx +5 -4
  64. package/src/runtimes/external-store/ExternalStoreThreadRuntimeCore.tsx +29 -11
  65. package/src/types/MessagePartTypes.ts +2 -0
@@ -12,7 +12,7 @@ import {
12
12
  } from "./getExternalStoreMessage";
13
13
  import { ThreadMessageConverter } from "./ThreadMessageConverter";
14
14
  import { getAutoStatus, isAutoStatus } from "./auto-status";
15
- import { fromThreadMessageLike } from "./ThreadMessageLike";
15
+ import { fromThreadMessageLike, ThreadMessageLike } from "./ThreadMessageLike";
16
16
  import { getThreadMessageText } from "../../utils/getThreadMessageText";
17
17
  import {
18
18
  RuntimeCapabilities,
@@ -20,6 +20,10 @@ import {
20
20
  } from "../core/ThreadRuntimeCore";
21
21
  import { BaseThreadRuntimeCore } from "../core/BaseThreadRuntimeCore";
22
22
  import { ModelContextProvider } from "../../model-context";
23
+ import {
24
+ ExportedMessageRepository,
25
+ MessageRepository,
26
+ } from "../utils/MessageRepository";
23
27
 
24
28
  const EMPTY_ARRAY = Object.freeze([]);
25
29
 
@@ -34,7 +38,8 @@ export class ExternalStoreThreadRuntimeCore
34
38
  extends BaseThreadRuntimeCore
35
39
  implements ThreadRuntimeCore
36
40
  {
37
- private assistantOptimisticId: string | null = null;
41
+ private _resetScheduled = false;
42
+ private _assistantOptimisticId: string | null = null;
38
43
 
39
44
  private _capabilities: RuntimeCapabilities = {
40
45
  switchToBranch: false,
@@ -123,7 +128,7 @@ export class ExternalStoreThreadRuntimeCore
123
128
 
124
129
  // Clear and import the message repository
125
130
  this.repository.clear();
126
- this.assistantOptimisticId = null;
131
+ this._assistantOptimisticId = null;
127
132
  this.repository.import(store.messageRepository);
128
133
 
129
134
  messages = this.repository.getMessages();
@@ -170,6 +175,12 @@ export class ExternalStoreThreadRuntimeCore
170
175
  return newMessage;
171
176
  });
172
177
 
178
+ // special case: branches should be reset if an empty array is provided
179
+ if (this._resetScheduled || messages.length === 0) {
180
+ this._resetScheduled = false;
181
+ this.repository.clear();
182
+ }
183
+
173
184
  for (let i = 0; i < messages.length; i++) {
174
185
  const message = messages[i]!;
175
186
  const parent = messages[i - 1];
@@ -192,13 +203,13 @@ export class ExternalStoreThreadRuntimeCore
192
203
  }
193
204
  }
194
205
 
195
- if (this.assistantOptimisticId) {
196
- this.repository.deleteMessage(this.assistantOptimisticId);
197
- this.assistantOptimisticId = null;
206
+ if (this._assistantOptimisticId) {
207
+ this.repository.deleteMessage(this._assistantOptimisticId);
208
+ this._assistantOptimisticId = null;
198
209
  }
199
210
 
200
211
  if (hasUpcomingMessage(isRunning, messages)) {
201
- this.assistantOptimisticId = this.repository.appendOptimisticMessage(
212
+ this._assistantOptimisticId = this.repository.appendOptimisticMessage(
202
213
  messages.at(-1)?.id ?? null,
203
214
  {
204
215
  role: "assistant",
@@ -208,7 +219,7 @@ export class ExternalStoreThreadRuntimeCore
208
219
  }
209
220
 
210
221
  this.repository.resetHead(
211
- this.assistantOptimisticId ?? messages.at(-1)?.id ?? null,
222
+ this._assistantOptimisticId ?? messages.at(-1)?.id ?? null,
212
223
  );
213
224
 
214
225
  this._messages = this.repository.getMessages();
@@ -250,9 +261,9 @@ export class ExternalStoreThreadRuntimeCore
250
261
 
251
262
  this._store.onCancel();
252
263
 
253
- if (this.assistantOptimisticId) {
254
- this.repository.deleteMessage(this.assistantOptimisticId);
255
- this.assistantOptimisticId = null;
264
+ if (this._assistantOptimisticId) {
265
+ this.repository.deleteMessage(this._assistantOptimisticId);
266
+ this._assistantOptimisticId = null;
256
267
  }
257
268
 
258
269
  let messages = this.repository.getMessages();
@@ -283,6 +294,13 @@ export class ExternalStoreThreadRuntimeCore
283
294
  this._store.onAddToolResult?.(options);
284
295
  }
285
296
 
297
+ public override reset(initialMessages?: readonly ThreadMessageLike[]) {
298
+ const repo = new MessageRepository();
299
+ repo.import(ExportedMessageRepository.fromArray(initialMessages ?? []));
300
+ this._resetScheduled = true;
301
+ this.updateMessages(repo.getMessages());
302
+ }
303
+
286
304
  private updateMessages = (messages: readonly ThreadMessage[]) => {
287
305
  const hasConverter = this._store.convertMessage !== undefined;
288
306
  if (hasConverter) {
@@ -24,10 +24,12 @@ export type SourceMessagePart = {
24
24
  export type ImageMessagePart = {
25
25
  readonly type: "image";
26
26
  readonly image: string;
27
+ readonly filename?: string;
27
28
  };
28
29
 
29
30
  export type FileMessagePart = {
30
31
  readonly type: "file";
32
+ readonly filename?: string;
31
33
  readonly data: string;
32
34
  readonly mimeType: string;
33
35
  };