@assistant-ui/react 0.7.35 → 0.7.37

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 (123) hide show
  1. package/dist/api/MessageRuntime.d.ts.map +1 -1
  2. package/dist/api/MessageRuntime.js +1 -0
  3. package/dist/api/MessageRuntime.js.map +1 -1
  4. package/dist/api/MessageRuntime.mjs +1 -0
  5. package/dist/api/MessageRuntime.mjs.map +1 -1
  6. package/dist/api/ThreadRuntime.d.ts +6 -1
  7. package/dist/api/ThreadRuntime.d.ts.map +1 -1
  8. package/dist/api/ThreadRuntime.js +4 -1
  9. package/dist/api/ThreadRuntime.js.map +1 -1
  10. package/dist/api/ThreadRuntime.mjs +4 -1
  11. package/dist/api/ThreadRuntime.mjs.map +1 -1
  12. package/dist/internal.d.ts +3 -0
  13. package/dist/internal.d.ts.map +1 -1
  14. package/dist/internal.js +10 -1
  15. package/dist/internal.js.map +1 -1
  16. package/dist/internal.mjs +7 -1
  17. package/dist/internal.mjs.map +1 -1
  18. package/dist/primitive-hooks/contentPart/useContentPartDisplay.d.ts +3 -0
  19. package/dist/primitive-hooks/contentPart/useContentPartDisplay.d.ts.map +1 -1
  20. package/dist/primitive-hooks/contentPart/useContentPartDisplay.js.map +1 -1
  21. package/dist/primitive-hooks/contentPart/useContentPartDisplay.mjs.map +1 -1
  22. package/dist/primitives/message/MessageContent.d.ts +2 -1
  23. package/dist/primitives/message/MessageContent.d.ts.map +1 -1
  24. package/dist/primitives/message/MessageContent.js +6 -2
  25. package/dist/primitives/message/MessageContent.js.map +1 -1
  26. package/dist/primitives/message/MessageContent.mjs +6 -2
  27. package/dist/primitives/message/MessageContent.mjs.map +1 -1
  28. package/dist/runtimes/composer/BaseComposerRuntimeCore.d.ts +1 -1
  29. package/dist/runtimes/composer/BaseComposerRuntimeCore.d.ts.map +1 -1
  30. package/dist/runtimes/composer/BaseComposerRuntimeCore.js +1 -0
  31. package/dist/runtimes/composer/BaseComposerRuntimeCore.js.map +1 -1
  32. package/dist/runtimes/composer/BaseComposerRuntimeCore.mjs +1 -0
  33. package/dist/runtimes/composer/BaseComposerRuntimeCore.mjs.map +1 -1
  34. package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.d.ts +2 -1
  35. package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.d.ts.map +1 -1
  36. package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.js +4 -1
  37. package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.js.map +1 -1
  38. package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.mjs +4 -1
  39. package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.mjs.map +1 -1
  40. package/dist/runtimes/composer/DefaultThreadComposerRuntimeCore.d.ts +1 -1
  41. package/dist/runtimes/composer/DefaultThreadComposerRuntimeCore.d.ts.map +1 -1
  42. package/dist/runtimes/composer/DefaultThreadComposerRuntimeCore.js +2 -1
  43. package/dist/runtimes/composer/DefaultThreadComposerRuntimeCore.js.map +1 -1
  44. package/dist/runtimes/composer/DefaultThreadComposerRuntimeCore.mjs +2 -1
  45. package/dist/runtimes/composer/DefaultThreadComposerRuntimeCore.mjs.map +1 -1
  46. package/dist/runtimes/core/ComposerRuntimeCore.d.ts +1 -1
  47. package/dist/runtimes/core/ComposerRuntimeCore.d.ts.map +1 -1
  48. package/dist/runtimes/core/ComposerRuntimeCore.js.map +1 -1
  49. package/dist/runtimes/core/ThreadRuntimeCore.d.ts +2 -1
  50. package/dist/runtimes/core/ThreadRuntimeCore.d.ts.map +1 -1
  51. package/dist/runtimes/core/ThreadRuntimeCore.js.map +1 -1
  52. package/dist/runtimes/edge/EdgeRuntimeRequestOptions.d.ts +28 -0
  53. package/dist/runtimes/edge/EdgeRuntimeRequestOptions.d.ts.map +1 -1
  54. package/dist/runtimes/edge/EdgeRuntimeRequestOptions.js +6 -0
  55. package/dist/runtimes/edge/EdgeRuntimeRequestOptions.js.map +1 -1
  56. package/dist/runtimes/edge/EdgeRuntimeRequestOptions.mjs +6 -0
  57. package/dist/runtimes/edge/EdgeRuntimeRequestOptions.mjs.map +1 -1
  58. package/dist/runtimes/edge/converters/fromLanguageModelMessages.d.ts.map +1 -1
  59. package/dist/runtimes/edge/converters/fromLanguageModelMessages.js +8 -1
  60. package/dist/runtimes/edge/converters/fromLanguageModelMessages.js.map +1 -1
  61. package/dist/runtimes/edge/converters/fromLanguageModelMessages.mjs +8 -1
  62. package/dist/runtimes/edge/converters/fromLanguageModelMessages.mjs.map +1 -1
  63. package/dist/runtimes/edge/converters/toLanguageModelMessages.d.ts.map +1 -1
  64. package/dist/runtimes/edge/converters/toLanguageModelMessages.js +7 -0
  65. package/dist/runtimes/edge/converters/toLanguageModelMessages.js.map +1 -1
  66. package/dist/runtimes/edge/converters/toLanguageModelMessages.mjs +7 -0
  67. package/dist/runtimes/edge/converters/toLanguageModelMessages.mjs.map +1 -1
  68. package/dist/runtimes/external-store/ThreadMessageLike.d.ts +3 -3
  69. package/dist/runtimes/external-store/ThreadMessageLike.d.ts.map +1 -1
  70. package/dist/runtimes/external-store/ThreadMessageLike.js +7 -2
  71. package/dist/runtimes/external-store/ThreadMessageLike.js.map +1 -1
  72. package/dist/runtimes/external-store/ThreadMessageLike.mjs +7 -2
  73. package/dist/runtimes/external-store/ThreadMessageLike.mjs.map +1 -1
  74. package/dist/runtimes/local/LocalRuntimeCore.d.ts +2 -1
  75. package/dist/runtimes/local/LocalRuntimeCore.d.ts.map +1 -1
  76. package/dist/runtimes/local/LocalRuntimeCore.js +7 -2
  77. package/dist/runtimes/local/LocalRuntimeCore.js.map +1 -1
  78. package/dist/runtimes/local/LocalRuntimeCore.mjs +7 -2
  79. package/dist/runtimes/local/LocalRuntimeCore.mjs.map +1 -1
  80. package/dist/runtimes/local/LocalRuntimeOptions.d.ts +3 -3
  81. package/dist/runtimes/local/LocalRuntimeOptions.d.ts.map +1 -1
  82. package/dist/runtimes/local/LocalRuntimeOptions.js.map +1 -1
  83. package/dist/runtimes/local/LocalRuntimeOptions.mjs.map +1 -1
  84. package/dist/runtimes/local/LocalThreadRuntimeCore.d.ts.map +1 -1
  85. package/dist/runtimes/local/LocalThreadRuntimeCore.js +1 -0
  86. package/dist/runtimes/local/LocalThreadRuntimeCore.js.map +1 -1
  87. package/dist/runtimes/local/LocalThreadRuntimeCore.mjs +1 -0
  88. package/dist/runtimes/local/LocalThreadRuntimeCore.mjs.map +1 -1
  89. package/dist/styles/index.css +1 -0
  90. package/dist/styles/index.css.map +1 -1
  91. package/dist/styles/tailwindcss/thread.css +1 -1
  92. package/dist/styles/tailwindcss/thread.css.json +1 -1
  93. package/dist/types/AssistantTypes.d.ts +47 -4
  94. package/dist/types/AssistantTypes.d.ts.map +1 -1
  95. package/dist/types/AssistantTypes.js.map +1 -1
  96. package/dist/types/ContentPartComponentTypes.d.ts +3 -1
  97. package/dist/types/ContentPartComponentTypes.d.ts.map +1 -1
  98. package/dist/types/ContentPartComponentTypes.js.map +1 -1
  99. package/dist/types/index.d.ts +2 -2
  100. package/dist/types/index.d.ts.map +1 -1
  101. package/dist/types/index.js.map +1 -1
  102. package/package.json +1 -1
  103. package/src/api/MessageRuntime.ts +1 -0
  104. package/src/api/ThreadRuntime.ts +10 -1
  105. package/src/internal.ts +3 -0
  106. package/src/primitive-hooks/contentPart/useContentPartDisplay.tsx +3 -0
  107. package/src/primitives/message/MessageContent.tsx +9 -1
  108. package/src/runtimes/composer/BaseComposerRuntimeCore.tsx +5 -2
  109. package/src/runtimes/composer/DefaultEditComposerRuntimeCore.tsx +7 -2
  110. package/src/runtimes/composer/DefaultThreadComposerRuntimeCore.tsx +4 -1
  111. package/src/runtimes/core/ComposerRuntimeCore.tsx +1 -1
  112. package/src/runtimes/core/ThreadRuntimeCore.tsx +2 -1
  113. package/src/runtimes/edge/EdgeRuntimeRequestOptions.ts +7 -0
  114. package/src/runtimes/edge/converters/fromLanguageModelMessages.ts +9 -2
  115. package/src/runtimes/edge/converters/toLanguageModelMessages.ts +15 -1
  116. package/src/runtimes/external-store/ThreadMessageLike.tsx +11 -4
  117. package/src/runtimes/local/LocalRuntimeCore.tsx +10 -4
  118. package/src/runtimes/local/LocalRuntimeOptions.tsx +2 -2
  119. package/src/runtimes/local/LocalThreadRuntimeCore.tsx +1 -0
  120. package/src/styles/tailwindcss/thread.css +1 -1
  121. package/src/types/AssistantTypes.ts +50 -2
  122. package/src/types/ContentPartComponentTypes.tsx +4 -0
  123. package/src/types/index.ts +6 -5
@@ -9,6 +9,11 @@ export type ImageContentPart = {
9
9
  readonly type: "image";
10
10
  readonly image: string;
11
11
  };
12
+ export type FileContentPart = {
13
+ readonly type: "file";
14
+ readonly data: string;
15
+ readonly mimeType: string;
16
+ };
12
17
  export type Unstable_AudioContentPart = {
13
18
  readonly type: "audio";
14
19
  readonly audio: {
@@ -16,6 +21,43 @@ export type Unstable_AudioContentPart = {
16
21
  readonly format: "mp3" | "wav";
17
22
  };
18
23
  };
24
+ /**
25
+ * @deprecated UI content parts are deprecated and will be removed in v0.8.0.
26
+ * Migration guide for external-store users using UI content parts:
27
+ * If you must, store UI elements on your external store messages, update your
28
+ * external store converter:
29
+ * ```ts
30
+ * const UI_PLACEHOLDER = Object.freeze({ type: "text", text: "UI content placeholder" });
31
+ * const convertMessage = (message: TMessage): ThreadMessageLike => ({
32
+ * content: [
33
+ * // other content parts,
34
+ * UI_PLACEHOLDER
35
+ * ],
36
+ * });
37
+ * ```
38
+ *
39
+ * Then, define a custom `TextContentPartComponent`:
40
+ *
41
+ * ```tsx
42
+ * const MyText: FC = () => {
43
+ * const isUIPlaceholder = useContentPart(p => p === UI_PLACEHOLDER);
44
+ *
45
+ * // this assumes that you have a `display` field on your original message objects before conversion.
46
+ * const ui = useMessage(m => isUIPlaceholder ? getExternalStoreMessage(m).display : undefined);
47
+ * if (ui) {
48
+ * return ui;
49
+ * }
50
+ *
51
+ * return <MarkdownText />; // your default text component
52
+ * }
53
+ * ```
54
+ *
55
+ * Pass this component to your Thread:
56
+ *
57
+ * ```tsx
58
+ * <Thread assistantMessage={{ components: { Text: MyText } }} userMessage={{ components: { Text: MyText } }} />
59
+ * ```
60
+ */
19
61
  export type UIContentPart = {
20
62
  readonly type: "ui";
21
63
  readonly display: ReactNode;
@@ -31,7 +73,7 @@ export type CoreToolCallContentPart<TArgs extends Record<string, unknown> = Reco
31
73
  export type ToolCallContentPart<TArgs extends Record<string, unknown> = Record<string | number, unknown>, TResult = unknown> = CoreToolCallContentPart<TArgs, TResult> & {
32
74
  readonly argsText: string;
33
75
  };
34
- export type ThreadUserContentPart = TextContentPart | ImageContentPart | Unstable_AudioContentPart | UIContentPart;
76
+ export type ThreadUserContentPart = TextContentPart | ImageContentPart | FileContentPart | Unstable_AudioContentPart | UIContentPart;
35
77
  export type ThreadAssistantContentPart = TextContentPart | ToolCallContentPart | UIContentPart;
36
78
  type MessageCommonProps = {
37
79
  readonly id: string;
@@ -99,10 +141,11 @@ export type RunConfig = {
99
141
  };
100
142
  export type AppendMessage = CoreMessage & {
101
143
  parentId: string | null;
144
+ /** The ID of the message that was edited or undefined. */
145
+ sourceId: string | null;
146
+ runConfig: RunConfig | undefined;
102
147
  attachments: readonly CompleteAttachment[];
103
148
  startRun?: boolean | undefined;
104
- /** TODO: make required in 0.8.0 */
105
- runConfig?: RunConfig | undefined;
106
149
  };
107
150
  type BaseThreadMessage = {
108
151
  readonly status?: ThreadAssistantMessage["status"];
@@ -115,7 +158,7 @@ type BaseThreadMessage = {
115
158
  };
116
159
  export type ThreadMessage = BaseThreadMessage & (ThreadSystemMessage | ThreadUserMessage | ThreadAssistantMessage);
117
160
  /** Core Message Types (without UI content parts) */
118
- export type CoreUserContentPart = TextContentPart | ImageContentPart | Unstable_AudioContentPart;
161
+ export type CoreUserContentPart = TextContentPart | ImageContentPart | FileContentPart | Unstable_AudioContentPart;
119
162
  export type CoreAssistantContentPart = TextContentPart | CoreToolCallContentPart;
120
163
  export type CoreSystemMessage = {
121
164
  role: "system";
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantTypes.d.ts","sourceRoot":"","sources":["../../src/types/AssistantTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AssistantTypes.d.ts","sourceRoot":"","sources":["../../src/types/AssistantTypes.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/types/AssistantTypes.ts"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { CompleteAttachment } from \"./AttachmentTypes\";\n\nexport type MessageRole = \"user\" | \"assistant\" | \"system\";\n\nexport type TextContentPart = {\n readonly type: \"text\";\n readonly text: string;\n};\n\nexport type ImageContentPart = {\n readonly type: \"image\";\n readonly image: string;\n};\n\nexport type Unstable_AudioContentPart = {\n readonly type: \"audio\";\n readonly audio: {\n readonly data: string;\n readonly format: \"mp3\" | \"wav\";\n };\n};\n\nexport type UIContentPart = {\n readonly type: \"ui\";\n readonly display: ReactNode;\n};\n\nexport type CoreToolCallContentPart<\n TArgs extends Record<string, unknown> = Record<string | number, unknown>,\n TResult = unknown,\n> = {\n readonly type: \"tool-call\";\n readonly toolCallId: string;\n readonly toolName: string;\n readonly args: TArgs;\n readonly result?: TResult | undefined;\n readonly isError?: boolean | undefined;\n};\n\nexport type ToolCallContentPart<\n TArgs extends Record<string, unknown> = Record<string | number, unknown>,\n TResult = unknown,\n> = CoreToolCallContentPart<TArgs, TResult> & {\n readonly argsText: string;\n};\n\nexport type ThreadUserContentPart =\n | TextContentPart\n | ImageContentPart\n | Unstable_AudioContentPart\n | UIContentPart;\n\nexport type ThreadAssistantContentPart =\n | TextContentPart\n | ToolCallContentPart\n | UIContentPart;\n\ntype MessageCommonProps = {\n readonly id: string;\n readonly createdAt: Date;\n};\n\nexport type ThreadStep = {\n readonly usage?:\n | {\n readonly promptTokens: number;\n readonly completionTokens: number;\n }\n | undefined;\n};\n\nexport type ContentPartStatus =\n | {\n readonly type: \"running\";\n }\n | {\n readonly type: \"complete\";\n }\n | {\n readonly type: \"incomplete\";\n readonly reason:\n | \"cancelled\"\n | \"length\"\n | \"content-filter\"\n | \"other\"\n | \"error\";\n readonly error?: unknown;\n };\n\nexport type ToolCallContentPartStatus =\n | {\n readonly type: \"requires-action\";\n readonly reason: \"tool-calls\";\n }\n | ContentPartStatus;\n\nexport type MessageStatus =\n | {\n readonly type: \"running\";\n }\n | {\n readonly type: \"requires-action\";\n readonly reason: \"tool-calls\";\n }\n | {\n readonly type: \"complete\";\n readonly reason: \"stop\" | \"unknown\";\n }\n | {\n readonly type: \"incomplete\";\n readonly reason:\n | \"cancelled\"\n | \"tool-calls\"\n | \"length\"\n | \"content-filter\"\n | \"other\"\n | \"error\";\n readonly error?: unknown;\n };\n\nexport type ThreadSystemMessage = MessageCommonProps & {\n readonly role: \"system\";\n readonly content: readonly [TextContentPart];\n readonly metadata: {\n readonly custom: Record<string, unknown>;\n };\n};\n\nexport type ThreadUserMessage = MessageCommonProps & {\n readonly role: \"user\";\n readonly content: readonly ThreadUserContentPart[];\n readonly attachments: readonly CompleteAttachment[];\n readonly metadata: {\n readonly custom: Record<string, unknown>;\n };\n};\n\nexport type ThreadAssistantMessage = MessageCommonProps & {\n readonly role: \"assistant\";\n readonly content: readonly ThreadAssistantContentPart[];\n readonly status: MessageStatus;\n readonly metadata: {\n readonly unstable_data: readonly unknown[];\n readonly steps: readonly ThreadStep[];\n readonly custom: Record<string, unknown>;\n };\n};\n\nexport type RunConfig = {\n // TODO allow user customization via global type overrides\n readonly custom?: Record<string, unknown>;\n};\n\nexport type AppendMessage = CoreMessage & {\n parentId: string | null;\n attachments: readonly CompleteAttachment[];\n startRun?: boolean | undefined;\n /** TODO: make required in 0.8.0 */\n runConfig?: RunConfig | undefined;\n};\n\ntype BaseThreadMessage = {\n readonly status?: ThreadAssistantMessage[\"status\"];\n readonly metadata: {\n readonly unstable_data?: readonly unknown[];\n readonly steps?: readonly ThreadStep[];\n readonly custom: Record<string, unknown>;\n };\n readonly attachments?: ThreadUserMessage[\"attachments\"];\n};\n\nexport type ThreadMessage = BaseThreadMessage &\n (ThreadSystemMessage | ThreadUserMessage | ThreadAssistantMessage);\n\n/** Core Message Types (without UI content parts) */\n\nexport type CoreUserContentPart =\n | TextContentPart\n | ImageContentPart\n | Unstable_AudioContentPart;\nexport type CoreAssistantContentPart =\n | TextContentPart\n | CoreToolCallContentPart;\n\nexport type CoreSystemMessage = {\n role: \"system\";\n content: readonly [TextContentPart];\n};\n\nexport type CoreUserMessage = {\n role: \"user\";\n content: readonly CoreUserContentPart[];\n};\n\nexport type CoreAssistantMessage = {\n role: \"assistant\";\n content: readonly CoreAssistantContentPart[];\n};\n\nexport type CoreMessage =\n | CoreSystemMessage\n | CoreUserMessage\n | CoreAssistantMessage;\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
1
+ {"version":3,"sources":["../../src/types/AssistantTypes.ts"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { CompleteAttachment } from \"./AttachmentTypes\";\n\nexport type MessageRole = \"user\" | \"assistant\" | \"system\";\n\nexport type TextContentPart = {\n readonly type: \"text\";\n readonly text: string;\n};\n\nexport type ImageContentPart = {\n readonly type: \"image\";\n readonly image: string;\n};\n\nexport type FileContentPart = {\n readonly type: \"file\";\n readonly data: string;\n readonly mimeType: string;\n};\n\nexport type Unstable_AudioContentPart = {\n readonly type: \"audio\";\n readonly audio: {\n readonly data: string;\n readonly format: \"mp3\" | \"wav\";\n };\n};\n\n/**\n * @deprecated UI content parts are deprecated and will be removed in v0.8.0.\n * Migration guide for external-store users using UI content parts:\n * If you must, store UI elements on your external store messages, update your\n * external store converter:\n * ```ts\n * const UI_PLACEHOLDER = Object.freeze({ type: \"text\", text: \"UI content placeholder\" });\n * const convertMessage = (message: TMessage): ThreadMessageLike => ({\n * content: [\n * // other content parts,\n * UI_PLACEHOLDER\n * ],\n * });\n * ```\n *\n * Then, define a custom `TextContentPartComponent`:\n *\n * ```tsx\n * const MyText: FC = () => {\n * const isUIPlaceholder = useContentPart(p => p === UI_PLACEHOLDER);\n *\n * // this assumes that you have a `display` field on your original message objects before conversion.\n * const ui = useMessage(m => isUIPlaceholder ? getExternalStoreMessage(m).display : undefined);\n * if (ui) {\n * return ui;\n * }\n *\n * return <MarkdownText />; // your default text component\n * }\n * ```\n *\n * Pass this component to your Thread:\n *\n * ```tsx\n * <Thread assistantMessage={{ components: { Text: MyText } }} userMessage={{ components: { Text: MyText } }} />\n * ```\n */\nexport type UIContentPart = {\n readonly type: \"ui\";\n readonly display: ReactNode;\n};\n\nexport type CoreToolCallContentPart<\n TArgs extends Record<string, unknown> = Record<string | number, unknown>,\n TResult = unknown,\n> = {\n readonly type: \"tool-call\";\n readonly toolCallId: string;\n readonly toolName: string;\n readonly args: TArgs;\n readonly result?: TResult | undefined;\n readonly isError?: boolean | undefined;\n};\n\nexport type ToolCallContentPart<\n TArgs extends Record<string, unknown> = Record<string | number, unknown>,\n TResult = unknown,\n> = CoreToolCallContentPart<TArgs, TResult> & {\n readonly argsText: string;\n};\n\nexport type ThreadUserContentPart =\n | TextContentPart\n | ImageContentPart\n | FileContentPart\n | Unstable_AudioContentPart\n | UIContentPart;\n\nexport type ThreadAssistantContentPart =\n | TextContentPart\n | ToolCallContentPart\n | UIContentPart;\n\ntype MessageCommonProps = {\n readonly id: string;\n readonly createdAt: Date;\n};\n\nexport type ThreadStep = {\n readonly usage?:\n | {\n readonly promptTokens: number;\n readonly completionTokens: number;\n }\n | undefined;\n};\n\nexport type ContentPartStatus =\n | {\n readonly type: \"running\";\n }\n | {\n readonly type: \"complete\";\n }\n | {\n readonly type: \"incomplete\";\n readonly reason:\n | \"cancelled\"\n | \"length\"\n | \"content-filter\"\n | \"other\"\n | \"error\";\n readonly error?: unknown;\n };\n\nexport type ToolCallContentPartStatus =\n | {\n readonly type: \"requires-action\";\n readonly reason: \"tool-calls\";\n }\n | ContentPartStatus;\n\nexport type MessageStatus =\n | {\n readonly type: \"running\";\n }\n | {\n readonly type: \"requires-action\";\n readonly reason: \"tool-calls\";\n }\n | {\n readonly type: \"complete\";\n readonly reason: \"stop\" | \"unknown\";\n }\n | {\n readonly type: \"incomplete\";\n readonly reason:\n | \"cancelled\"\n | \"tool-calls\"\n | \"length\"\n | \"content-filter\"\n | \"other\"\n | \"error\";\n readonly error?: unknown;\n };\n\nexport type ThreadSystemMessage = MessageCommonProps & {\n readonly role: \"system\";\n readonly content: readonly [TextContentPart];\n readonly metadata: {\n readonly custom: Record<string, unknown>;\n };\n};\n\nexport type ThreadUserMessage = MessageCommonProps & {\n readonly role: \"user\";\n readonly content: readonly ThreadUserContentPart[];\n readonly attachments: readonly CompleteAttachment[];\n readonly metadata: {\n readonly custom: Record<string, unknown>;\n };\n};\n\nexport type ThreadAssistantMessage = MessageCommonProps & {\n readonly role: \"assistant\";\n readonly content: readonly ThreadAssistantContentPart[];\n readonly status: MessageStatus;\n readonly metadata: {\n readonly unstable_data: readonly unknown[];\n readonly steps: readonly ThreadStep[];\n readonly custom: Record<string, unknown>;\n };\n};\n\nexport type RunConfig = {\n // TODO allow user customization via global type overrides\n readonly custom?: Record<string, unknown>;\n};\n\nexport type AppendMessage = CoreMessage & {\n parentId: string | null;\n\n /** The ID of the message that was edited or undefined. */\n sourceId: string | null;\n runConfig: RunConfig | undefined;\n\n attachments: readonly CompleteAttachment[];\n startRun?: boolean | undefined;\n};\n\ntype BaseThreadMessage = {\n readonly status?: ThreadAssistantMessage[\"status\"];\n readonly metadata: {\n readonly unstable_data?: readonly unknown[];\n readonly steps?: readonly ThreadStep[];\n readonly custom: Record<string, unknown>;\n };\n readonly attachments?: ThreadUserMessage[\"attachments\"];\n};\n\nexport type ThreadMessage = BaseThreadMessage &\n (ThreadSystemMessage | ThreadUserMessage | ThreadAssistantMessage);\n\n/** Core Message Types (without UI content parts) */\n\nexport type CoreUserContentPart =\n | TextContentPart\n | ImageContentPart\n | FileContentPart\n | Unstable_AudioContentPart;\nexport type CoreAssistantContentPart =\n | TextContentPart\n | CoreToolCallContentPart;\n\nexport type CoreSystemMessage = {\n role: \"system\";\n content: readonly [TextContentPart];\n};\n\nexport type CoreUserMessage = {\n role: \"user\";\n content: readonly CoreUserContentPart[];\n};\n\nexport type CoreAssistantMessage = {\n role: \"assistant\";\n content: readonly CoreAssistantContentPart[];\n};\n\nexport type CoreMessage =\n | CoreSystemMessage\n | CoreUserMessage\n | CoreAssistantMessage;\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -1,5 +1,5 @@
1
1
  import type { ComponentType } from "react";
2
- import type { ContentPartStatus, ImageContentPart, TextContentPart, ToolCallContentPart, UIContentPart, Unstable_AudioContentPart } from "./AssistantTypes";
2
+ import type { ContentPartStatus, FileContentPart, ImageContentPart, TextContentPart, ToolCallContentPart, UIContentPart, Unstable_AudioContentPart } from "./AssistantTypes";
3
3
  import { ContentPartState } from "../api/ContentPartRuntime";
4
4
  export type EmptyContentPartProps = {
5
5
  status: ContentPartStatus;
@@ -9,6 +9,8 @@ export type TextContentPartProps = ContentPartState & TextContentPart;
9
9
  export type TextContentPartComponent = ComponentType<TextContentPartProps>;
10
10
  export type ImageContentPartProps = ContentPartState & ImageContentPart;
11
11
  export type ImageContentPartComponent = ComponentType<ImageContentPartProps>;
12
+ export type FileContentPartProps = ContentPartState & FileContentPart;
13
+ export type FileContentPartComponent = ComponentType<FileContentPartProps>;
12
14
  export type Unstable_AudioContentPartProps = ContentPartState & Unstable_AudioContentPart;
13
15
  export type Unstable_AudioContentPartComponent = ComponentType<Unstable_AudioContentPartProps>;
14
16
  export type UIContentPartProps = ContentPartState & UIContentPart;
@@ -1 +1 @@
1
- {"version":3,"file":"ContentPartComponentTypes.d.ts","sourceRoot":"","sources":["../../src/types/ContentPartComponentTypes.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,yBAAyB,EAC1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,iBAAiB,CAAC;CAC3B,CAAC;AACF,MAAM,MAAM,yBAAyB,GAAG,aAAa,CAAC,qBAAqB,CAAC,CAAC;AAE7E,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG,eAAe,CAAC;AACtE,MAAM,MAAM,wBAAwB,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAC;AAE3E,MAAM,MAAM,qBAAqB,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AACxE,MAAM,MAAM,yBAAyB,GAAG,aAAa,CAAC,qBAAqB,CAAC,CAAC;AAE7E,MAAM,MAAM,8BAA8B,GAAG,gBAAgB,GAC3D,yBAAyB,CAAC;AAC5B,MAAM,MAAM,kCAAkC,GAC5C,aAAa,CAAC,8BAA8B,CAAC,CAAC;AAEhD,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,GAAG,aAAa,CAAC;AAClE,MAAM,MAAM,sBAAsB,GAAG,aAAa,CAAC,kBAAkB,CAAC,CAAC;AAEvE,MAAM,MAAM,wBAAwB,CAClC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,GAAG,EAC3C,OAAO,GAAG,OAAO,IACf,gBAAgB,GAClB,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG;IACpC,SAAS,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;CAClC,CAAC;AAEJ,MAAM,MAAM,4BAA4B,CACtC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,GAAG,EAC3C,OAAO,GAAG,GAAG,IACX,aAAa,CAAC,wBAAwB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"ContentPartComponentTypes.d.ts","sourceRoot":"","sources":["../../src/types/ContentPartComponentTypes.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,yBAAyB,EAC1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,iBAAiB,CAAC;CAC3B,CAAC;AACF,MAAM,MAAM,yBAAyB,GAAG,aAAa,CAAC,qBAAqB,CAAC,CAAC;AAE7E,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG,eAAe,CAAC;AACtE,MAAM,MAAM,wBAAwB,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAC;AAE3E,MAAM,MAAM,qBAAqB,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AACxE,MAAM,MAAM,yBAAyB,GAAG,aAAa,CAAC,qBAAqB,CAAC,CAAC;AAE7E,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG,eAAe,CAAC;AACtE,MAAM,MAAM,wBAAwB,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAC;AAE3E,MAAM,MAAM,8BAA8B,GAAG,gBAAgB,GAC3D,yBAAyB,CAAC;AAC5B,MAAM,MAAM,kCAAkC,GAC5C,aAAa,CAAC,8BAA8B,CAAC,CAAC;AAEhD,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,GAAG,aAAa,CAAC;AAClE,MAAM,MAAM,sBAAsB,GAAG,aAAa,CAAC,kBAAkB,CAAC,CAAC;AAEvE,MAAM,MAAM,wBAAwB,CAClC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,GAAG,EAC3C,OAAO,GAAG,OAAO,IACf,gBAAgB,GAClB,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG;IACpC,SAAS,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;CAClC,CAAC;AAEJ,MAAM,MAAM,4BAA4B,CACtC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,GAAG,EAC3C,OAAO,GAAG,GAAG,IACX,aAAa,CAAC,wBAAwB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/types/ContentPartComponentTypes.tsx"],"sourcesContent":["import type { ComponentType } from \"react\";\nimport type {\n ContentPartStatus,\n ImageContentPart,\n TextContentPart,\n ToolCallContentPart,\n UIContentPart,\n Unstable_AudioContentPart,\n} from \"./AssistantTypes\";\nimport { ContentPartState } from \"../api/ContentPartRuntime\";\n\nexport type EmptyContentPartProps = {\n status: ContentPartStatus;\n};\nexport type EmptyContentPartComponent = ComponentType<EmptyContentPartProps>;\n\nexport type TextContentPartProps = ContentPartState & TextContentPart;\nexport type TextContentPartComponent = ComponentType<TextContentPartProps>;\n\nexport type ImageContentPartProps = ContentPartState & ImageContentPart;\nexport type ImageContentPartComponent = ComponentType<ImageContentPartProps>;\n\nexport type Unstable_AudioContentPartProps = ContentPartState &\n Unstable_AudioContentPart;\nexport type Unstable_AudioContentPartComponent =\n ComponentType<Unstable_AudioContentPartProps>;\n\nexport type UIContentPartProps = ContentPartState & UIContentPart;\nexport type UIContentPartComponent = ComponentType<UIContentPartProps>;\n\nexport type ToolCallContentPartProps<\n TArgs extends Record<string, unknown> = any,\n TResult = unknown,\n> = ContentPartState &\n ToolCallContentPart<TArgs, TResult> & {\n addResult: (result: any) => void;\n };\n\nexport type ToolCallContentPartComponent<\n TArgs extends Record<string, unknown> = any,\n TResult = any,\n> = ComponentType<ToolCallContentPartProps<TArgs, TResult>>;\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
1
+ {"version":3,"sources":["../../src/types/ContentPartComponentTypes.tsx"],"sourcesContent":["import type { ComponentType } from \"react\";\nimport type {\n ContentPartStatus,\n FileContentPart,\n ImageContentPart,\n TextContentPart,\n ToolCallContentPart,\n UIContentPart,\n Unstable_AudioContentPart,\n} from \"./AssistantTypes\";\nimport { ContentPartState } from \"../api/ContentPartRuntime\";\n\nexport type EmptyContentPartProps = {\n status: ContentPartStatus;\n};\nexport type EmptyContentPartComponent = ComponentType<EmptyContentPartProps>;\n\nexport type TextContentPartProps = ContentPartState & TextContentPart;\nexport type TextContentPartComponent = ComponentType<TextContentPartProps>;\n\nexport type ImageContentPartProps = ContentPartState & ImageContentPart;\nexport type ImageContentPartComponent = ComponentType<ImageContentPartProps>;\n\nexport type FileContentPartProps = ContentPartState & FileContentPart;\nexport type FileContentPartComponent = ComponentType<FileContentPartProps>;\n\nexport type Unstable_AudioContentPartProps = ContentPartState &\n Unstable_AudioContentPart;\nexport type Unstable_AudioContentPartComponent =\n ComponentType<Unstable_AudioContentPartProps>;\n\nexport type UIContentPartProps = ContentPartState & UIContentPart;\nexport type UIContentPartComponent = ComponentType<UIContentPartProps>;\n\nexport type ToolCallContentPartProps<\n TArgs extends Record<string, unknown> = any,\n TResult = unknown,\n> = ContentPartState &\n ToolCallContentPart<TArgs, TResult> & {\n addResult: (result: any) => void;\n };\n\nexport type ToolCallContentPartComponent<\n TArgs extends Record<string, unknown> = any,\n TResult = any,\n> = ComponentType<ToolCallContentPartProps<TArgs, TResult>>;\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -1,6 +1,6 @@
1
1
  export type { Attachment, PendingAttachment, CompleteAttachment, AttachmentStatus, } from "./AttachmentTypes";
2
- export type { AppendMessage, TextContentPart, ImageContentPart, ToolCallContentPart, UIContentPart, MessageStatus, ThreadUserContentPart, ThreadAssistantContentPart, ThreadSystemMessage, ThreadAssistantMessage, ThreadUserMessage, ThreadMessage, CoreUserContentPart, CoreAssistantContentPart, CoreSystemMessage, CoreUserMessage, CoreAssistantMessage, CoreMessage, Unstable_AudioContentPart, } from "./AssistantTypes";
3
- export type { EmptyContentPartProps, EmptyContentPartComponent, TextContentPartProps, TextContentPartComponent, ImageContentPartProps, ImageContentPartComponent, UIContentPartProps, UIContentPartComponent, ToolCallContentPartProps, ToolCallContentPartComponent, Unstable_AudioContentPartProps, Unstable_AudioContentPartComponent, } from "./ContentPartComponentTypes";
2
+ export type { AppendMessage, TextContentPart, ImageContentPart, FileContentPart, Unstable_AudioContentPart, ToolCallContentPart, UIContentPart, MessageStatus, ThreadUserContentPart, ThreadAssistantContentPart, ThreadSystemMessage, ThreadAssistantMessage, ThreadUserMessage, ThreadMessage, CoreUserContentPart, CoreAssistantContentPart, CoreSystemMessage, CoreUserMessage, CoreAssistantMessage, CoreMessage, } from "./AssistantTypes";
3
+ export type { EmptyContentPartProps, EmptyContentPartComponent, TextContentPartProps, TextContentPartComponent, ImageContentPartProps, ImageContentPartComponent, FileContentPartProps, FileContentPartComponent, Unstable_AudioContentPartProps, Unstable_AudioContentPartComponent, UIContentPartProps, UIContentPartComponent, ToolCallContentPartProps, ToolCallContentPartComponent, } from "./ContentPartComponentTypes";
4
4
  export type { ModelConfig, ModelConfigProvider, Tool, } from "./ModelConfigTypes";
5
5
  export type { Unsubscribe } from "./Unsubscribe";
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,EACb,aAAa,EAGb,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,EAGb,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,WAAW,EAGX,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,EACxB,4BAA4B,EAC5B,8BAA8B,EAC9B,kCAAkC,GACnC,MAAM,6BAA6B,CAAC;AAErC,YAAY,EACV,WAAW,EACX,mBAAmB,EACnB,IAAI,GACL,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,yBAAyB,EACzB,mBAAmB,EACnB,aAAa,EACb,aAAa,EAGb,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,EAGb,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,wBAAwB,EACxB,8BAA8B,EAC9B,kCAAkC,EAClC,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,6BAA6B,CAAC;AAErC,YAAY,EACV,WAAW,EACX,mBAAmB,EACnB,IAAI,GACL,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/types/index.ts"],"sourcesContent":["export type {\n Attachment,\n PendingAttachment,\n CompleteAttachment,\n AttachmentStatus,\n} from \"./AttachmentTypes\";\n\nexport type {\n AppendMessage,\n TextContentPart,\n ImageContentPart,\n ToolCallContentPart,\n UIContentPart,\n MessageStatus,\n\n // thread message types\n ThreadUserContentPart,\n ThreadAssistantContentPart,\n ThreadSystemMessage,\n ThreadAssistantMessage,\n ThreadUserMessage,\n ThreadMessage,\n\n // core message types\n CoreUserContentPart,\n CoreAssistantContentPart,\n CoreSystemMessage,\n CoreUserMessage,\n CoreAssistantMessage,\n CoreMessage,\n\n // TODO\n Unstable_AudioContentPart,\n} from \"./AssistantTypes\";\n\nexport type {\n EmptyContentPartProps,\n EmptyContentPartComponent,\n TextContentPartProps,\n TextContentPartComponent,\n ImageContentPartProps,\n ImageContentPartComponent,\n UIContentPartProps,\n UIContentPartComponent,\n ToolCallContentPartProps,\n ToolCallContentPartComponent,\n Unstable_AudioContentPartProps,\n Unstable_AudioContentPartComponent,\n} from \"./ContentPartComponentTypes\";\n\nexport type {\n ModelConfig,\n ModelConfigProvider,\n Tool,\n} from \"./ModelConfigTypes\";\n\nexport type { Unsubscribe } from \"./Unsubscribe\";\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
1
+ {"version":3,"sources":["../../src/types/index.ts"],"sourcesContent":["export type {\n Attachment,\n PendingAttachment,\n CompleteAttachment,\n AttachmentStatus,\n} from \"./AttachmentTypes\";\n\nexport type {\n AppendMessage,\n TextContentPart,\n ImageContentPart,\n FileContentPart,\n Unstable_AudioContentPart,\n ToolCallContentPart,\n UIContentPart,\n MessageStatus,\n\n // thread message types\n ThreadUserContentPart,\n ThreadAssistantContentPart,\n ThreadSystemMessage,\n ThreadAssistantMessage,\n ThreadUserMessage,\n ThreadMessage,\n\n // core message types\n CoreUserContentPart,\n CoreAssistantContentPart,\n CoreSystemMessage,\n CoreUserMessage,\n CoreAssistantMessage,\n CoreMessage,\n} from \"./AssistantTypes\";\n\nexport type {\n EmptyContentPartProps,\n EmptyContentPartComponent,\n TextContentPartProps,\n TextContentPartComponent,\n ImageContentPartProps,\n ImageContentPartComponent,\n FileContentPartProps,\n FileContentPartComponent,\n Unstable_AudioContentPartProps,\n Unstable_AudioContentPartComponent,\n UIContentPartProps,\n UIContentPartComponent,\n ToolCallContentPartProps,\n ToolCallContentPartComponent,\n} from \"./ContentPartComponentTypes\";\n\nexport type {\n ModelConfig,\n ModelConfigProvider,\n Tool,\n} from \"./ModelConfigTypes\";\n\nexport type { Unsubscribe } from \"./Unsubscribe\";\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
package/package.json CHANGED
@@ -29,7 +29,7 @@
29
29
  "conversational-ui",
30
30
  "conversational-ai"
31
31
  ],
32
- "version": "0.7.35",
32
+ "version": "0.7.37",
33
33
  "license": "MIT",
34
34
  "exports": {
35
35
  ".": {
@@ -187,6 +187,7 @@ export class MessageRuntimeImpl implements MessageRuntime {
187
187
 
188
188
  this._threadBinding.getState().startRun({
189
189
  parentId: state.parentId,
190
+ sourceId: state.id,
190
191
  runConfig,
191
192
  });
192
193
  }
@@ -41,6 +41,7 @@ export type CreateAppendMessage =
41
41
  | string
42
42
  | {
43
43
  parentId?: string | null | undefined;
44
+ sourceId?: string | null | undefined;
44
45
  role?: AppendMessage["role"] | undefined;
45
46
  content: AppendMessage["content"];
46
47
  attachments?: AppendMessage["attachments"] | undefined;
@@ -54,6 +55,8 @@ const toAppendMessage = (
54
55
  if (typeof message === "string") {
55
56
  return {
56
57
  parentId: messages.at(-1)?.id ?? null,
58
+ sourceId: null,
59
+ runConfig: {},
57
60
  role: "user",
58
61
  content: [{ type: "text", text: message }],
59
62
  attachments: [],
@@ -67,6 +70,7 @@ const toAppendMessage = (
67
70
  return {
68
71
  ...message,
69
72
  parentId: message.parentId ?? messages.at(-1)?.id ?? null,
73
+ sourceId: message.sourceId ?? null,
70
74
  role: message.role ?? "user",
71
75
  attachments: message.attachments ?? [],
72
76
  } as AppendMessage;
@@ -287,10 +291,15 @@ export class ThreadRuntimeImpl implements ThreadRuntime {
287
291
  return this._threadBinding.getState().getModelConfig();
288
292
  }
289
293
 
294
+ public startRun(config: StartRunConfig): void;
295
+ /**
296
+ * @deprecated Use `startRun(parentId: string | null)` instead. This will be removed in 0.8.0.
297
+ */
298
+ public startRun(parentId: string | null): void;
290
299
  public startRun(configOrParentId: string | null | StartRunConfig) {
291
300
  const config =
292
301
  configOrParentId === null || typeof configOrParentId === "string"
293
- ? { parentId: configOrParentId }
302
+ ? { parentId: configOrParentId, sourceId: null, runConfig: {} }
294
303
  : configOrParentId;
295
304
  return this._threadBinding.getState().startRun(config);
296
305
  }
package/src/internal.ts CHANGED
@@ -12,5 +12,8 @@ export {
12
12
  type ThreadRuntimeCoreBinding,
13
13
  type ThreadListItemRuntimeBinding,
14
14
  } from "./api/ThreadRuntime";
15
+ export { fromThreadMessageLike } from "./runtimes/external-store/ThreadMessageLike";
16
+ export { getAutoStatus } from "./runtimes/external-store/auto-status";
17
+ export { EdgeRuntimeRequestOptionsSchema } from "./runtimes/edge/EdgeRuntimeRequestOptions";
15
18
 
16
19
  export * from "./utils/smooth";
@@ -4,6 +4,9 @@ import { ContentPartState } from "../../api/ContentPartRuntime";
4
4
  import { useContentPart } from "../../context/react/ContentPartContext";
5
5
  import { UIContentPart } from "../../types";
6
6
 
7
+ /**
8
+ * @deprecated UI content parts are deprecated and will be removed in v0.8.0.
9
+ */
7
10
  export const useContentPartDisplay = () => {
8
11
  const display = useContentPart((c) => {
9
12
  if (c.type !== "ui")
@@ -22,6 +22,7 @@ import type {
22
22
  ToolCallContentPartComponent,
23
23
  ToolCallContentPartProps,
24
24
  UIContentPartComponent,
25
+ FileContentPartComponent,
25
26
  } from "../../types/ContentPartComponentTypes";
26
27
  import { ContentPartPrimitiveInProgress } from "../contentPart/ContentPartInProgress";
27
28
  import { EMPTY_CONTENT_SYMBOL } from "../../api/MessageRuntime";
@@ -33,6 +34,7 @@ export namespace MessagePrimitiveContent {
33
34
  Empty?: EmptyContentPartComponent | undefined;
34
35
  Text?: TextContentPartComponent | undefined;
35
36
  Image?: ImageContentPartComponent | undefined;
37
+ File?: FileContentPartComponent | undefined;
36
38
  Unstable_Audio?: Unstable_AudioContentPartComponent | undefined;
37
39
  UI?: UIContentPartComponent | undefined;
38
40
  tools?:
@@ -72,6 +74,7 @@ const defaultComponents = {
72
74
  </p>
73
75
  ),
74
76
  Image: () => <ContentPartPrimitiveImage />,
77
+ File: () => null,
75
78
  Unstable_Audio: () => null,
76
79
  UI: () => <ContentPartPrimitiveDisplay />,
77
80
  } satisfies MessagePrimitiveContent.Props["components"];
@@ -85,8 +88,9 @@ const MessageContentPartComponent: FC<MessageContentPartComponentProps> = ({
85
88
  Text = defaultComponents.Text,
86
89
  Empty,
87
90
  Image = defaultComponents.Image,
88
- UI = defaultComponents.UI,
91
+ File = defaultComponents.File,
89
92
  Unstable_Audio: Audio = defaultComponents.Unstable_Audio,
93
+ UI = defaultComponents.UI,
90
94
  tools = {},
91
95
  } = {},
92
96
  }) => {
@@ -118,6 +122,9 @@ const MessageContentPartComponent: FC<MessageContentPartComponentProps> = ({
118
122
  // eslint-disable-next-line jsx-a11y/alt-text
119
123
  return <Image {...part} />;
120
124
 
125
+ case "file":
126
+ return <File {...part} />;
127
+
121
128
  case "audio":
122
129
  return <Audio {...part} />;
123
130
 
@@ -158,6 +165,7 @@ const MessageContentPart = memo(
158
165
  prev.partIndex === next.partIndex &&
159
166
  prev.components?.Text === next.components?.Text &&
160
167
  prev.components?.Image === next.components?.Image &&
168
+ prev.components?.File === next.components?.File &&
161
169
  prev.components?.Unstable_Audio === next.components?.Unstable_Audio &&
162
170
  prev.components?.UI === next.components?.UI &&
163
171
  prev.components?.tools === next.components?.tools,
@@ -133,7 +133,7 @@ export abstract class BaseComposerRuntimeCore
133
133
  )
134
134
  : [];
135
135
 
136
- const message: Omit<AppendMessage, "parentId"> = {
136
+ const message: Omit<AppendMessage, "parentId" | "sourceId"> = {
137
137
  role: this.role,
138
138
  content: this.text ? [{ type: "text", text: this.text }] : [],
139
139
  attachments,
@@ -149,7 +149,9 @@ export abstract class BaseComposerRuntimeCore
149
149
  this.handleCancel();
150
150
  }
151
151
 
152
- protected abstract handleSend(message: Omit<AppendMessage, "parentId">): void;
152
+ protected abstract handleSend(
153
+ message: Omit<AppendMessage, "parentId" | "sourceId">,
154
+ ): void;
153
155
  protected abstract handleCancel(): void;
154
156
 
155
157
  async addAttachment(file: File) {
@@ -159,6 +161,7 @@ export abstract class BaseComposerRuntimeCore
159
161
  const attachment = await adapter.add({ file });
160
162
 
161
163
  this._attachments = [...this._attachments, attachment as PendingAttachment];
164
+ this._notifyEventSubscribers("attachment_add");
162
165
  this._notifySubscribers();
163
166
  }
164
167
 
@@ -16,6 +16,7 @@ export class DefaultEditComposerRuntimeCore extends BaseComposerRuntimeCore {
16
16
  private _nonTextParts;
17
17
  private _previousText;
18
18
  private _parentId;
19
+ private _sourceId;
19
20
  constructor(
20
21
  private runtime: Omit<ThreadRuntimeCore, "composer"> & {
21
22
  adapters?: { attachments?: AttachmentAdapter | undefined } | undefined;
@@ -25,6 +26,7 @@ export class DefaultEditComposerRuntimeCore extends BaseComposerRuntimeCore {
25
26
  ) {
26
27
  super();
27
28
  this._parentId = parentId;
29
+ this._sourceId = message.id;
28
30
  this._previousText = getThreadMessageText(message);
29
31
  this.setText(this._previousText);
30
32
 
@@ -36,13 +38,16 @@ export class DefaultEditComposerRuntimeCore extends BaseComposerRuntimeCore {
36
38
  );
37
39
  }
38
40
 
39
- public async handleSend(message: Omit<AppendMessage, "parentId">) {
41
+ public async handleSend(
42
+ message: Omit<AppendMessage, "parentId" | "sourceId">,
43
+ ) {
40
44
  const text = getThreadMessageText(message as AppendMessage);
41
45
  if (text !== this._previousText) {
42
46
  this.runtime.append({
43
- ...(message as AppendMessage),
47
+ ...message,
44
48
  content: [...message.content, ...this._nonTextParts] as any,
45
49
  parentId: this._parentId,
50
+ sourceId: this._sourceId,
46
51
  });
47
52
  }
48
53
 
@@ -39,10 +39,13 @@ export class DefaultThreadComposerRuntimeCore
39
39
  });
40
40
  }
41
41
 
42
- public async handleSend(message: Omit<AppendMessage, "parentId">) {
42
+ public async handleSend(
43
+ message: Omit<AppendMessage, "parentId" | "sourceId">,
44
+ ) {
43
45
  this.runtime.append({
44
46
  ...(message as AppendMessage),
45
47
  parentId: this.runtime.messages.at(-1)?.id ?? null,
48
+ sourceId: null,
46
49
  });
47
50
  }
48
51
 
@@ -1,7 +1,7 @@
1
1
  import type { Attachment, PendingAttachment, Unsubscribe } from "../../types";
2
2
  import { MessageRole, RunConfig } from "../../types/AssistantTypes";
3
3
 
4
- export type ComposerRuntimeEventType = "send";
4
+ export type ComposerRuntimeEventType = "send" | "attachment_add";
5
5
 
6
6
  export type ComposerRuntimeCore = Readonly<{
7
7
  isEditing: boolean;
@@ -51,7 +51,8 @@ export type ThreadRuntimeEventType =
51
51
 
52
52
  export type StartRunConfig = {
53
53
  parentId: string | null;
54
- runConfig?: RunConfig | undefined;
54
+ sourceId: string | null;
55
+ runConfig: RunConfig;
55
56
  };
56
57
 
57
58
  export type ThreadRuntimeCore = Readonly<{
@@ -24,6 +24,12 @@ const ImageContentPartSchema = z.object({
24
24
  image: z.string(),
25
25
  });
26
26
 
27
+ const FileContentPartSchema = z.object({
28
+ type: z.literal("file"),
29
+ data: z.string(),
30
+ mimeType: z.string(),
31
+ });
32
+
27
33
  const Unstable_AudioContentPart = z.object({
28
34
  type: z.literal("audio"),
29
35
  audio: z.object({
@@ -49,6 +55,7 @@ const CoreUserMessageSchema = z.object({
49
55
  z.discriminatedUnion("type", [
50
56
  TextContentPartSchema,
51
57
  ImageContentPartSchema,
58
+ FileContentPartSchema,
52
59
  Unstable_AudioContentPart,
53
60
  ]),
54
61
  )
@@ -49,9 +49,16 @@ export const fromLanguageModelMessages = (
49
49
  throw new Error("Only images with URL data are supported");
50
50
  }
51
51
  case "file": {
52
- // TODO
53
- throw new Error("File content parts are not supported");
52
+ if (part.data instanceof URL) {
53
+ return {
54
+ type: "file",
55
+ data: part.data.href,
56
+ mimeType: part.mimeType,
57
+ };
58
+ }
59
+ throw new Error("Only files with URL data are supported");
54
60
  }
61
+
55
62
  default: {
56
63
  const unhandledType: never = type;
57
64
  throw new Error(`Unknown content part type: ${unhandledType}`);
@@ -1,4 +1,5 @@
1
1
  import {
2
+ LanguageModelV1FilePart,
2
3
  LanguageModelV1ImagePart,
3
4
  LanguageModelV1Message,
4
5
  LanguageModelV1TextPart,
@@ -90,7 +91,12 @@ export function toLanguageModelMessages(
90
91
  const msg: LanguageModelV1Message = {
91
92
  role: "user",
92
93
  content: content.map(
93
- (part): LanguageModelV1TextPart | LanguageModelV1ImagePart => {
94
+ (
95
+ part,
96
+ ):
97
+ | LanguageModelV1TextPart
98
+ | LanguageModelV1ImagePart
99
+ | LanguageModelV1FilePart => {
94
100
  const type = part.type;
95
101
  switch (type) {
96
102
  case "text": {
@@ -104,6 +110,14 @@ export function toLanguageModelMessages(
104
110
  };
105
111
  }
106
112
 
113
+ case "file": {
114
+ return {
115
+ type: "file",
116
+ data: new URL(part.data),
117
+ mimeType: part.mimeType,
118
+ };
119
+ }
120
+
107
121
  default: {
108
122
  const unhandledType: "ui" | "audio" = type;
109
123
  throw new Error(
@@ -11,11 +11,12 @@ import {
11
11
  ThreadUserMessage,
12
12
  ThreadSystemMessage,
13
13
  CompleteAttachment,
14
+ FileContentPart,
15
+ Unstable_AudioContentPart,
14
16
  } from "../../types";
15
17
  import {
16
18
  CoreToolCallContentPart,
17
19
  ThreadStep,
18
- Unstable_AudioContentPart,
19
20
  } from "../../types/AssistantTypes";
20
21
 
21
22
  export type ThreadMessageLike = {
@@ -25,6 +26,7 @@ export type ThreadMessageLike = {
25
26
  | readonly (
26
27
  | TextContentPart
27
28
  | ImageContentPart
29
+ | FileContentPart
28
30
  | Unstable_AudioContentPart
29
31
  | ToolCallContentPart<any, any>
30
32
  | CoreToolCallContentPart<any, any>
@@ -93,8 +95,10 @@ export const fromThreadMessageLike = (
93
95
  }
94
96
 
95
97
  default: {
96
- const unhandledType: "image" | "audio" = type;
97
- throw new Error(`Unknown content part type: ${unhandledType}`);
98
+ const unhandledType: "image" | "audio" | "file" = type;
99
+ throw new Error(
100
+ `Unsupported assistant content part type: ${unhandledType}`,
101
+ );
98
102
  }
99
103
  }
100
104
  })
@@ -118,11 +122,14 @@ export const fromThreadMessageLike = (
118
122
  case "ui":
119
123
  case "image":
120
124
  case "audio":
125
+ case "file":
121
126
  return part;
122
127
 
123
128
  default: {
124
129
  const unhandledType: "tool-call" = type;
125
- throw new Error(`Unknown content part type: ${unhandledType}`);
130
+ throw new Error(
131
+ `Unsupported user content part type: ${unhandledType}`,
132
+ );
126
133
  }
127
134
  }
128
135
  }),
@@ -2,14 +2,20 @@ import type { CoreMessage } from "../../types/AssistantTypes";
2
2
  import { BaseAssistantRuntimeCore } from "../core/BaseAssistantRuntimeCore";
3
3
  import { LocalThreadRuntimeCore } from "./LocalThreadRuntimeCore";
4
4
  import { LocalRuntimeOptionsBase } from "./LocalRuntimeOptions";
5
- import { fromCoreMessages } from "../edge/converters/fromCoreMessage";
6
5
  import { LocalThreadListRuntimeCore } from "./LocalThreadListRuntimeCore";
7
6
  import { ExportedMessageRepository } from "../utils/MessageRepository";
7
+ import { ThreadMessageLike } from "../external-store";
8
+ import { fromThreadMessageLike } from "../external-store/ThreadMessageLike";
9
+ import { generateId } from "../../internal";
10
+ import { getAutoStatus } from "../external-store/auto-status";
8
11
 
9
12
  const getExportFromInitialMessages = (
10
- initialMessages: readonly CoreMessage[],
13
+ initialMessages: readonly ThreadMessageLike[],
11
14
  ): ExportedMessageRepository => {
12
- const messages = fromCoreMessages(initialMessages);
15
+ const messages = initialMessages.map((i, idx) => {
16
+ const isLast = idx === initialMessages.length - 1;
17
+ return fromThreadMessageLike(i, generateId(), getAutoStatus(isLast, false));
18
+ });
13
19
  return {
14
20
  messages: messages.map((m, idx) => ({
15
21
  parentId: messages[idx - 1]?.id ?? null,
@@ -26,7 +32,7 @@ export class LocalRuntimeCore extends BaseAssistantRuntimeCore {
26
32
 
27
33
  constructor(
28
34
  options: LocalRuntimeOptionsBase,
29
- initialMessages: readonly CoreMessage[] | undefined,
35
+ initialMessages: readonly ThreadMessageLike[] | undefined,
30
36
  ) {
31
37
  super();
32
38
 
@@ -1,5 +1,5 @@
1
- import type { CoreMessage } from "../../types";
2
1
  import { AttachmentAdapter } from "../attachment/AttachmentAdapter";
2
+ import { ThreadMessageLike } from "../external-store";
3
3
  import { FeedbackAdapter } from "../feedback/FeedbackAdapter";
4
4
  import { SpeechSynthesisAdapter } from "../speech/SpeechAdapterTypes";
5
5
  import { ChatModelAdapter } from "./ChatModelAdapter";
@@ -16,7 +16,7 @@ export type LocalRuntimeOptionsBase = {
16
16
 
17
17
  // TODO align LocalRuntimeOptions with LocalRuntimeOptionsBase
18
18
  export type LocalRuntimeOptions = Omit<LocalRuntimeOptionsBase, "adapters"> & {
19
- initialMessages?: readonly CoreMessage[] | undefined;
19
+ initialMessages?: readonly ThreadMessageLike[] | undefined;
20
20
  adapters?: Omit<LocalRuntimeOptionsBase["adapters"], "chatModel"> | undefined;
21
21
  };
22
22
 
@@ -97,6 +97,7 @@ export class LocalThreadRuntimeCore
97
97
  if (startRun) {
98
98
  await this.startRun({
99
99
  parentId: newMessage.id,
100
+ sourceId: message.sourceId,
100
101
  runConfig: message.runConfig ?? {},
101
102
  });
102
103
  } else {