@assistant-ui/core 0.2.22 → 0.2.23
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/adapters/thread-history.d.ts +8 -0
- package/dist/adapters/thread-history.d.ts.map +1 -1
- package/dist/internal.d.ts +3 -2
- package/dist/internal.js +3 -2
- package/dist/model-context/frame/host.d.ts.map +1 -1
- package/dist/model-context/frame/host.js +36 -21
- package/dist/model-context/frame/host.js.map +1 -1
- package/dist/model-context/types.d.ts.map +1 -1
- package/dist/model-context/types.js +13 -4
- package/dist/model-context/types.js.map +1 -1
- package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts.map +1 -1
- package/dist/react/adapters/LocalStorageThreadListAdapter.js +1 -0
- package/dist/react/adapters/LocalStorageThreadListAdapter.js.map +1 -1
- package/dist/react/client/interactable-model-context.js +1 -0
- package/dist/react/client/interactable-model-context.js.map +1 -1
- package/dist/react/interactables-legacy/useInteractableState.js +1 -0
- package/dist/react/interactables-legacy/useInteractableState.js.map +1 -1
- package/dist/react/model-context/useInteractableState.js +1 -0
- package/dist/react/model-context/useInteractableState.js.map +1 -1
- package/dist/react/model-context/useInteractableVersions.js +1 -0
- package/dist/react/model-context/useInteractableVersions.js.map +1 -1
- package/dist/react/model-context/useToolArgsStatus.js +1 -0
- package/dist/react/model-context/useToolArgsStatus.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarCopy.js +1 -0
- package/dist/react/primitive-hooks/useActionBarCopy.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarEdit.js +1 -0
- package/dist/react/primitive-hooks/useActionBarEdit.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarFeedback.js +1 -0
- package/dist/react/primitive-hooks/useActionBarFeedback.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarReload.js +1 -0
- package/dist/react/primitive-hooks/useActionBarReload.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarSpeak.js +1 -0
- package/dist/react/primitive-hooks/useActionBarSpeak.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarStopSpeaking.js +1 -0
- package/dist/react/primitive-hooks/useActionBarStopSpeaking.js.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerNext.js +1 -0
- package/dist/react/primitive-hooks/useBranchPickerNext.js.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerPrevious.js +1 -0
- package/dist/react/primitive-hooks/useBranchPickerPrevious.js.map +1 -1
- package/dist/react/primitive-hooks/useComposerAddAttachment.js +1 -0
- package/dist/react/primitive-hooks/useComposerAddAttachment.js.map +1 -1
- package/dist/react/primitive-hooks/useComposerCancel.js +1 -0
- package/dist/react/primitive-hooks/useComposerCancel.js.map +1 -1
- package/dist/react/primitive-hooks/useComposerDictate.js +1 -0
- package/dist/react/primitive-hooks/useComposerDictate.js.map +1 -1
- package/dist/react/primitive-hooks/useComposerSend.js +1 -0
- package/dist/react/primitive-hooks/useComposerSend.js.map +1 -1
- package/dist/react/primitive-hooks/useEditComposerCancel.js +1 -0
- package/dist/react/primitive-hooks/useEditComposerCancel.js.map +1 -1
- package/dist/react/primitive-hooks/useEditComposerSend.js +1 -0
- package/dist/react/primitive-hooks/useEditComposerSend.js.map +1 -1
- package/dist/react/primitive-hooks/useMessageBranching.js +1 -0
- package/dist/react/primitive-hooks/useMessageBranching.js.map +1 -1
- package/dist/react/primitive-hooks/useMessageReload.js +1 -0
- package/dist/react/primitive-hooks/useMessageReload.js.map +1 -1
- package/dist/react/primitive-hooks/useSuggestionTrigger.js +1 -0
- package/dist/react/primitive-hooks/useSuggestionTrigger.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemArchive.js +1 -0
- package/dist/react/primitive-hooks/useThreadListItemArchive.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemDelete.js +1 -0
- package/dist/react/primitive-hooks/useThreadListItemDelete.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemTrigger.js +1 -0
- package/dist/react/primitive-hooks/useThreadListItemTrigger.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemUnarchive.js +1 -0
- package/dist/react/primitive-hooks/useThreadListItemUnarchive.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListLoadMore.js +1 -0
- package/dist/react/primitive-hooks/useThreadListLoadMore.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListNew.js +1 -0
- package/dist/react/primitive-hooks/useThreadListNew.js.map +1 -1
- package/dist/react/providers/TextMessagePartProvider.js +1 -0
- package/dist/react/providers/TextMessagePartProvider.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js +6 -4
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts +31 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js +11 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts +1 -1
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js +1 -1
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js.map +1 -1
- package/dist/react/runtimes/cloud/auiV0.d.ts +12 -1
- package/dist/react/runtimes/cloud/auiV0.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/auiV0.js +2 -1
- package/dist/react/runtimes/cloud/auiV0.js.map +1 -1
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.js +75 -73
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.js.map +1 -1
- package/dist/react/runtimes/external-message-converter.js +1 -1
- package/dist/react/runtimes/external-message-converter.js.map +1 -1
- package/dist/react/runtimes/useExternalStoreSharedOptions.js +1 -0
- package/dist/react/runtimes/useExternalStoreSharedOptions.js.map +1 -1
- package/dist/react/runtimes/useLocalRuntime.d.ts +0 -1
- package/dist/react/runtimes/useLocalRuntime.d.ts.map +1 -1
- package/dist/runtime/api/assistant-runtime.d.ts +1 -1
- package/dist/runtime/api/assistant-runtime.d.ts.map +1 -1
- package/dist/runtime/api/assistant-runtime.js +1 -1
- package/dist/runtime/api/assistant-runtime.js.map +1 -1
- package/dist/runtime/api/attachment-runtime.d.ts +1 -1
- package/dist/runtime/api/attachment-runtime.d.ts.map +1 -1
- package/dist/runtime/api/attachment-runtime.js +1 -1
- package/dist/runtime/api/attachment-runtime.js.map +1 -1
- package/dist/runtime/api/composer-runtime.d.ts +2 -2
- package/dist/runtime/api/composer-runtime.d.ts.map +1 -1
- package/dist/runtime/api/composer-runtime.js +2 -2
- package/dist/runtime/api/composer-runtime.js.map +1 -1
- package/dist/runtime/api/message-part-runtime.d.ts +4 -4
- package/dist/runtime/api/message-part-runtime.d.ts.map +1 -1
- package/dist/runtime/api/message-part-runtime.js +3 -3
- package/dist/runtime/api/message-part-runtime.js.map +1 -1
- package/dist/runtime/api/message-runtime.d.ts +1 -1
- package/dist/runtime/api/message-runtime.d.ts.map +1 -1
- package/dist/runtime/api/message-runtime.js +2 -2
- package/dist/runtime/api/message-runtime.js.map +1 -1
- package/dist/runtime/api/thread-list-item-runtime.d.ts +1 -1
- package/dist/runtime/api/thread-list-item-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-item-runtime.js +2 -2
- package/dist/runtime/api/thread-list-item-runtime.js.map +1 -1
- package/dist/runtime/api/thread-list-runtime.d.ts +1 -1
- package/dist/runtime/api/thread-list-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-runtime.js +1 -1
- package/dist/runtime/api/thread-list-runtime.js.map +1 -1
- package/dist/runtime/base/base-thread-runtime-core.d.ts +1 -1
- package/dist/runtime/base/base-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-thread-runtime-core.js +1 -1
- package/dist/runtime/base/base-thread-runtime-core.js.map +1 -1
- package/dist/runtime/base/default-edit-composer-runtime-core.d.ts +2 -2
- package/dist/runtime/base/default-edit-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/default-edit-composer-runtime-core.js +2 -2
- package/dist/runtime/base/default-edit-composer-runtime-core.js.map +1 -1
- package/dist/runtime/base/default-thread-composer-runtime-core.d.ts +1 -1
- package/dist/runtime/base/default-thread-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/default-thread-composer-runtime-core.js +1 -1
- package/dist/runtime/base/default-thread-composer-runtime-core.js.map +1 -1
- package/dist/runtime/utils/message-repository.d.ts.map +1 -1
- package/dist/runtime/utils/message-repository.js +4 -2
- package/dist/runtime/utils/message-repository.js.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts +1 -1
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.js +1 -1
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.js.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-runtime-core.js +12 -0
- package/dist/runtimes/external-store/external-store-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/internal.d.ts +2 -1
- package/dist/runtimes/internal.js +2 -1
- package/dist/runtimes/local/local-thread-runtime-core.d.ts +3 -0
- package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.js +44 -13
- package/dist/runtimes/local/local-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts +32 -27
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts.map +1 -1
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.js +2 -0
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.js.map +1 -1
- package/dist/store/clients/no-op-composer-client.js +1 -0
- package/dist/store/clients/no-op-composer-client.js.map +1 -1
- package/dist/store/runtime-clients/thread-list-runtime-client.js +1 -0
- package/dist/store/runtime-clients/thread-list-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/thread-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-runtime-client.js +17 -15
- package/dist/store/runtime-clients/thread-runtime-client.js.map +1 -1
- package/dist/store/scopes/thread.d.ts +1 -0
- package/dist/store/scopes/thread.d.ts.map +1 -1
- package/dist/subscribable/subscribable.d.ts +3 -3
- package/dist/subscribable/subscribable.d.ts.map +1 -1
- package/dist/subscribable/subscribable.js +3 -3
- package/dist/subscribable/subscribable.js.map +1 -1
- package/package.json +7 -7
- package/src/adapters/thread-history.ts +8 -0
- package/src/internal.ts +1 -1
- package/src/model-context/frame/host.test.ts +47 -0
- package/src/model-context/frame/host.ts +46 -19
- package/src/model-context/types.ts +16 -6
- package/src/react/adapters/LocalStorageThreadListAdapter.tsx +15 -5
- package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +20 -6
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.ts +34 -0
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts +26 -5
- package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.ts +5 -1
- package/src/react/runtimes/cloud/auiV0.ts +14 -0
- package/src/react/runtimes/cloud/useCloudThreadListAdapter.tsx +90 -88
- package/src/react/runtimes/external-message-converter.test.ts +346 -0
- package/src/react/runtimes/external-message-converter.ts +1 -1
- package/src/react/runtimes/useLocalRuntime.test.tsx +43 -0
- package/src/runtime/api/assistant-runtime.ts +4 -1
- package/src/runtime/api/attachment-runtime.ts +8 -2
- package/src/runtime/api/composer-runtime.ts +9 -5
- package/src/runtime/api/message-part-runtime.ts +10 -3
- package/src/runtime/api/message-runtime.ts +7 -2
- package/src/runtime/api/thread-list-item-runtime.ts +7 -2
- package/src/runtime/api/thread-list-runtime.ts +10 -2
- package/src/runtime/base/base-thread-runtime-core.ts +5 -1
- package/src/runtime/base/default-edit-composer-runtime-core.ts +14 -2
- package/src/runtime/base/default-thread-composer-runtime-core.ts +11 -1
- package/src/runtime/utils/message-repository.ts +19 -13
- package/src/runtimes/external-store/external-store-thread-list-runtime-core.ts +4 -1
- package/src/runtimes/external-store/external-store-thread-runtime-core.ts +15 -0
- package/src/runtimes/internal.ts +3 -0
- package/src/runtimes/local/local-thread-runtime-core.test.ts +596 -0
- package/src/runtimes/local/local-thread-runtime-core.ts +85 -21
- package/src/runtimes/local/should-continue.test.ts +122 -0
- package/src/runtimes/tool-invocations/ToolInvocationTracker.test.ts +9 -10
- package/src/runtimes/tool-invocations/ToolInvocationTracker.ts +38 -32
- package/src/store/clients/model-context-client.test.ts +21 -1
- package/src/store/runtime-clients/thread-runtime-client.ts +2 -1
- package/src/store/scopes/thread.ts +1 -0
- package/src/subscribable/subscribable.ts +16 -8
- package/src/tests/MessageRepository.test.ts +12 -0
- package/src/tests/RemoteThreadListThreadListRuntimeCore-switchToThread-position.test.ts +121 -0
- package/src/tests/auiV0Encode.test.ts +74 -0
- package/src/tests/base-composer-runtime-core.test.ts +422 -0
- package/src/tests/external-store-thread-list-runtime-core.test.ts +6 -6
- package/src/tests/external-store-thread-runtime-core-adapter.test.ts +575 -0
- package/src/tests/external-store-thread-runtime-core.test.ts +55 -1
- package/src/tests/OptimisticState-delete-crash.test.ts +0 -208
|
@@ -40,11 +40,18 @@ export class MessagePartRuntimeImpl implements MessagePartRuntime {
|
|
|
40
40
|
return this.contentBinding.path;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
+
private contentBinding: MessagePartSnapshotBinding;
|
|
44
|
+
private messageApi: MessageStateBinding | undefined;
|
|
45
|
+
private threadApi: ThreadRuntimeCoreBinding | undefined;
|
|
46
|
+
|
|
43
47
|
constructor(
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
48
|
+
contentBinding: MessagePartSnapshotBinding,
|
|
49
|
+
messageApi?: MessageStateBinding,
|
|
50
|
+
threadApi?: ThreadRuntimeCoreBinding,
|
|
47
51
|
) {
|
|
52
|
+
this.contentBinding = contentBinding;
|
|
53
|
+
this.messageApi = messageApi;
|
|
54
|
+
this.threadApi = threadApi;
|
|
48
55
|
this.__internal_bindMethods();
|
|
49
56
|
}
|
|
50
57
|
|
|
@@ -134,10 +134,15 @@ export class MessageRuntimeImpl implements MessageRuntime {
|
|
|
134
134
|
return this._core.path;
|
|
135
135
|
}
|
|
136
136
|
|
|
137
|
+
private _core: MessageStateBinding;
|
|
138
|
+
private _threadBinding: ThreadRuntimeCoreBinding;
|
|
139
|
+
|
|
137
140
|
constructor(
|
|
138
|
-
|
|
139
|
-
|
|
141
|
+
_core: MessageStateBinding,
|
|
142
|
+
_threadBinding: ThreadRuntimeCoreBinding,
|
|
140
143
|
) {
|
|
144
|
+
this._core = _core;
|
|
145
|
+
this._threadBinding = _threadBinding;
|
|
141
146
|
this.composer = new EditComposerRuntimeImpl(
|
|
142
147
|
new NestedSubscriptionSubject({
|
|
143
148
|
path: {
|
|
@@ -66,10 +66,15 @@ export class ThreadListItemRuntimeImpl implements ThreadListItemRuntime {
|
|
|
66
66
|
return this._core.path;
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
+
private _core: ThreadListItemStateBinding;
|
|
70
|
+
private _threadListBinding: ThreadListRuntimeCoreBinding;
|
|
71
|
+
|
|
69
72
|
constructor(
|
|
70
|
-
|
|
71
|
-
|
|
73
|
+
_core: ThreadListItemStateBinding,
|
|
74
|
+
_threadListBinding: ThreadListRuntimeCoreBinding,
|
|
72
75
|
) {
|
|
76
|
+
this._core = _core;
|
|
77
|
+
this._threadListBinding = _threadListBinding;
|
|
73
78
|
this.__internal_bindMethods();
|
|
74
79
|
}
|
|
75
80
|
|
|
@@ -98,13 +98,21 @@ export type ThreadListRuntimeCoreBinding = ThreadListRuntimeCore;
|
|
|
98
98
|
|
|
99
99
|
export class ThreadListRuntimeImpl implements ThreadListRuntime {
|
|
100
100
|
private _getState;
|
|
101
|
+
private _core: ThreadListRuntimeCoreBinding;
|
|
102
|
+
private _runtimeFactory: new (
|
|
103
|
+
binding: ThreadRuntimeCoreBinding,
|
|
104
|
+
threadListItemBinding: ThreadListItemRuntimeBinding,
|
|
105
|
+
) => ThreadRuntime;
|
|
106
|
+
|
|
101
107
|
constructor(
|
|
102
|
-
|
|
103
|
-
|
|
108
|
+
_core: ThreadListRuntimeCoreBinding,
|
|
109
|
+
_runtimeFactory: new (
|
|
104
110
|
binding: ThreadRuntimeCoreBinding,
|
|
105
111
|
threadListItemBinding: ThreadListItemRuntimeBinding,
|
|
106
112
|
) => ThreadRuntime = ThreadRuntimeImpl,
|
|
107
113
|
) {
|
|
114
|
+
this._core = _core;
|
|
115
|
+
this._runtimeFactory = _runtimeFactory;
|
|
108
116
|
const stateBinding = new LazyMemoizeSubject({
|
|
109
117
|
path: {},
|
|
110
118
|
getState: () => getThreadListState(_core),
|
|
@@ -113,7 +113,11 @@ export abstract class BaseThreadRuntimeCore implements ThreadRuntimeCore {
|
|
|
113
113
|
|
|
114
114
|
public readonly composer = new DefaultThreadComposerRuntimeCore(this);
|
|
115
115
|
|
|
116
|
-
|
|
116
|
+
private readonly _contextProvider: ModelContextProvider;
|
|
117
|
+
|
|
118
|
+
constructor(_contextProvider: ModelContextProvider) {
|
|
119
|
+
this._contextProvider = _contextProvider;
|
|
120
|
+
}
|
|
117
121
|
|
|
118
122
|
public getModelContext() {
|
|
119
123
|
return this._contextProvider.getModelContext();
|
|
@@ -31,8 +31,18 @@ export class DefaultEditComposerRuntimeCore extends BaseComposerRuntimeCore {
|
|
|
31
31
|
private _nonTextPassthrough: readonly ThreadMessage["content"][number][];
|
|
32
32
|
private _parentId: string | null;
|
|
33
33
|
private _sourceId: string | null;
|
|
34
|
+
private runtime: ThreadRuntimeCore & {
|
|
35
|
+
adapters?:
|
|
36
|
+
| {
|
|
37
|
+
attachments?: AttachmentAdapter | undefined;
|
|
38
|
+
dictation?: DictationAdapter | undefined;
|
|
39
|
+
}
|
|
40
|
+
| undefined;
|
|
41
|
+
};
|
|
42
|
+
private endEditCallback: () => void;
|
|
43
|
+
|
|
34
44
|
constructor(
|
|
35
|
-
|
|
45
|
+
runtime: ThreadRuntimeCore & {
|
|
36
46
|
adapters?:
|
|
37
47
|
| {
|
|
38
48
|
attachments?: AttachmentAdapter | undefined;
|
|
@@ -40,10 +50,12 @@ export class DefaultEditComposerRuntimeCore extends BaseComposerRuntimeCore {
|
|
|
40
50
|
}
|
|
41
51
|
| undefined;
|
|
42
52
|
},
|
|
43
|
-
|
|
53
|
+
endEditCallback: () => void,
|
|
44
54
|
{ parentId, message }: { parentId: string | null; message: ThreadMessage },
|
|
45
55
|
) {
|
|
46
56
|
super();
|
|
57
|
+
this.runtime = runtime;
|
|
58
|
+
this.endEditCallback = endEditCallback;
|
|
47
59
|
this._parentId = parentId;
|
|
48
60
|
this._sourceId = message.id;
|
|
49
61
|
this._previousText = getThreadMessageText(message);
|
|
@@ -46,8 +46,17 @@ export class DefaultThreadComposerRuntimeCore
|
|
|
46
46
|
return this.runtime.adapters?.dictation;
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
+
private runtime: Omit<ThreadRuntimeCore, "composer"> & {
|
|
50
|
+
adapters?:
|
|
51
|
+
| {
|
|
52
|
+
attachments?: AttachmentAdapter | undefined;
|
|
53
|
+
dictation?: DictationAdapter | undefined;
|
|
54
|
+
}
|
|
55
|
+
| undefined;
|
|
56
|
+
};
|
|
57
|
+
|
|
49
58
|
constructor(
|
|
50
|
-
|
|
59
|
+
runtime: Omit<ThreadRuntimeCore, "composer"> & {
|
|
51
60
|
adapters?:
|
|
52
61
|
| {
|
|
53
62
|
attachments?: AttachmentAdapter | undefined;
|
|
@@ -57,6 +66,7 @@ export class DefaultThreadComposerRuntimeCore
|
|
|
57
66
|
},
|
|
58
67
|
) {
|
|
59
68
|
super();
|
|
69
|
+
this.runtime = runtime;
|
|
60
70
|
this.connect();
|
|
61
71
|
}
|
|
62
72
|
|
|
@@ -89,7 +89,11 @@ const findHead = (
|
|
|
89
89
|
class CachedValue<T> {
|
|
90
90
|
private _value: T | null = null;
|
|
91
91
|
|
|
92
|
-
|
|
92
|
+
private func: () => T;
|
|
93
|
+
|
|
94
|
+
constructor(func: () => T) {
|
|
95
|
+
this.func = func;
|
|
96
|
+
}
|
|
93
97
|
|
|
94
98
|
get value() {
|
|
95
99
|
if (this._value === null) {
|
|
@@ -131,6 +135,20 @@ export class MessageRepository {
|
|
|
131
135
|
|
|
132
136
|
if (operation === "relink" && parentOrRoot === newParentOrRoot) return;
|
|
133
137
|
|
|
138
|
+
if (operation !== "cut") {
|
|
139
|
+
for (
|
|
140
|
+
let current: RepositoryMessage | null = newParent;
|
|
141
|
+
current;
|
|
142
|
+
current = current.prev
|
|
143
|
+
) {
|
|
144
|
+
if (current.current.id === child.current.id) {
|
|
145
|
+
throw new Error(
|
|
146
|
+
"MessageRepository(performOp/link): A message with the same id already exists in the parent tree. This error occurs if the same message id is found multiple times. This is likely an internal bug in assistant-ui.",
|
|
147
|
+
);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
134
152
|
if (operation !== "link") {
|
|
135
153
|
parentOrRoot.children = parentOrRoot.children.filter(
|
|
136
154
|
(m) => m !== child.current.id,
|
|
@@ -149,18 +167,6 @@ export class MessageRepository {
|
|
|
149
167
|
}
|
|
150
168
|
|
|
151
169
|
if (operation !== "cut") {
|
|
152
|
-
for (
|
|
153
|
-
let current: RepositoryMessage | null = newParent;
|
|
154
|
-
current;
|
|
155
|
-
current = current.prev
|
|
156
|
-
) {
|
|
157
|
-
if (current.current.id === child.current.id) {
|
|
158
|
-
throw new Error(
|
|
159
|
-
"MessageRepository(performOp/link): A message with the same id already exists in the parent tree. This error occurs if the same message id is found multiple times. This is likely an internal bug in assistant-ui.",
|
|
160
|
-
);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
|
|
164
170
|
newParentOrRoot.children = [
|
|
165
171
|
...newParentOrRoot.children,
|
|
166
172
|
child.current.id,
|
|
@@ -60,10 +60,13 @@ export class ExternalStoreThreadListRuntimeCore implements ThreadListRuntimeCore
|
|
|
60
60
|
return this._mainThreadId;
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
+
private threadFactory: ExternalStoreThreadFactory;
|
|
64
|
+
|
|
63
65
|
constructor(
|
|
64
66
|
adapter: ExternalStoreThreadListAdapter = {},
|
|
65
|
-
|
|
67
|
+
threadFactory: ExternalStoreThreadFactory,
|
|
66
68
|
) {
|
|
69
|
+
this.threadFactory = threadFactory;
|
|
67
70
|
this.__internal_setAdapter(adapter, true);
|
|
68
71
|
}
|
|
69
72
|
|
|
@@ -251,6 +251,21 @@ export class ExternalStoreThreadRuntimeCore
|
|
|
251
251
|
return newMessage;
|
|
252
252
|
});
|
|
253
253
|
|
|
254
|
+
const seenIds = new Set<string>();
|
|
255
|
+
const deduped: ThreadMessage[] = [];
|
|
256
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
257
|
+
const message = messages[i]!;
|
|
258
|
+
if (seenIds.has(message.id)) {
|
|
259
|
+
console.warn(
|
|
260
|
+
`ExternalStoreThreadRuntimeCore: duplicate message id "${message.id}" in the provided messages array; keeping the last occurrence.`,
|
|
261
|
+
);
|
|
262
|
+
continue;
|
|
263
|
+
}
|
|
264
|
+
seenIds.add(message.id);
|
|
265
|
+
deduped.push(message);
|
|
266
|
+
}
|
|
267
|
+
if (deduped.length !== messages.length) messages = deduped.reverse();
|
|
268
|
+
|
|
254
269
|
for (let i = 0; i < messages.length; i++) {
|
|
255
270
|
const message = messages[i]!;
|
|
256
271
|
const parent = messages[i - 1];
|
package/src/runtimes/internal.ts
CHANGED