@assistant-ui/core 0.2.7 → 0.2.9
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/attachment.d.ts.map +1 -1
- package/dist/adapters/speech.d.ts.map +1 -1
- package/dist/adapters/speech.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/duplicate-detection.d.ts.map +1 -1
- package/dist/internal.d.ts +2 -2
- package/dist/internal.js +2 -2
- package/dist/model-context/frame/host.d.ts.map +1 -1
- package/dist/model-context/frame/host.js.map +1 -1
- package/dist/model-context/frame/provider.d.ts.map +1 -1
- package/dist/model-context/frame/provider.js.map +1 -1
- package/dist/model-context/registry.d.ts.map +1 -1
- package/dist/model-context/tool.d.ts.map +1 -1
- package/dist/react/client/Interactables.js.map +1 -1
- package/dist/react/client/Tools.d.ts.map +1 -1
- package/dist/react/client/Tools.js +26 -15
- package/dist/react/client/Tools.js.map +1 -1
- package/dist/react/index.d.ts +6 -3
- package/dist/react/index.js +4 -1
- package/dist/react/model-context/define-toolkit.d.ts +20 -0
- package/dist/react/model-context/define-toolkit.d.ts.map +1 -0
- package/dist/react/model-context/define-toolkit.js +21 -0
- package/dist/react/model-context/define-toolkit.js.map +1 -0
- package/dist/react/model-context/hitl.d.ts +19 -0
- package/dist/react/model-context/hitl.d.ts.map +1 -0
- package/dist/react/model-context/hitl.js +22 -0
- package/dist/react/model-context/hitl.js.map +1 -0
- package/dist/react/model-context/toolbox.d.ts +29 -2
- package/dist/react/model-context/toolbox.d.ts.map +1 -1
- package/dist/react/model-context/toolbox.js +18 -0
- package/dist/react/model-context/toolbox.js.map +1 -0
- package/dist/react/model-context/useAssistantTool.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantTool.js +6 -3
- package/dist/react/model-context/useAssistantTool.js.map +1 -1
- package/dist/react/model-context/useAssistantToolUI.d.ts +6 -0
- package/dist/react/model-context/useAssistantToolUI.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantToolUI.js +4 -2
- package/dist/react/model-context/useAssistantToolUI.js.map +1 -1
- package/dist/react/model-context/useInlineRender.js.map +1 -1
- package/dist/react/primitives/message/MessageGroupedParts.d.ts +49 -7
- package/dist/react/primitives/message/MessageGroupedParts.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageGroupedParts.js +28 -3
- package/dist/react/primitives/message/MessageGroupedParts.js.map +1 -1
- package/dist/react/primitives/message/MessageParts.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageParts.js +2 -7
- package/dist/react/primitives/message/MessageParts.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
- package/dist/react/runtimes/RuntimeAdapterProvider.d.ts.map +1 -1
- package/dist/react/runtimes/RuntimeAdapterProvider.js +6 -5
- package/dist/react/runtimes/RuntimeAdapterProvider.js.map +1 -1
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.js.map +1 -1
- package/dist/react/runtimes/external-message-converter.d.ts.map +1 -1
- package/dist/react/runtimes/external-message-converter.js +1 -0
- package/dist/react/runtimes/external-message-converter.js.map +1 -1
- package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts +7 -0
- package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts.map +1 -0
- package/dist/react/runtimes/useExternalStoreSharedOptions.js +21 -0
- package/dist/react/runtimes/useExternalStoreSharedOptions.js.map +1 -0
- package/dist/react/runtimes/useLocalRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/useLocalRuntime.js.map +1 -1
- package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/useRemoteThreadListRuntime.js.map +1 -1
- package/dist/react/types/scopes/tools.d.ts +19 -2
- package/dist/react/types/scopes/tools.d.ts.map +1 -1
- package/dist/react/utils/groupParts.d.ts +32 -11
- package/dist/react/utils/groupParts.d.ts.map +1 -1
- package/dist/react/utils/groupParts.js +13 -6
- package/dist/react/utils/groupParts.js.map +1 -1
- package/dist/runtime/api/assistant-runtime.d.ts.map +1 -1
- package/dist/runtime/api/attachment-runtime.d.ts.map +1 -1
- package/dist/runtime/api/composer-runtime.d.ts.map +1 -1
- package/dist/runtime/api/message-part-runtime.d.ts.map +1 -1
- package/dist/runtime/api/message-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-item-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-runtime.d.ts.map +1 -1
- package/dist/runtime/base/base-assistant-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/default-edit-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/default-thread-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/utils/message-repository.d.ts +9 -1
- package/dist/runtime/utils/message-repository.d.ts.map +1 -1
- package/dist/runtime/utils/message-repository.js +34 -14
- package/dist/runtime/utils/message-repository.js.map +1 -1
- package/dist/runtime/utils/thread-message-like.d.ts +1 -0
- package/dist/runtime/utils/thread-message-like.d.ts.map +1 -1
- package/dist/runtime/utils/thread-message-like.js +2 -1
- package/dist/runtime/utils/thread-message-like.js.map +1 -1
- package/dist/runtimes/external-store/external-store-shared-options.d.ts +8 -0
- package/dist/runtimes/external-store/external-store-shared-options.d.ts.map +1 -0
- package/dist/runtimes/external-store/external-store-shared-options.js +11 -0
- package/dist/runtimes/external-store/external-store-shared-options.js.map +1 -0
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts +0 -2
- 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 -23
- package/dist/runtimes/external-store/external-store-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/external-store/thread-message-converter.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/optimistic-state.d.ts.map +1 -1
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts.map +1 -1
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.js.map +1 -1
- package/dist/subscribable/subscribable.d.ts.map +1 -1
- package/dist/tests/remote-thread-list-test-helpers.d.ts.map +1 -1
- package/dist/types/message.d.ts +6 -0
- package/dist/types/message.d.ts.map +1 -1
- package/dist/types/message.js.map +1 -1
- package/dist/utils/composite-context-provider.d.ts.map +1 -1
- package/dist/utils/id.d.ts +1 -3
- package/dist/utils/id.d.ts.map +1 -1
- package/dist/utils/id.js +1 -4
- package/dist/utils/id.js.map +1 -1
- package/package.json +10 -10
- package/src/adapters/speech.ts +0 -1
- package/src/index.ts +2 -0
- package/src/internal.ts +0 -2
- package/src/model-context/frame/host.ts +0 -1
- package/src/model-context/frame/provider.ts +0 -1
- package/src/react/client/Interactables.ts +0 -1
- package/src/react/client/Tools.ts +50 -25
- package/src/react/index.ts +10 -2
- package/src/react/model-context/define-toolkit.test.ts +13 -0
- package/src/react/model-context/define-toolkit.ts +23 -0
- package/src/react/model-context/hitl.ts +22 -0
- package/src/react/model-context/toolbox.ts +46 -1
- package/src/react/model-context/useAssistantTool.ts +8 -3
- package/src/react/model-context/useAssistantToolUI.ts +9 -2
- package/src/react/model-context/useInlineRender.ts +0 -1
- package/src/react/primitives/message/MessageGroupedParts.tsx +101 -12
- package/src/react/primitives/message/MessageParts.tsx +4 -7
- package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +0 -3
- package/src/react/runtimes/RuntimeAdapterProvider.tsx +12 -7
- package/src/react/runtimes/cloud/useCloudThreadListAdapter.tsx +0 -3
- package/src/react/runtimes/external-message-converter.ts +4 -0
- package/src/react/runtimes/useExternalStoreSharedOptions.ts +23 -0
- package/src/react/runtimes/useLocalRuntime.ts +0 -10
- package/src/react/runtimes/useRemoteThreadListRuntime.ts +0 -6
- package/src/react/types/scopes/tools.ts +20 -1
- package/src/react/utils/groupParts.ts +49 -18
- package/src/runtime/utils/message-repository.ts +57 -16
- package/src/runtime/utils/thread-message-like.ts +2 -0
- package/src/runtimes/external-store/external-store-shared-options.ts +18 -0
- package/src/runtimes/external-store/external-store-thread-runtime-core.ts +18 -33
- package/src/runtimes/tool-invocations/ToolInvocationTracker.ts +0 -1
- package/src/tests/MessageRepository.test.ts +83 -52
- package/src/tests/OptimisticState-list-race.test.ts +0 -4
- package/src/tests/external-store-thread-runtime-core.test.ts +105 -73
- package/src/tests/groupParts.test.ts +70 -0
- package/src/tests/remote-thread-list-isLoading.test.ts +0 -5
- package/src/types/message.ts +6 -0
- package/src/utils/id.ts +0 -4
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
//#region src/react/runtimes/useExternalStoreSharedOptions.ts
|
|
4
|
+
const useExternalStoreSharedOptions = (options) => {
|
|
5
|
+
const { isDisabled, isSendDisabled, unstable_capabilities, suggestions } = options;
|
|
6
|
+
return useMemo(() => ({
|
|
7
|
+
isDisabled,
|
|
8
|
+
isSendDisabled,
|
|
9
|
+
unstable_capabilities,
|
|
10
|
+
suggestions
|
|
11
|
+
}), [
|
|
12
|
+
isDisabled,
|
|
13
|
+
isSendDisabled,
|
|
14
|
+
unstable_capabilities,
|
|
15
|
+
suggestions
|
|
16
|
+
]);
|
|
17
|
+
};
|
|
18
|
+
//#endregion
|
|
19
|
+
export { useExternalStoreSharedOptions };
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=useExternalStoreSharedOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useExternalStoreSharedOptions.js","names":[],"sources":["../../../src/react/runtimes/useExternalStoreSharedOptions.ts"],"sourcesContent":["\"use client\";\n\nimport { useMemo } from \"react\";\nimport type { ExternalStoreSharedOptions } from \"../../runtimes/external-store/external-store-shared-options\";\n\nexport const useExternalStoreSharedOptions = (\n options: ExternalStoreSharedOptions,\n): ExternalStoreSharedOptions => {\n const { isDisabled, isSendDisabled, unstable_capabilities, suggestions } =\n options;\n return useMemo(\n () =>\n ({\n isDisabled,\n isSendDisabled,\n unstable_capabilities,\n suggestions,\n }) satisfies {\n [K in keyof Required<ExternalStoreSharedOptions>]: ExternalStoreSharedOptions[K];\n },\n [isDisabled, isSendDisabled, unstable_capabilities, suggestions],\n );\n};\n"],"mappings":";;;AAKA,MAAa,iCACX,YAC+B;CAC/B,MAAM,EAAE,YAAY,gBAAgB,uBAAuB,gBACzD;CACF,OAAO,eAEF;EACC;EACA;EACA;EACA;CACF,IAGF;EAAC;EAAY;EAAgB;EAAuB;CAAW,CACjE;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLocalRuntime.d.ts","names":[],"sources":["../../../src/react/runtimes/useLocalRuntime.ts"],"mappings":";;;;;;;;;;;;;KAcY,mBAAA,GAAsB,IAAA,CAAK,uBAAA;EACrC,KAAA,GAAQ,cAAA;EACR,eAAA,YAA2B,iBAAA;EAC3B,QAAA,GAAW,IAAA,CAAK,uBAAA;AAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"useLocalRuntime.d.ts","names":[],"sources":["../../../src/react/runtimes/useLocalRuntime.ts"],"mappings":";;;;;;;;;;;;;KAcY,mBAAA,GAAsB,IAAA,CAAK,uBAAA;EACrC,KAAA,GAAQ,cAAA;EACR,eAAA,YAA2B,iBAAA;EAC3B,QAAA,GAAW,IAAA,CAAK,uBAAA;AAAA;AAAA,cA+CL,wBAAA,aAAsC,mBAAA,EACjD,OAAA,EAAS,CAAA;;;;;;;;;;;;;;;;;;;cAuBE,eAAA,GACX,SAAA,EAAW,gBAAA;EACX,KAAA;EAAA,GAAA;AAAA,IAAuB,mBAAA,KACtB,gBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLocalRuntime.js","names":[],"sources":["../../../src/react/runtimes/useLocalRuntime.ts"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from \"react\";\nimport type {\n AssistantRuntime,\n ChatModelAdapter,\n ThreadMessageLike,\n} from \"../../index\";\nimport type { LocalRuntimeOptionsBase } from \"../../runtimes/local/local-runtime-options\";\nimport { AssistantRuntimeImpl, LocalRuntimeCore } from \"../../internal\";\nimport { useAuiState } from \"@assistant-ui/store\";\nimport { useRemoteThreadListRuntime } from \"./useRemoteThreadListRuntime\";\nimport { useCloudThreadListAdapter } from \"./cloud/useCloudThreadListAdapter\";\nimport { useRuntimeAdapters } from \"./RuntimeAdapterProvider\";\nimport type { AssistantCloud } from \"assistant-cloud\";\n\nexport type LocalRuntimeOptions = Omit<LocalRuntimeOptionsBase, \"adapters\"> & {\n cloud?: AssistantCloud | undefined;\n initialMessages?: readonly ThreadMessageLike[] | undefined;\n adapters?: Omit<LocalRuntimeOptionsBase[\"adapters\"], \"chatModel\"> | undefined;\n};\n\nconst useLocalThreadRuntime = (\n chatModel: ChatModelAdapter,\n { initialMessages, ...options }: LocalRuntimeOptions,\n): AssistantRuntime => {\n
|
|
1
|
+
{"version":3,"file":"useLocalRuntime.js","names":[],"sources":["../../../src/react/runtimes/useLocalRuntime.ts"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from \"react\";\nimport type {\n AssistantRuntime,\n ChatModelAdapter,\n ThreadMessageLike,\n} from \"../../index\";\nimport type { LocalRuntimeOptionsBase } from \"../../runtimes/local/local-runtime-options\";\nimport { AssistantRuntimeImpl, LocalRuntimeCore } from \"../../internal\";\nimport { useAuiState } from \"@assistant-ui/store\";\nimport { useRemoteThreadListRuntime } from \"./useRemoteThreadListRuntime\";\nimport { useCloudThreadListAdapter } from \"./cloud/useCloudThreadListAdapter\";\nimport { useRuntimeAdapters } from \"./RuntimeAdapterProvider\";\nimport type { AssistantCloud } from \"assistant-cloud\";\n\nexport type LocalRuntimeOptions = Omit<LocalRuntimeOptionsBase, \"adapters\"> & {\n cloud?: AssistantCloud | undefined;\n initialMessages?: readonly ThreadMessageLike[] | undefined;\n adapters?: Omit<LocalRuntimeOptionsBase[\"adapters\"], \"chatModel\"> | undefined;\n};\n\nconst useLocalThreadRuntime = (\n chatModel: ChatModelAdapter,\n { initialMessages, ...options }: LocalRuntimeOptions,\n): AssistantRuntime => {\n const { modelContext, ...threadListAdapters } = useRuntimeAdapters() ?? {};\n const opt = {\n ...options,\n adapters: {\n ...threadListAdapters,\n ...options.adapters,\n chatModel,\n },\n };\n\n const [runtime] = useState(() => new LocalRuntimeCore(opt, initialMessages));\n\n const threadIdRef = useRef<string | undefined>(undefined);\n threadIdRef.current = useAuiState((s) => s.threadListItem.remoteId);\n\n useEffect(() => {\n runtime.threads\n .getMainThreadRuntimeCore()\n .__internal_setGetThreadId(() => threadIdRef.current);\n }, [runtime]);\n\n useEffect(() => {\n return () => {\n runtime.threads.getMainThreadRuntimeCore().detach();\n };\n }, [runtime]);\n\n useEffect(() => {\n runtime.threads.getMainThreadRuntimeCore().__internal_setOptions(opt);\n runtime.threads.getMainThreadRuntimeCore().__internal_load();\n });\n\n useEffect(() => {\n if (!modelContext) return undefined;\n return runtime.registerModelContextProvider(modelContext);\n }, [modelContext, runtime]);\n\n return useMemo(() => new AssistantRuntimeImpl(runtime), [runtime]);\n};\n\nexport const splitLocalRuntimeOptions = <T extends LocalRuntimeOptions>(\n options: T,\n) => {\n const {\n cloud,\n initialMessages,\n maxSteps,\n adapters,\n unstable_humanToolNames,\n ...rest\n } = options;\n\n return {\n localRuntimeOptions: {\n cloud,\n initialMessages,\n maxSteps,\n adapters,\n unstable_humanToolNames,\n },\n otherOptions: rest,\n };\n};\n\nexport const useLocalRuntime = (\n chatModel: ChatModelAdapter,\n { cloud, ...options }: LocalRuntimeOptions = {},\n): AssistantRuntime => {\n const cloudAdapter = useCloudThreadListAdapter({ cloud });\n return useRemoteThreadListRuntime({\n runtimeHook: function RuntimeHook() {\n return useLocalThreadRuntime(chatModel, options);\n },\n adapter: cloudAdapter,\n allowNesting: true,\n });\n};\n"],"mappings":";;;;;;;;AAoBA,MAAM,yBACJ,WACA,EAAE,iBAAiB,GAAG,cACD;CACrB,MAAM,EAAE,cAAc,GAAG,uBAAuB,mBAAmB,KAAK,CAAC;CACzE,MAAM,MAAM;EACV,GAAG;EACH,UAAU;GACR,GAAG;GACH,GAAG,QAAQ;GACX;EACF;CACF;CAEA,MAAM,CAAC,WAAW,eAAe,IAAI,iBAAiB,KAAK,eAAe,CAAC;CAE3E,MAAM,cAAc,OAA2B,KAAA,CAAS;CACxD,YAAY,UAAU,aAAa,MAAM,EAAE,eAAe,QAAQ;CAElE,gBAAgB;EACd,QAAQ,QACL,yBAAyB,EACzB,gCAAgC,YAAY,OAAO;CACxD,GAAG,CAAC,OAAO,CAAC;CAEZ,gBAAgB;EACd,aAAa;GACX,QAAQ,QAAQ,yBAAyB,EAAE,OAAO;EACpD;CACF,GAAG,CAAC,OAAO,CAAC;CAEZ,gBAAgB;EACd,QAAQ,QAAQ,yBAAyB,EAAE,sBAAsB,GAAG;EACpE,QAAQ,QAAQ,yBAAyB,EAAE,gBAAgB;CAC7D,CAAC;CAED,gBAAgB;EACd,IAAI,CAAC,cAAc,OAAO,KAAA;EAC1B,OAAO,QAAQ,6BAA6B,YAAY;CAC1D,GAAG,CAAC,cAAc,OAAO,CAAC;CAE1B,OAAO,cAAc,IAAI,qBAAqB,OAAO,GAAG,CAAC,OAAO,CAAC;AACnE;AAEA,MAAa,4BACX,YACG;CACH,MAAM,EACJ,OACA,iBACA,UACA,UACA,yBACA,GAAG,SACD;CAEJ,OAAO;EACL,qBAAqB;GACnB;GACA;GACA;GACA;GACA;EACF;EACA,cAAc;CAChB;AACF;AAEA,MAAa,mBACX,WACA,EAAE,OAAO,GAAG,YAAiC,CAAC,MACzB;CAErB,OAAO,2BAA2B;EAChC,aAAa,SAAS,cAAc;GAClC,OAAO,sBAAsB,WAAW,OAAO;EACjD;EACA,SALmB,0BAA0B,EAAE,MAAM,CAKjC;EACpB,cAAc;CAChB,CAAC;AACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRemoteThreadListRuntime.d.ts","names":[],"sources":["../../../src/react/runtimes/useRemoteThreadListRuntime.ts"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"useRemoteThreadListRuntime.d.ts","names":[],"sources":["../../../src/react/runtimes/useRemoteThreadListRuntime.ts"],"mappings":";;;;cAwCa,0BAAA,GACX,OAAA,EAAS,uBAAA,KACR,gBAmDF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRemoteThreadListRuntime.js","names":[],"sources":["../../../src/react/runtimes/useRemoteThreadListRuntime.ts"],"sourcesContent":["import { useState, useEffect, useMemo, useRef, useCallback } from \"react\";\nimport { BaseAssistantRuntimeCore } from \"../../runtime/base/base-assistant-runtime-core\";\nimport { AssistantRuntimeImpl } from \"../../runtime/api/assistant-runtime\";\nimport type { RemoteThreadListOptions } from \"../../runtimes/remote-thread-list/types\";\nimport type { AssistantRuntimeCore } from \"../../runtime/interfaces/assistant-runtime-core\";\nimport type { AssistantRuntime } from \"../../runtime/api/assistant-runtime\";\nimport { RemoteThreadListThreadListRuntimeCore } from \"./RemoteThreadListThreadListRuntimeCore\";\nimport { useAui } from \"@assistant-ui/store\";\n\nclass RemoteThreadListRuntimeCore\n extends BaseAssistantRuntimeCore\n implements AssistantRuntimeCore\n{\n public readonly threads;\n\n constructor(options: RemoteThreadListOptions) {\n super();\n this.threads = new RemoteThreadListThreadListRuntimeCore(\n options,\n this._contextProvider,\n );\n }\n\n public get RenderComponent() {\n return this.threads.__internal_RenderComponent;\n }\n}\n\nconst useRemoteThreadListRuntimeImpl = (\n options: RemoteThreadListOptions,\n): AssistantRuntime => {\n
|
|
1
|
+
{"version":3,"file":"useRemoteThreadListRuntime.js","names":[],"sources":["../../../src/react/runtimes/useRemoteThreadListRuntime.ts"],"sourcesContent":["import { useState, useEffect, useMemo, useRef, useCallback } from \"react\";\nimport { BaseAssistantRuntimeCore } from \"../../runtime/base/base-assistant-runtime-core\";\nimport { AssistantRuntimeImpl } from \"../../runtime/api/assistant-runtime\";\nimport type { RemoteThreadListOptions } from \"../../runtimes/remote-thread-list/types\";\nimport type { AssistantRuntimeCore } from \"../../runtime/interfaces/assistant-runtime-core\";\nimport type { AssistantRuntime } from \"../../runtime/api/assistant-runtime\";\nimport { RemoteThreadListThreadListRuntimeCore } from \"./RemoteThreadListThreadListRuntimeCore\";\nimport { useAui } from \"@assistant-ui/store\";\n\nclass RemoteThreadListRuntimeCore\n extends BaseAssistantRuntimeCore\n implements AssistantRuntimeCore\n{\n public readonly threads;\n\n constructor(options: RemoteThreadListOptions) {\n super();\n this.threads = new RemoteThreadListThreadListRuntimeCore(\n options,\n this._contextProvider,\n );\n }\n\n public get RenderComponent() {\n return this.threads.__internal_RenderComponent;\n }\n}\n\nconst useRemoteThreadListRuntimeImpl = (\n options: RemoteThreadListOptions,\n): AssistantRuntime => {\n const [runtime] = useState(() => new RemoteThreadListRuntimeCore(options));\n useEffect(() => {\n runtime.threads.__internal_setOptions(options);\n runtime.threads.__internal_load();\n }, [runtime, options]);\n\n return useMemo(() => new AssistantRuntimeImpl(runtime), [runtime]);\n};\n\nexport const useRemoteThreadListRuntime = (\n options: RemoteThreadListOptions,\n): AssistantRuntime => {\n const runtimeHookRef = useRef(options.runtimeHook);\n runtimeHookRef.current = options.runtimeHook;\n\n // threadId/initialThreadId only affect the constructor; capture once via ref\n const startThreadIdRef = useRef(options.threadId ?? options.initialThreadId);\n\n const stableRuntimeHook = useCallback(() => {\n return runtimeHookRef.current();\n }, []);\n\n const stableOptions = useMemo<RemoteThreadListOptions>(\n () => ({\n adapter: options.adapter,\n allowNesting: options.allowNesting,\n initialThreadId: startThreadIdRef.current,\n runtimeHook: stableRuntimeHook,\n }),\n [options.adapter, options.allowNesting, stableRuntimeHook],\n );\n\n const aui = useAui();\n const isNested = aui.threadListItem.source !== null;\n\n if (isNested) {\n if (!stableOptions.allowNesting) {\n throw new Error(\n \"useRemoteThreadListRuntime cannot be nested inside another RemoteThreadListRuntime. \" +\n \"Set allowNesting: true to allow nesting (the inner runtime will become a no-op).\",\n );\n }\n\n // If allowNesting is true and already inside a thread list context,\n // just call the runtimeHook directly (no-op behavior)\n return stableRuntimeHook();\n }\n\n const runtime = useRemoteThreadListRuntimeImpl(stableOptions);\n\n const prevThreadIdRef = useRef(options.threadId);\n useEffect(() => {\n if (options.threadId === prevThreadIdRef.current) return;\n prevThreadIdRef.current = options.threadId;\n if (options.threadId) {\n runtime.threads.switchToThread(options.threadId).catch(() => {});\n } else {\n runtime.threads.switchToNewThread().catch(() => {});\n }\n }, [runtime, options.threadId]);\n\n return runtime;\n};\n"],"mappings":";;;;;;AASA,IAAM,8BAAN,cACU,yBAEV;CACE;CAEA,YAAY,SAAkC;EAC5C,MAAM;EACN,KAAK,UAAU,IAAI,sCACjB,SACA,KAAK,gBACP;CACF;CAEA,IAAW,kBAAkB;EAC3B,OAAO,KAAK,QAAQ;CACtB;AACF;AAEA,MAAM,kCACJ,YACqB;CACrB,MAAM,CAAC,WAAW,eAAe,IAAI,4BAA4B,OAAO,CAAC;CACzE,gBAAgB;EACd,QAAQ,QAAQ,sBAAsB,OAAO;EAC7C,QAAQ,QAAQ,gBAAgB;CAClC,GAAG,CAAC,SAAS,OAAO,CAAC;CAErB,OAAO,cAAc,IAAI,qBAAqB,OAAO,GAAG,CAAC,OAAO,CAAC;AACnE;AAEA,MAAa,8BACX,YACqB;CACrB,MAAM,iBAAiB,OAAO,QAAQ,WAAW;CACjD,eAAe,UAAU,QAAQ;CAGjC,MAAM,mBAAmB,OAAO,QAAQ,YAAY,QAAQ,eAAe;CAE3E,MAAM,oBAAoB,kBAAkB;EAC1C,OAAO,eAAe,QAAQ;CAChC,GAAG,CAAC,CAAC;CAEL,MAAM,gBAAgB,eACb;EACL,SAAS,QAAQ;EACjB,cAAc,QAAQ;EACtB,iBAAiB,iBAAiB;EAClC,aAAa;CACf,IACA;EAAC,QAAQ;EAAS,QAAQ;EAAc;CAAiB,CAC3D;CAKA,IAHY,OACO,EAAE,eAAe,WAAW,MAEjC;EACZ,IAAI,CAAC,cAAc,cACjB,MAAM,IAAI,MACR,sKAEF;EAKF,OAAO,kBAAkB;CAC3B;CAEA,MAAM,UAAU,+BAA+B,aAAa;CAE5D,MAAM,kBAAkB,OAAO,QAAQ,QAAQ;CAC/C,gBAAgB;EACd,IAAI,QAAQ,aAAa,gBAAgB,SAAS;EAClD,gBAAgB,UAAU,QAAQ;EAClC,IAAI,QAAQ,UACV,QAAQ,QAAQ,eAAe,QAAQ,QAAQ,EAAE,YAAY,CAAC,CAAC;OAE/D,QAAQ,QAAQ,kBAAkB,EAAE,YAAY,CAAC,CAAC;CAEtD,GAAG,CAAC,SAAS,QAAQ,QAAQ,CAAC;CAE9B,OAAO;AACT"}
|
|
@@ -5,13 +5,30 @@ import { ToolCallMessagePartComponent } from "../MessagePartComponentTypes.js";
|
|
|
5
5
|
type McpAppResourceOutput = {
|
|
6
6
|
readonly render: ToolCallMessagePartComponent;
|
|
7
7
|
};
|
|
8
|
+
/**
|
|
9
|
+
* A single tool-UI registration: the renderer plus its presentation options.
|
|
10
|
+
* Stored as a per-tool-name list so the name stays registered while any
|
|
11
|
+
* registration of it is mounted.
|
|
12
|
+
*/
|
|
13
|
+
type ToolRegistration = {
|
|
14
|
+
readonly render: ToolCallMessagePartComponent; /** Whether this UI renders standalone, outside the chain-of-thought trace. */
|
|
15
|
+
readonly standalone: boolean;
|
|
16
|
+
};
|
|
8
17
|
type ToolsState = {
|
|
9
|
-
|
|
18
|
+
/** Registered tool UIs (renderer + presentation options) keyed by tool name. */toolUIs: Record<string, readonly ToolRegistration[]>;
|
|
10
19
|
mcpApp?: McpAppResourceOutput | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* @deprecated Use {@link toolUIs} instead, whose entries carry the renderer
|
|
22
|
+
* alongside its presentation options. This component-only map is kept for
|
|
23
|
+
* back-compat and will be removed in v0.15.
|
|
24
|
+
*/
|
|
25
|
+
tools: Record<string, ToolCallMessagePartComponent[]>;
|
|
11
26
|
};
|
|
12
27
|
type ToolsMethods = {
|
|
13
28
|
getState(): ToolsState;
|
|
14
|
-
setToolUI(toolName: string, render: ToolCallMessagePartComponent
|
|
29
|
+
setToolUI(toolName: string, render: ToolCallMessagePartComponent, options?: {
|
|
30
|
+
standalone?: boolean;
|
|
31
|
+
}): Unsubscribe;
|
|
15
32
|
};
|
|
16
33
|
type ToolsClientSchema = {
|
|
17
34
|
methods: ToolsMethods;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","names":[],"sources":["../../../../src/react/types/scopes/tools.ts"],"mappings":";;;;KAGY,oBAAA;EAAA,SACD,MAAA,EAAQ,4BAA4B;AAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"tools.d.ts","names":[],"sources":["../../../../src/react/types/scopes/tools.ts"],"mappings":";;;;KAGY,oBAAA;EAAA,SACD,MAAA,EAAQ,4BAA4B;AAAA;AAD/C;;;;AAC+C;AAD/C,KASK,gBAAA;EAAA,SACM,MAAA,EAAQ,4BAA4B;WAEpC,UAAA;AAAA;AAAA,KAGC,UAAA;EAHD,gFAKT,OAAA,EAAS,MAAA,kBAAwB,gBAAA;EACjC,MAAA,GAAS,oBAAA;EAHC;;;;;EASV,KAAA,EAAO,MAAA,SAAe,4BAAA;AAAA;AAAA,KAGZ,YAAA;EACV,QAAA,IAAY,UAAA;EACZ,SAAA,CACE,QAAA,UACA,MAAA,EAAQ,4BAAA,EACR,OAAA;IAAY,UAAA;EAAA,IACX,WAAA;AAAA;AAAA,KAGO,iBAAA;EACV,OAAA,EAAS,YAAY;AAAA"}
|
|
@@ -1,6 +1,16 @@
|
|
|
1
|
+
import { ToolsState } from "../types/scopes/tools.js";
|
|
1
2
|
import { PartState } from "../../store/scopes/part.js";
|
|
2
3
|
|
|
3
4
|
//#region src/react/utils/groupParts.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* Registry context passed to a `groupBy` function as its second argument by
|
|
7
|
+
* `<MessagePrimitive.GroupedParts>`. Carries the live tool-UI registry so a
|
|
8
|
+
* `groupBy` can resolve registry-driven grouping (e.g. standalone tool calls)
|
|
9
|
+
* without the part itself having to carry that information.
|
|
10
|
+
*/
|
|
11
|
+
type GroupByContext = {
|
|
12
|
+
/** Tool UIs registered in the tool-UI registry, keyed by tool name. */readonly toolUIs?: ToolsState["toolUIs"];
|
|
13
|
+
};
|
|
4
14
|
/**
|
|
5
15
|
* Hierarchical adjacent-coalescing grouping for message parts.
|
|
6
16
|
*
|
|
@@ -21,21 +31,32 @@ import { PartState } from "../../store/scopes/part.js";
|
|
|
21
31
|
*/
|
|
22
32
|
declare const GROUPBY_MEMO_KEY: unique symbol;
|
|
23
33
|
/**
|
|
24
|
-
* Synthetic part-type
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
34
|
+
* Synthetic part-type keys recognized by {@link groupPartByType}, in
|
|
35
|
+
* addition to real {@link PartState} types:
|
|
36
|
+
*
|
|
37
|
+
* - `"standalone-tool-call"` — a tool-call whose UI should be presented on its
|
|
38
|
+
* own, outside the chain-of-thought grouping. Matches MCP-app tool calls plus
|
|
39
|
+
* any tool-call whose registered UI opts into standalone display (human
|
|
40
|
+
* tools, the built-in generative-UI tool, and tools that set
|
|
41
|
+
* `display: "standalone"`). Resolving the registry-driven cases reads the
|
|
42
|
+
* {@link GroupByContext} passed to the `groupBy` function. Takes precedence
|
|
43
|
+
* over the `"tool-call"` entry.
|
|
44
|
+
* - `"mcp-app"` — **deprecated**, kept for back-compat. Matches only MCP-app
|
|
45
|
+
* tool calls. Prefer `"standalone-tool-call"`, which is a superset.
|
|
28
46
|
*/
|
|
29
|
-
type GroupPartType = PartState["type"] | "mcp-app";
|
|
47
|
+
type GroupPartType = PartState["type"] | "standalone-tool-call" | "mcp-app";
|
|
30
48
|
/**
|
|
31
49
|
* Build a `groupBy` from a `part.type → group-key path` lookup.
|
|
32
50
|
* Parts whose type isn't in the map are left ungrouped. The returned
|
|
33
51
|
* function carries a stable {@link GROUPBY_MEMO_KEY} fingerprint so
|
|
34
52
|
* `<MessagePrimitive.GroupedParts>` can memoize its tree across renders.
|
|
35
53
|
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
* the
|
|
54
|
+
* The synthetic `"standalone-tool-call"` key matches tool calls that should
|
|
55
|
+
* render outside the chain-of-thought grouping. MCP-app calls are detected from
|
|
56
|
+
* the part alone; the registry-driven cases (human tools, the generative-UI
|
|
57
|
+
* tool, `display: "standalone"` opt-ins) are resolved from the
|
|
58
|
+
* {@link GroupByContext} that `<MessagePrimitive.GroupedParts>` passes to the
|
|
59
|
+
* `groupBy` function — the helper needs nothing threaded into it.
|
|
39
60
|
*
|
|
40
61
|
* @example
|
|
41
62
|
* ```tsx
|
|
@@ -43,14 +64,14 @@ type GroupPartType = PartState["type"] | "mcp-app";
|
|
|
43
64
|
* groupBy={groupPartByType({
|
|
44
65
|
* reasoning: ["group-thought", "group-reasoning"],
|
|
45
66
|
* "tool-call": ["group-thought", "group-tool"],
|
|
46
|
-
* "
|
|
67
|
+
* "standalone-tool-call": [],
|
|
47
68
|
* })}
|
|
48
69
|
* >
|
|
49
70
|
* {({ part, children }) => { ... }}
|
|
50
71
|
* </MessagePrimitive.GroupedParts>
|
|
51
72
|
* ```
|
|
52
73
|
*/
|
|
53
|
-
declare const groupPartByType: <TKey extends `group-${string}`>(map: Partial<Readonly<Record<GroupPartType, readonly TKey[]>>>) => ((part: PartState) => readonly TKey[]);
|
|
74
|
+
declare const groupPartByType: <TKey extends `group-${string}`>(map: Partial<Readonly<Record<GroupPartType, readonly TKey[]>>>) => ((part: PartState, context?: GroupByContext) => readonly TKey[]);
|
|
54
75
|
type GroupNode = GroupNodeGroup | GroupNodePart;
|
|
55
76
|
interface GroupNodeGroup {
|
|
56
77
|
readonly type: "group";
|
|
@@ -76,5 +97,5 @@ interface GroupNodePart {
|
|
|
76
97
|
*/
|
|
77
98
|
declare const buildGroupTree: (paths: readonly (readonly string[])[]) => readonly GroupNode[];
|
|
78
99
|
//#endregion
|
|
79
|
-
export { GROUPBY_MEMO_KEY, GroupNode, GroupNodeGroup, GroupNodePart, buildGroupTree, groupPartByType };
|
|
100
|
+
export { GROUPBY_MEMO_KEY, GroupByContext, GroupNode, GroupNodeGroup, GroupNodePart, buildGroupTree, groupPartByType };
|
|
80
101
|
//# sourceMappingURL=groupParts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"groupParts.d.ts","names":[],"sources":["../../../src/react/utils/groupParts.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"groupParts.d.ts","names":[],"sources":["../../../src/react/utils/groupParts.ts"],"mappings":";;;;;;AAUA;;;;KAAY,cAAA;EAwBC,gFAtBF,OAAA,GAAU,UAAU;AAAA;;AAwB9B;AAAC;;;;AAgB4B;AA4B9B;;;;;;;;;;;cA9Ca,gBAAA;;;;;;;;;;;;;;;KAkBR,aAAA,GAAgB,SAAS;AA6D9B;;;;AAAsD;AAEtD;;;;;;;;;;;AAQuC;AAGvC;;;;;;;;AAKkB;AAlBlB,cAjCa,eAAA,mCACX,GAAA,EAAK,OAAA,CAAQ,QAAA,CAAS,MAAA,CAAO,aAAA,WAAwB,IAAA,YAClD,IAAA,EAAM,SAAA,EAAW,OAAA,GAAU,cAAA,cAA4B,IAAA;AAAA,KA+BhD,SAAA,GAAY,cAAA,GAAiB,aAAa;AAAA,UAErC,cAAA;EAAA,SACN,IAAA;EAsCU;EAAA,SApCV,GAAA;;WAEA,OAAA;;WAEA,OAAA;EAAA,SACA,QAAA,WAAmB,SAAS;AAAA;AAAA,UAGtB,aAAA;EAAA,SACN,IAAA;;WAEA,KAAA;;WAEA,OAAA;AAAA;;;;;;cAqBE,cAAA,GACX,KAAA,8CACU,SAAS"}
|
|
@@ -25,9 +25,12 @@ const GROUPBY_MEMO_KEY = Symbol.for("@assistant-ui/groupBy.memoKey");
|
|
|
25
25
|
* function carries a stable {@link GROUPBY_MEMO_KEY} fingerprint so
|
|
26
26
|
* `<MessagePrimitive.GroupedParts>` can memoize its tree across renders.
|
|
27
27
|
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* the
|
|
28
|
+
* The synthetic `"standalone-tool-call"` key matches tool calls that should
|
|
29
|
+
* render outside the chain-of-thought grouping. MCP-app calls are detected from
|
|
30
|
+
* the part alone; the registry-driven cases (human tools, the generative-UI
|
|
31
|
+
* tool, `display: "standalone"` opt-ins) are resolved from the
|
|
32
|
+
* {@link GroupByContext} that `<MessagePrimitive.GroupedParts>` passes to the
|
|
33
|
+
* `groupBy` function — the helper needs nothing threaded into it.
|
|
31
34
|
*
|
|
32
35
|
* @example
|
|
33
36
|
* ```tsx
|
|
@@ -35,7 +38,7 @@ const GROUPBY_MEMO_KEY = Symbol.for("@assistant-ui/groupBy.memoKey");
|
|
|
35
38
|
* groupBy={groupPartByType({
|
|
36
39
|
* reasoning: ["group-thought", "group-reasoning"],
|
|
37
40
|
* "tool-call": ["group-thought", "group-tool"],
|
|
38
|
-
* "
|
|
41
|
+
* "standalone-tool-call": [],
|
|
39
42
|
* })}
|
|
40
43
|
* >
|
|
41
44
|
* {({ part, children }) => { ... }}
|
|
@@ -44,8 +47,12 @@ const GROUPBY_MEMO_KEY = Symbol.for("@assistant-ui/groupBy.memoKey");
|
|
|
44
47
|
*/
|
|
45
48
|
const groupPartByType = (map) => {
|
|
46
49
|
const lookup = map;
|
|
47
|
-
const fn = ((part) => {
|
|
48
|
-
if (part.type === "tool-call"
|
|
50
|
+
const fn = ((part, context) => {
|
|
51
|
+
if (part.type === "tool-call") {
|
|
52
|
+
const isMcpApp = isMcpAppUri(part.mcp?.app?.resourceUri);
|
|
53
|
+
if ((isMcpApp || (context?.toolUIs?.[part.toolName]?.[0]?.standalone ?? false)) && lookup["standalone-tool-call"] !== void 0) return lookup["standalone-tool-call"];
|
|
54
|
+
if (isMcpApp && lookup["mcp-app"] !== void 0) return lookup["mcp-app"];
|
|
55
|
+
}
|
|
49
56
|
return lookup[part.type] ?? [];
|
|
50
57
|
});
|
|
51
58
|
const sortedEntries = Object.keys(map).sort().map((k) => [k, map[k]]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"groupParts.js","names":[],"sources":["../../../src/react/utils/groupParts.ts"],"sourcesContent":["import { isMcpAppUri } from \"../../types/message\";\nimport type { PartState } from \"../../store/scopes/part\";\n\n/**\n * Hierarchical adjacent-coalescing grouping for message parts.\n *\n * Given a group path per part (from `groupBy`), builds a tree of group\n * nodes wrapping individual parts. Adjacent parts sharing a path prefix\n * coalesce into the same group; ungrouped parts are direct children of\n * the root.\n *\n * Each node gets a structural `nodeKey` built from sibling indices\n * (`\"0.1.0\"`), stable under append-only streaming.\n */\n\n/**\n * Symbol attached to memoizable `groupBy` functions (e.g. those returned\n * by {@link groupPartByType}). Carries a string fingerprint of the config\n * so `MessagePrimitive.GroupedParts` can memo the tree on\n * `[parts, memoKey]` across renders — even when the helper call site\n * reconstructs the function each render.\n */\nexport const GROUPBY_MEMO_KEY: unique symbol = Symbol.for(\n \"@assistant-ui/groupBy.memoKey\",\n);\n\n/**\n * Synthetic part-type
|
|
1
|
+
{"version":3,"file":"groupParts.js","names":[],"sources":["../../../src/react/utils/groupParts.ts"],"sourcesContent":["import { isMcpAppUri } from \"../../types/message\";\nimport type { PartState } from \"../../store/scopes/part\";\nimport type { ToolsState } from \"../types/scopes/tools\";\n\n/**\n * Registry context passed to a `groupBy` function as its second argument by\n * `<MessagePrimitive.GroupedParts>`. Carries the live tool-UI registry so a\n * `groupBy` can resolve registry-driven grouping (e.g. standalone tool calls)\n * without the part itself having to carry that information.\n */\nexport type GroupByContext = {\n /** Tool UIs registered in the tool-UI registry, keyed by tool name. */\n readonly toolUIs?: ToolsState[\"toolUIs\"];\n};\n\n/**\n * Hierarchical adjacent-coalescing grouping for message parts.\n *\n * Given a group path per part (from `groupBy`), builds a tree of group\n * nodes wrapping individual parts. Adjacent parts sharing a path prefix\n * coalesce into the same group; ungrouped parts are direct children of\n * the root.\n *\n * Each node gets a structural `nodeKey` built from sibling indices\n * (`\"0.1.0\"`), stable under append-only streaming.\n */\n\n/**\n * Symbol attached to memoizable `groupBy` functions (e.g. those returned\n * by {@link groupPartByType}). Carries a string fingerprint of the config\n * so `MessagePrimitive.GroupedParts` can memo the tree on\n * `[parts, memoKey]` across renders — even when the helper call site\n * reconstructs the function each render.\n */\nexport const GROUPBY_MEMO_KEY: unique symbol = Symbol.for(\n \"@assistant-ui/groupBy.memoKey\",\n);\n\n/**\n * Synthetic part-type keys recognized by {@link groupPartByType}, in\n * addition to real {@link PartState} types:\n *\n * - `\"standalone-tool-call\"` — a tool-call whose UI should be presented on its\n * own, outside the chain-of-thought grouping. Matches MCP-app tool calls plus\n * any tool-call whose registered UI opts into standalone display (human\n * tools, the built-in generative-UI tool, and tools that set\n * `display: \"standalone\"`). Resolving the registry-driven cases reads the\n * {@link GroupByContext} passed to the `groupBy` function. Takes precedence\n * over the `\"tool-call\"` entry.\n * - `\"mcp-app\"` — **deprecated**, kept for back-compat. Matches only MCP-app\n * tool calls. Prefer `\"standalone-tool-call\"`, which is a superset.\n */\ntype GroupPartType = PartState[\"type\"] | \"standalone-tool-call\" | \"mcp-app\";\n\n/**\n * Build a `groupBy` from a `part.type → group-key path` lookup.\n * Parts whose type isn't in the map are left ungrouped. The returned\n * function carries a stable {@link GROUPBY_MEMO_KEY} fingerprint so\n * `<MessagePrimitive.GroupedParts>` can memoize its tree across renders.\n *\n * The synthetic `\"standalone-tool-call\"` key matches tool calls that should\n * render outside the chain-of-thought grouping. MCP-app calls are detected from\n * the part alone; the registry-driven cases (human tools, the generative-UI\n * tool, `display: \"standalone\"` opt-ins) are resolved from the\n * {@link GroupByContext} that `<MessagePrimitive.GroupedParts>` passes to the\n * `groupBy` function — the helper needs nothing threaded into it.\n *\n * @example\n * ```tsx\n * <MessagePrimitive.GroupedParts\n * groupBy={groupPartByType({\n * reasoning: [\"group-thought\", \"group-reasoning\"],\n * \"tool-call\": [\"group-thought\", \"group-tool\"],\n * \"standalone-tool-call\": [],\n * })}\n * >\n * {({ part, children }) => { ... }}\n * </MessagePrimitive.GroupedParts>\n * ```\n */\nexport const groupPartByType = <TKey extends `group-${string}`>(\n map: Partial<Readonly<Record<GroupPartType, readonly TKey[]>>>,\n): ((part: PartState, context?: GroupByContext) => readonly TKey[]) => {\n const lookup = map as Readonly<Record<string, readonly TKey[] | undefined>>;\n const fn = ((part, context) => {\n if (part.type === \"tool-call\") {\n const isMcpApp = isMcpAppUri(part.mcp?.app?.resourceUri);\n // Read the first registration's flag — the same one `resolveToolRender`\n // renders — so grouping and rendering never disagree for a tool name.\n const isStandalone =\n isMcpApp ||\n (context?.toolUIs?.[part.toolName]?.[0]?.standalone ?? false);\n if (isStandalone && lookup[\"standalone-tool-call\"] !== undefined) {\n return lookup[\"standalone-tool-call\"]!;\n }\n // TODO(v0.15): drop the deprecated \"mcp-app\" key (superseded by \"standalone-tool-call\").\n if (isMcpApp && lookup[\"mcp-app\"] !== undefined) {\n return lookup[\"mcp-app\"]!;\n }\n }\n return lookup[part.type] ?? [];\n }) as ((part: PartState, context?: GroupByContext) => readonly TKey[]) & {\n [GROUPBY_MEMO_KEY]?: string;\n };\n // Sort keys so the fingerprint is insensitive to map insertion order —\n // two maps with the same key/value pairs but different declaration order\n // would otherwise hash differently and invalidate the memo unnecessarily.\n const sortedKeys = Object.keys(map).sort();\n const sortedEntries = sortedKeys.map((k) => [k, map[k as keyof typeof map]]);\n fn[GROUPBY_MEMO_KEY] = `groupPartByType:${JSON.stringify(sortedEntries)}`;\n return fn;\n};\n\nexport type GroupNode = GroupNodeGroup | GroupNodePart;\n\nexport interface GroupNodeGroup {\n readonly type: \"group\";\n /** Current-level group key (last segment of the path). */\n readonly key: string;\n /** Structural React key: sibling-index path, e.g. `\"0.1.0\"`. */\n readonly nodeKey: string;\n /** Indices of parts in this subtree, in order. */\n readonly indices: readonly number[];\n readonly children: readonly GroupNode[];\n}\n\nexport interface GroupNodePart {\n readonly type: \"part\";\n /** Index of the part in the message. */\n readonly index: number;\n /** Structural React key: sibling-index path within parent. */\n readonly nodeKey: string;\n}\n\ninterface BuildFrame {\n key: string;\n nodeKey: string;\n indices: number[];\n children: GroupNode[];\n nextChildIdx: number;\n}\n\nconst makeChildNodeKey = (parent: BuildFrame): string => {\n const idx = parent.nextChildIdx++;\n return parent.nodeKey === \"\" ? String(idx) : `${parent.nodeKey}.${idx}`;\n};\n\n/**\n * Build the group tree from an array of normalized group paths.\n * `paths[i]` is the path for part `i`. The output tree contains one\n * `part` node per part and one `group` node per coalesced run.\n */\nexport const buildGroupTree = (\n paths: readonly (readonly string[])[],\n): readonly GroupNode[] => {\n const root: BuildFrame = {\n key: \"\",\n nodeKey: \"\",\n indices: [],\n children: [],\n nextChildIdx: 0,\n };\n const stack: BuildFrame[] = [root];\n\n const closeTop = (): void => {\n const closing = stack.pop()!;\n const parent = stack[stack.length - 1]!;\n parent.children.push({\n type: \"group\",\n key: closing.key,\n nodeKey: closing.nodeKey,\n indices: closing.indices,\n children: closing.children,\n });\n };\n\n for (let i = 0; i < paths.length; i++) {\n const path = paths[i]!;\n\n // Find the longest prefix shared between currently-open groups\n // (excluding root) and this part's path.\n let common = 0;\n while (\n common < stack.length - 1 &&\n common < path.length &&\n stack[common + 1]!.key === path[common]\n ) {\n common++;\n }\n\n // Close groups not on this path.\n while (stack.length - 1 > common) {\n closeTop();\n }\n\n // Open new groups down to the part's depth.\n while (stack.length - 1 < path.length) {\n const parent = stack[stack.length - 1]!;\n stack.push({\n key: path[stack.length - 1]!,\n nodeKey: makeChildNodeKey(parent),\n indices: [],\n children: [],\n nextChildIdx: 0,\n });\n }\n\n // Push this part as a leaf in the deepest open group (or root).\n const top = stack[stack.length - 1]!;\n top.children.push({\n type: \"part\",\n index: i,\n nodeKey: makeChildNodeKey(top),\n });\n\n // Record the part index in every open ancestor group.\n for (let s = 1; s < stack.length; s++) {\n stack[s]!.indices.push(i);\n }\n }\n\n // Close any still-open groups.\n while (stack.length > 1) {\n closeTop();\n }\n\n return root.children;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAkCA,MAAa,mBAAkC,OAAO,IACpD,+BACF;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CA,MAAa,mBACX,QACqE;CACrE,MAAM,SAAS;CACf,MAAM,OAAO,MAAM,YAAY;EAC7B,IAAI,KAAK,SAAS,aAAa;GAC7B,MAAM,WAAW,YAAY,KAAK,KAAK,KAAK,WAAW;GAMvD,KAFE,aACC,SAAS,UAAU,KAAK,YAAY,IAAI,cAAc,WACrC,OAAO,4BAA4B,KAAA,GACrD,OAAO,OAAO;GAGhB,IAAI,YAAY,OAAO,eAAe,KAAA,GACpC,OAAO,OAAO;EAElB;EACA,OAAO,OAAO,KAAK,SAAS,CAAC;CAC/B;CAOA,MAAM,gBADa,OAAO,KAAK,GAAG,EAAE,KACL,EAAE,KAAK,MAAM,CAAC,GAAG,IAAI,EAAsB,CAAC;CAC3E,GAAG,oBAAoB,mBAAmB,KAAK,UAAU,aAAa;CACtE,OAAO;AACT;AA+BA,MAAM,oBAAoB,WAA+B;CACvD,MAAM,MAAM,OAAO;CACnB,OAAO,OAAO,YAAY,KAAK,OAAO,GAAG,IAAI,GAAG,OAAO,QAAQ,GAAG;AACpE;;;;;;AAOA,MAAa,kBACX,UACyB;CACzB,MAAM,OAAmB;EACvB,KAAK;EACL,SAAS;EACT,SAAS,CAAC;EACV,UAAU,CAAC;EACX,cAAc;CAChB;CACA,MAAM,QAAsB,CAAC,IAAI;CAEjC,MAAM,iBAAuB;EAC3B,MAAM,UAAU,MAAM,IAAI;EAE1B,MADqB,MAAM,SAAS,GAC7B,SAAS,KAAK;GACnB,MAAM;GACN,KAAK,QAAQ;GACb,SAAS,QAAQ;GACjB,SAAS,QAAQ;GACjB,UAAU,QAAQ;EACpB,CAAC;CACH;CAEA,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;EACrC,MAAM,OAAO,MAAM;EAInB,IAAI,SAAS;EACb,OACE,SAAS,MAAM,SAAS,KACxB,SAAS,KAAK,UACd,MAAM,SAAS,GAAI,QAAQ,KAAK,SAEhC;EAIF,OAAO,MAAM,SAAS,IAAI,QACxB,SAAS;EAIX,OAAO,MAAM,SAAS,IAAI,KAAK,QAAQ;GACrC,MAAM,SAAS,MAAM,MAAM,SAAS;GACpC,MAAM,KAAK;IACT,KAAK,KAAK,MAAM,SAAS;IACzB,SAAS,iBAAiB,MAAM;IAChC,SAAS,CAAC;IACV,UAAU,CAAC;IACX,cAAc;GAChB,CAAC;EACH;EAGA,MAAM,MAAM,MAAM,MAAM,SAAS;EACjC,IAAI,SAAS,KAAK;GAChB,MAAM;GACN,OAAO;GACP,SAAS,iBAAiB,GAAG;EAC/B,CAAC;EAGD,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAChC,MAAM,GAAI,QAAQ,KAAK,CAAC;CAE5B;CAGA,OAAO,MAAM,SAAS,GACpB,SAAS;CAGX,OAAO,KAAK;AACd"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assistant-runtime.d.ts","names":[],"sources":["../../../src/runtime/api/assistant-runtime.ts"],"mappings":";;;;;;;KASY,gBAAA;;AAAZ;;WAIW,OAAA,EAAS,iBAAA;EAAA;;;EAAA,SAKT,MAAA,EAAQ,aAAA;EAOwD;;;;;EAAzE,4BAAA,CAA6B,QAAA,EAAU,oBAAA,GAAuB,WAAA;AAAA;AAAA,cAGnD,oBAAA,YAAgC,gBAAA;EAAA,iBAKP,KAAA;EAAA,SAJpB,OAAA,EAAO,qBAAA;EAAA,SAEP,OAAA,EAAS,aAAA;cAEW,KAAA,EAAO,oBAAA;EAAA,UAOjC,sBAAA
|
|
1
|
+
{"version":3,"file":"assistant-runtime.d.ts","names":[],"sources":["../../../src/runtime/api/assistant-runtime.ts"],"mappings":";;;;;;;KASY,gBAAA;;AAAZ;;WAIW,OAAA,EAAS,iBAAA;EAAA;;;EAAA,SAKT,MAAA,EAAQ,aAAA;EAOwD;;;;;EAAzE,4BAAA,CAA6B,QAAA,EAAU,oBAAA,GAAuB,WAAA;AAAA;AAAA,cAGnD,oBAAA,YAAgC,gBAAA;EAAA,iBAKP,KAAA;EAAA,SAJpB,OAAA,EAAO,qBAAA;EAAA,SAEP,OAAA,EAAS,aAAA;cAEW,KAAA,EAAO,oBAAA;EAAA,UAOjC,sBAAA;EAAA,IAKC,MAAA,IAAM,aAAA;EAIV,4BAAA,CAA6B,QAAA,EAAU,oBAAA,GAAoB,WAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment-runtime.d.ts","names":[],"sources":["../../../src/runtime/api/attachment-runtime.ts"],"mappings":";;;;;;;KAOK,sBAAA,GAAyB,kBAAkB;EAAA,SACrC,MAAM;AAAA;AAAA,KAGZ,6BAAA,GAAgC,UAAU;EAAA,SACpC,MAAM;AAAA;AAAA,KAGZ,2BAAA,GAA8B,UAAU;EAAA,SAClC,MAAM;AAAA;AAAA,KAGL,eAAA,GACR,6BAAA,GACA,2BAAA,GACA,sBAAA;AAAA,KAEC,yBAAA,gBAAyC,uBAAA,IAC5C,qBAAA,CACE,eAAA;EAAoB,MAAA,EAAQ,MAAA;AAAA,GAC5B,qBAAA;EAA0B,gBAAA,EAAkB,MAAA;AAAA;AAAA,KAG3C,uBAAA,GAA0B,eAAe;AAAA,KAElC,iBAAA,iBACM,uBAAA,GAA0B,uBAAA;EAAA,SAEjC,IAAA,EAAM,qBAAA;IAA0B,gBAAA,EAAkB,OAAA;EAAA;EAAA,SAClD,MAAA,EAAQ,OAAA;EACjB,QAAA,IAAY,eAAA;IAAoB,MAAA,EAAQ,OAAA;EAAA;EACxC,MAAA,IAAU,OAAA;EACV,SAAA,CAAU,QAAA,eAAuB,WAAA;AAAA;AAAA,uBAGb,qBAAA,gBACL,uBAAA,GAA0B,uBAAA,aAC9B,iBAAA;EAAA,QAOS,KAAA;EAAA,IANT,IAAA,
|
|
1
|
+
{"version":3,"file":"attachment-runtime.d.ts","names":[],"sources":["../../../src/runtime/api/attachment-runtime.ts"],"mappings":";;;;;;;KAOK,sBAAA,GAAyB,kBAAkB;EAAA,SACrC,MAAM;AAAA;AAAA,KAGZ,6BAAA,GAAgC,UAAU;EAAA,SACpC,MAAM;AAAA;AAAA,KAGZ,2BAAA,GAA8B,UAAU;EAAA,SAClC,MAAM;AAAA;AAAA,KAGL,eAAA,GACR,6BAAA,GACA,2BAAA,GACA,sBAAA;AAAA,KAEC,yBAAA,gBAAyC,uBAAA,IAC5C,qBAAA,CACE,eAAA;EAAoB,MAAA,EAAQ,MAAA;AAAA,GAC5B,qBAAA;EAA0B,gBAAA,EAAkB,MAAA;AAAA;AAAA,KAG3C,uBAAA,GAA0B,eAAe;AAAA,KAElC,iBAAA,iBACM,uBAAA,GAA0B,uBAAA;EAAA,SAEjC,IAAA,EAAM,qBAAA;IAA0B,gBAAA,EAAkB,OAAA;EAAA;EAAA,SAClD,MAAA,EAAQ,OAAA;EACjB,QAAA,IAAY,eAAA;IAAoB,MAAA,EAAQ,OAAA;EAAA;EACxC,MAAA,IAAU,OAAA;EACV,SAAA,CAAU,QAAA,eAAuB,WAAA;AAAA;AAAA,uBAGb,qBAAA,gBACL,uBAAA,GAA0B,uBAAA,aAC9B,iBAAA;EAAA,QAOS,KAAA;EAAA,IANT,IAAA,IAAI,qBAAA;;;eAIK,MAAA,IAAU,MAAA;cAEV,KAAA,EAAO,yBAAA,CAA0B,MAAA;EAAA,UAI3C,sBAAA;EAMH,QAAA,IAAY,eAAA;IAAoB,MAAA,EAAQ,MAAA;EAAA;EAAA,SAI/B,MAAA,IAAU,OAAA;EAEnB,SAAA,CAAU,QAAA,eAAoB,WAAA;AAAA;AAAA,uBAKxB,yBAAA,6DAEL,qBAAA,CAAsB,MAAA;EAAA,QAGpB,YAAA;cADR,IAAA,EAAM,yBAAA,CAA0B,MAAA,GACxB,YAAA,EAAc,0BAAA;EAKjB,MAAA,IAAM,OAAA;AAAA;AAAA,cAOF,mCAAA,SAA4C,yBAAyB;EAAA,IACrE,MAAM;AAAA;AAAA,cAKN,iCAAA,SAA0C,yBAAyB;EAAA,IACnE,MAAM;AAAA;AAAA,cAKN,4BAAA,SAAqC,qBAAqB;EAAA,IAC1D,MAAA;EAIJ,MAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composer-runtime.d.ts","names":[],"sources":["../../../src/runtime/api/composer-runtime.ts"],"mappings":";;;;;;;;;;KAyCK,iBAAA;EAAA,SACM,SAAA;EAAA,SACA,OAAA;EAAA,SACA,SAAA;EAAA,SACA,OAAA;EAAA,SAEA,IAAA;EAAA,SACA,IAAA,EAAM,WAAA;EAAA,SACN,WAAA,WAAsB,UAAA;EAAA,SACtB,SAAA,EAAW,SAAA;EAAA,SAEX,gBAAA;EAVA;;;;EAAA,SAgBA,SAAA,EAAW,cAAA;EAVX;;;;EAAA,SAgBA,KAAA,EAAO,SAAA;AAAA;AAAA,KAGN,mBAAA,GAAsB,iBAAiB;EAAA,SACxC,IAAI;AAAA;AAAA,KAGH,iBAAA,GAAoB,iBAAiB;EAAA,SACtC,IAAA;EAAA,SACA,QAAA;EAAA,SACA,QAAA;AAAA;AAAA,KAGC,aAAA,GAAgB,mBAAA,GAAsB,iBAAiB;AAAA,KAqDvD,eAAA;EAAA,SACD,IAAA,EAAM,mBAAA;EAAA,SACN,IAAA;EA7DC;;;EAkEV,QAAA,IAAY,aAAA;EAlEkB;;;;;AAGb;AAGnB;;;EAuEE,aAAA,CAAc,gBAAA,EAAkB,IAAA,GAAO,gBAAA,GAAmB,OAAA;EAvEO;AAqDnE;;;EAwBE,OAAA,CAAQ,IAAA;EAjBI;;;;EAuBZ,OAAA,CAAQ,IAAA,EAAM,WAAA;EAaU;;;;;;;;;;;EAAxB,YAAA,CAAa,SAAA,EAAW,SAAA;EA0DV;;;EArDd,KAAA,IAAS,OAAA;EA9CA;;;EAmDT,gBAAA,IAAoB,OAAA;EAnCY;;;;EAyChC,IAAA,CAAK,OAAA,GAAU,WAAA;EAnCP;;;EAwCR,MAAA;EArBA;;;;EA2BA,SAAA,CAAU,QAAA,eAAuB,WAAA;EAjBjC;;;;EAuBA,oBAAA,CAAqB,GAAA,WAAc,iBAAA;EAZnC;;;;EAkBA,cAAA;EANqB;;;EAWrB,aAAA;EAMA;;;;EAAA,QAAA,CAAS,KAAA,EAAO,SAAA;EAKM;;;EAAtB,WAAA,WAAsB,wBAAA,EACpB,KAAA,EAAO,CAAA,EACP,QAAA,EAAU,4BAAA,CAA6B,CAAA,IACtC,WAAA;AAAA;AAAA,uBAGiB,mBAAA,YAA+B,eAAA;EAAA,UAO7B,KAAA,EAAO,0BAAA;EAAA,IANlB,IAAA,
|
|
1
|
+
{"version":3,"file":"composer-runtime.d.ts","names":[],"sources":["../../../src/runtime/api/composer-runtime.ts"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-part-runtime.d.ts","names":[],"sources":["../../../src/runtime/api/message-part-runtime.ts"],"mappings":";;;;;;;;;KAaY,gBAAA,IACR,qBAAA,GACA,0BAAA;EAAA,SAEO,MAAA,EAAQ,iBAAA,GAAoB,yBAAA;AAAA;AAAA,KAGlC,0BAAA,GAA6B,qBAAA,CAChC,gBAAA,EACA,sBAAA;AAAA,KAGU,kBAAA;EACV,aAAA,CAAc,MAAA,QAAc,YAAA;EAC5B,cAAA,CAAe,OAAA;EACf,qBAAA,CAAsB,QAAA;IAAY,QAAA;IAAmB,MAAA;EAAA;EAAA,SAE5C,IAAA,EAAM,sBAAA;EACf,QAAA,IAAY,gBAAA;EACZ,SAAA,CAAU,QAAA,eAAuB,WAAA;AAAA;AAAA,cAGtB,sBAAA,YAAkC,kBAAA;EAAA,QAMnC,cAAA;EAAA,QACA,UAAA;EAAA,QACA,SAAA;EAAA,IAPC,IAAA,
|
|
1
|
+
{"version":3,"file":"message-part-runtime.d.ts","names":[],"sources":["../../../src/runtime/api/message-part-runtime.ts"],"mappings":";;;;;;;;;KAaY,gBAAA,IACR,qBAAA,GACA,0BAAA;EAAA,SAEO,MAAA,EAAQ,iBAAA,GAAoB,yBAAA;AAAA;AAAA,KAGlC,0BAAA,GAA6B,qBAAA,CAChC,gBAAA,EACA,sBAAA;AAAA,KAGU,kBAAA;EACV,aAAA,CAAc,MAAA,QAAc,YAAA;EAC5B,cAAA,CAAe,OAAA;EACf,qBAAA,CAAsB,QAAA;IAAY,QAAA;IAAmB,MAAA;EAAA;EAAA,SAE5C,IAAA,EAAM,sBAAA;EACf,QAAA,IAAY,gBAAA;EACZ,SAAA,CAAU,QAAA,eAAuB,WAAA;AAAA;AAAA,cAGtB,sBAAA,YAAkC,kBAAA;EAAA,QAMnC,cAAA;EAAA,QACA,UAAA;EAAA,QACA,SAAA;EAAA,IAPC,IAAA,IAAI,sBAAA;cAKL,cAAA,EAAgB,0BAAA,EAChB,UAAA,GAAa,mBAAA,cACb,SAAA,GAAY,wBAAA;EAAA,UAKZ,sBAAA;EAQH,QAAA,IAAQ,gBAAA;EAIR,aAAA,CAAc,MAAA,QAAc,YAAA;EA8B5B,cAAA,CAAe,OAAA;EAgBf,qBAAA,CAAsB,QAAA;IAC3B,QAAA;IACA,MAAA;EAAA;EAsBK,SAAA,CAAU,QAAA,eAAoB,WAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-runtime.d.ts","names":[],"sources":["../../../src/runtime/api/message-runtime.ts"],"mappings":";;;;;;;;;;;cAsCa,mBAAA,GACX,OAAA,EAAS,aAAA,EACT,SAAA,UACA,IAAA,EAAM,qBAAA,GAAwB,0BAAA,KAC7B,yBAAA;AAAA,KAkCS,YAAA,GAAe,aAAA;EAAA,SAChB,QAAA;WAEA,KAAA;EAAA,SACA,MAAA;EAAA,SAEA,YAAA;EAAA,SACA,WAAA;EA3BV;;;EAAA,SAgCU,MAAA,EAAQ,WAAW;AAAA;AAAA,KAKzB,YAAA;EACH,SAAA,GAAY,SAAS;AAAA;AAAA,KAGX,cAAA;EAAA,SACD,IAAA,EAAM,kBAAA;EAAA,SAEN,QAAA,EAAU,mBAAA;EAEnB,QAAA,IAAY,YAAA;EACZ,MAAA,CAAO,MAAA,GAAS,YAAA;EAfY;;;EAmB5B,KAAA;EA3BS;;;EA+BT,YAAA;EACA,cAAA;IAAiB;EAAA;IAAU,IAAA;EAAA;EAC3B,cAAA;IACE,QAAA;IACA;EAAA;IAEA,QAAA;IACA,QAAA;EAAA;EAEF,oBAAA;EAEA,SAAA,CAAU,QAAA,eAAuB,WAAA;EAEjC,qBAAA,CAAsB,GAAA,WAAc,kBAAA;EACpC,0BAAA,CAA2B,UAAA,WAAqB,kBAAA;EAEhD,oBAAA,CAAqB,GAAA,WAAc,iBAAA;IAAsB,MAAA;EAAA;AAAA;AAAA,cAG9C,kBAAA,YAA8B,cAAA;EAAA,QAM/B,KAAA;EAAA,QACA,cAAA;EAAA,IANC,IAAA,
|
|
1
|
+
{"version":3,"file":"message-runtime.d.ts","names":[],"sources":["../../../src/runtime/api/message-runtime.ts"],"mappings":";;;;;;;;;;;cAsCa,mBAAA,GACX,OAAA,EAAS,aAAA,EACT,SAAA,UACA,IAAA,EAAM,qBAAA,GAAwB,0BAAA,KAC7B,yBAAA;AAAA,KAkCS,YAAA,GAAe,aAAA;EAAA,SAChB,QAAA;WAEA,KAAA;EAAA,SACA,MAAA;EAAA,SAEA,YAAA;EAAA,SACA,WAAA;EA3BV;;;EAAA,SAgCU,MAAA,EAAQ,WAAW;AAAA;AAAA,KAKzB,YAAA;EACH,SAAA,GAAY,SAAS;AAAA;AAAA,KAGX,cAAA;EAAA,SACD,IAAA,EAAM,kBAAA;EAAA,SAEN,QAAA,EAAU,mBAAA;EAEnB,QAAA,IAAY,YAAA;EACZ,MAAA,CAAO,MAAA,GAAS,YAAA;EAfY;;;EAmB5B,KAAA;EA3BS;;;EA+BT,YAAA;EACA,cAAA;IAAiB;EAAA;IAAU,IAAA;EAAA;EAC3B,cAAA;IACE,QAAA;IACA;EAAA;IAEA,QAAA;IACA,QAAA;EAAA;EAEF,oBAAA;EAEA,SAAA,CAAU,QAAA,eAAuB,WAAA;EAEjC,qBAAA,CAAsB,GAAA,WAAc,kBAAA;EACpC,0BAAA,CAA2B,UAAA,WAAqB,kBAAA;EAEhD,oBAAA,CAAqB,GAAA,WAAc,iBAAA;IAAsB,MAAA;EAAA;AAAA;AAAA,cAG9C,kBAAA,YAA8B,cAAA;EAAA,QAM/B,KAAA;EAAA,QACA,cAAA;EAAA,IANC,IAAA,IAAI,kBAAA;cAKL,KAAA,EAAO,mBAAA,EACP,cAAA,EAAgB,wBAAA;EAAA,UAkBhB,sBAAA;EAAA,SAeM,QAAA,EAAQ,uBAAA;EAAA,QAEhB,2BAAA;EAMD,QAAA,IAAQ,aAAA;IAAA;;;;;;;EAIR,MAAA,CAAO,YAAA,GAAc,YAAA;EAkBrB,KAAA;EAKA,YAAA;EAUA,cAAA;IAAiB;EAAA;IAAU,IAAA;EAAA;EAQ3B,cAAA;IACL,QAAA;IACA;EAAA;IAEA,QAAA;IACA,QAAA;EAAA;EAsBK,oBAAA;EAIA,SAAA,CAAU,QAAA,eAAoB,WAAA;EAI9B,qBAAA,CAAsB,GAAA,WAAW,sBAAA;EAmBjC,0BAAA,CAA2B,UAAA,WAAkB,sBAAA;EA0B7C,oBAAA,CAAqB,GAAA,WAAW,4BAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread-list-item-runtime.d.ts","names":[],"sources":["../../../src/runtime/api/thread-list-item-runtime.ts"],"mappings":";;;;;;;;KAKY,0BAAA;;;;AAAZ;;EAME,UAAA,EAAY,MAAA;EAMQ;;;;;EAApB,YAAA,EAAc,MAAM;AAAA;AAAA,KAGV,uBAAA,SAAgC,0BAA0B;AAAA,KAE1D,2BAAA,WAAsC,uBAAA,KAChD,OAAA,EAAS,0BAAA,CAA2B,CAAA;AAAA,KAQ1B,qBAAA;EAAA,SACD,IAAA,EAAM,yBAAA;EACf,QAAA,IAAY,mBAAA;EAEZ,UAAA,IAAc,OAAA;IAAU,QAAA;IAAkB,UAAA;EAAA;EAC1C,aAAA,IAAiB,OAAA;EAEjB,QAAA,CAAS,OAAA;IAAY,SAAA;EAAA,IAAwB,OAAA;EAC7C,MAAA,CAAO,QAAA,WAAmB,OAAA;EAC1B,OAAA,IAAW,OAAA;EACX,SAAA,IAAa,OAAA;EACb,MAAA,IAAU,OAAA;EAEV,MAAA;EAEA,SAAA,CAAU,QAAA,eAAuB,WAAA;EAEjC,WAAA,WAAsB,uBAAA,EACpB,KAAA,EAAO,CAAA,EACP,QAAA,EAAU,2BAAA,CAA4B,CAAA,IACrC,WAAA;EAEH,qBAAA,IAAyB,qBAAA;AAAA;AAAA,KAGf,0BAAA,GAA6B,qBAAA,CACvC,mBAAA,EACA,yBAAA;AAAA,cAGW,yBAAA,YAAqC,qBAAA;EAAA,QAMtC,KAAA;EAAA,QACA,kBAAA;EAAA,IANC,IAAA,
|
|
1
|
+
{"version":3,"file":"thread-list-item-runtime.d.ts","names":[],"sources":["../../../src/runtime/api/thread-list-item-runtime.ts"],"mappings":";;;;;;;;KAKY,0BAAA;;;;AAAZ;;EAME,UAAA,EAAY,MAAA;EAMQ;;;;;EAApB,YAAA,EAAc,MAAM;AAAA;AAAA,KAGV,uBAAA,SAAgC,0BAA0B;AAAA,KAE1D,2BAAA,WAAsC,uBAAA,KAChD,OAAA,EAAS,0BAAA,CAA2B,CAAA;AAAA,KAQ1B,qBAAA;EAAA,SACD,IAAA,EAAM,yBAAA;EACf,QAAA,IAAY,mBAAA;EAEZ,UAAA,IAAc,OAAA;IAAU,QAAA;IAAkB,UAAA;EAAA;EAC1C,aAAA,IAAiB,OAAA;EAEjB,QAAA,CAAS,OAAA;IAAY,SAAA;EAAA,IAAwB,OAAA;EAC7C,MAAA,CAAO,QAAA,WAAmB,OAAA;EAC1B,OAAA,IAAW,OAAA;EACX,SAAA,IAAa,OAAA;EACb,MAAA,IAAU,OAAA;EAEV,MAAA;EAEA,SAAA,CAAU,QAAA,eAAuB,WAAA;EAEjC,WAAA,WAAsB,uBAAA,EACpB,KAAA,EAAO,CAAA,EACP,QAAA,EAAU,2BAAA,CAA4B,CAAA,IACrC,WAAA;EAEH,qBAAA,IAAyB,qBAAA;AAAA;AAAA,KAGf,0BAAA,GAA6B,qBAAA,CACvC,mBAAA,EACA,yBAAA;AAAA,cAGW,yBAAA,YAAqC,qBAAA;EAAA,QAMtC,KAAA;EAAA,QACA,kBAAA;EAAA,IANC,IAAA,IAAI,yBAAA;cAKL,KAAA,EAAO,0BAAA,EACP,kBAAA,EAAoB,4BAAA;EAAA,UAKpB,sBAAA;EAcH,QAAA,IAAY,mBAAA;EAIZ,QAAA,CAAS,OAAA;IAAY,SAAA;EAAA,IAAwB,OAAA;EAK7C,MAAA,CAAO,QAAA,WAAmB,OAAA;EAM1B,OAAA,IAAW,OAAA;EAMX,SAAA,IAAa,OAAA;EAMb,MAAA,IAAU,OAAA;EAMV,UAAA,IAAc,OAAA;IACnB,QAAA;IACA,UAAA;EAAA;EAMK,aAAA,IAAiB,OAAA;EAKjB,WAAA,WAAsB,uBAAA,EAC3B,KAAA,EAAO,CAAA,EACP,QAAA,EAAU,2BAAA,CAA4B,CAAA,IAAE,WAAA;EAkBnC,SAAA,CAAU,QAAA,eAAuB,WAAA;EAIjC,MAAA;EAMA,qBAAA,IAAyB,qBAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread-list-runtime.d.ts","names":[],"sources":["../../../src/runtime/api/thread-list-runtime.ts"],"mappings":";;;;;;;KAwBY,eAAA;EAAA,SACD,YAAA;EAAA,SACA,WAAA;EAAA,SACA,SAAA;EAAA,SACA,iBAAA;EAAA,SACA,SAAA;EAAA,SACA,aAAA;EAAA,SACA,OAAA;EAAA,SACA,WAAA,EAAa,QAAA,CACpB,MAAA,SAAe,IAAA,CAAK,mBAAA;AAAA;AAAA,KAIZ,iBAAA;EACV,QAAA,IAAY,eAAA;EAEZ,SAAA,CAAU,QAAA,eAAuB,WAAA;EAAA,SAExB,IAAA,EAAM,aAAA;EACf,OAAA,CAAQ,QAAA,WAAmB,aAAA;EAAA,SAElB,QAAA,EAAU,qBAAA;EACnB,WAAA,CAAY,QAAA,WAAmB,qBAAA;EAC/B,cAAA,CAAe,GAAA,WAAc,qBAAA;EAC7B,sBAAA,CAAuB,GAAA,WAAc,qBAAA;EAErC,cAAA,CACE,QAAA,UACA,OAAA;IAAY,SAAA;EAAA,IACX,OAAA;EACH,iBAAA,IAAqB,OAAA;EAErB,qBAAA,IAAyB,OAAA;EACzB,MAAA,IAAU,OAAA;EACV,QAAA,IAAY,OAAA;AAAA;AAAA,KAqCF,4BAAA,GAA+B,qBAAqB;AAAA,cAEnD,qBAAA,YAAiC,iBAAA;EAAA,QAGlC,KAAA;EAAA,QACA,eAAA;EAAA,QAHF,SAAA;cAEE,KAAA,EAAO,4BAAA,EACP,eAAA,QACN,OAAA,EAAS,wBAAA,EACT,qBAAA,EAAuB,4BAAA,KACpB,aAAA;EAAA,UAuCG,sBAAA
|
|
1
|
+
{"version":3,"file":"thread-list-runtime.d.ts","names":[],"sources":["../../../src/runtime/api/thread-list-runtime.ts"],"mappings":";;;;;;;KAwBY,eAAA;EAAA,SACD,YAAA;EAAA,SACA,WAAA;EAAA,SACA,SAAA;EAAA,SACA,iBAAA;EAAA,SACA,SAAA;EAAA,SACA,aAAA;EAAA,SACA,OAAA;EAAA,SACA,WAAA,EAAa,QAAA,CACpB,MAAA,SAAe,IAAA,CAAK,mBAAA;AAAA;AAAA,KAIZ,iBAAA;EACV,QAAA,IAAY,eAAA;EAEZ,SAAA,CAAU,QAAA,eAAuB,WAAA;EAAA,SAExB,IAAA,EAAM,aAAA;EACf,OAAA,CAAQ,QAAA,WAAmB,aAAA;EAAA,SAElB,QAAA,EAAU,qBAAA;EACnB,WAAA,CAAY,QAAA,WAAmB,qBAAA;EAC/B,cAAA,CAAe,GAAA,WAAc,qBAAA;EAC7B,sBAAA,CAAuB,GAAA,WAAc,qBAAA;EAErC,cAAA,CACE,QAAA,UACA,OAAA;IAAY,SAAA;EAAA,IACX,OAAA;EACH,iBAAA,IAAqB,OAAA;EAErB,qBAAA,IAAyB,OAAA;EACzB,MAAA,IAAU,OAAA;EACV,QAAA,IAAY,OAAA;AAAA;AAAA,KAqCF,4BAAA,GAA+B,qBAAqB;AAAA,cAEnD,qBAAA,YAAiC,iBAAA;EAAA,QAGlC,KAAA;EAAA,QACA,eAAA;EAAA,QAHF,SAAA;cAEE,KAAA,EAAO,4BAAA,EACP,eAAA,QACN,OAAA,EAAS,wBAAA,EACT,qBAAA,EAAuB,4BAAA,KACpB,aAAA;EAAA,UAuCG,sBAAA;EAcH,cAAA,CACL,QAAA,UACA,OAAA;IAAY,SAAA;EAAA,IACX,OAAA;EAII,iBAAA,IAAqB,OAAA;EAIrB,qBAAA,IAAyB,OAAA;EAIzB,MAAA,IAAU,OAAA;EAIV,QAAA,IAAY,OAAA;EAIZ,QAAA,IAAY,eAAA;EAIZ,SAAA,CAAU,QAAA,eAAuB,WAAA;EAAA,QAIhC,0BAAA;EAAA,SAEQ,IAAA,EAAM,aAAA;EAAA,IAEX,QAAA,IAAQ,yBAAA;EAIZ,OAAA,CAAQ,QAAA,WAAgB,aAAA;EAcxB,cAAA,CAAe,GAAA,WAAW,yBAAA;EAgB1B,sBAAA,CAAuB,GAAA,WAAW,yBAAA;EAmBlC,WAAA,CAAY,QAAA,WAAgB,yBAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread-runtime.d.ts","names":[],"sources":["../../../src/runtime/api/thread-runtime.ts"],"mappings":";;;;;;;;;;;;;;;;;;KA8CY,oBAAA;EACV,QAAA;EACA,QAAA;EACA,SAAA,GAAY,SAAS;AAAA;AAAA,KAGX,qBAAA,GAAwB,oBAAA;EAClC,MAAA,IACE,OAAA,EAAS,mBAAA,KACN,cAAA,CAAe,kBAAA;AAAA;AAAA,KAoBV,mBAAA;EAGN,QAAA;EACA,QAAA;EACA,IAAA,GAAO,aAAA;EACP,OAAA,EAAS,aAAA;EACT,WAAA,GAAc,aAAA;EACd,QAAA,GAAW,aAAA;EACX,SAAA,GAAY,IAAA;EACZ,SAAA,GAAY,aAAA;EACZ,QAAA;AAAA;AAAA,KAiCM,wBAAA,GAA2B,qBAAA,CACrC,iBAAA,EACA,iBAAA;EAEA,cAAA,CAAe,QAAA,eAAuB,WAAA;AAAA;AAAA,KAG5B,4BAAA,GAA+B,qBAAA,CACzC,mBAAA,EACA,yBAAA;AAAA,KAGU,WAAA;EA5ES;;;;EAAA,SAiFV,QAAA;EAjFJ;;;AAAiC;AAoBxC;EApBO,SAwFI,QAAA,EAAU,mBAAA;;;;WAKV,UAAA;EAjEM;;;EAAA,SAsEN,SAAA;EApEoB;;;EAAA,SAyEpB,SAAA;EA9EE;;;EAAA,SAmFF,YAAA,EAAc,mBAAA;EAjFL;;;EAAA,SAsFT,QAAA,WAAmB,aAAA;EApFZ;;;;;EAAA,SA2FP,KAAA,EAAO,iBAAA;EAxDN;;;EAAA,SA6DD,WAAA,WAAsB,gBAAA;EA3D/B;;;EAAA,SAgES,MAAA;EA9DwC;;;EAAA,SAmExC,MAAA,EAAQ,WAAA;EAAA,SAER,KAAA,EAAO,iBAAA;AAAA;AAAA,cAGL,cAAA,GACX,OAAA,EAAS,iBAAA,EACT,mBAAA,EAAqB,mBAAA,KACpB,WAAA;AAAA,KAsBS,aAAA;EAjGuC;AAGnD;;EAHmD,SAqGxC,IAAA,EAAM,iBAAA;EAjGf;;;EAAA,SAsGS,QAAA,EAAU,qBAAA;EAvG2C;;;EA4G9D,QAAA,IAAY,WAAA;EA1Ga;AAAA;AAG3B;;;;;;;;;;;;;;EAyHE,MAAA,CAAO,OAAA,EAAS,mBAAA;EAxGP;;;;EA8GT,QAAA,CAAS,MAAA,EAAQ,oBAAA;EA1FR;;;;EAgGT,SAAA,CAAU,MAAA,EAAQ,qBAAA;EApFa;;;;;;EA4F/B,mBAAA;EAhFiC;AAGnC;;;;;EAqFE,mBAAA,CAAoB,KAAA;EAEpB,SAAA,CAAU,QAAA,eAAuB,WAAA;EACjC,SAAA;EACA,eAAA,IAAmB,YAAA;EAEnB,MAAA,IAAU,yBAAA;EACV,MAAA,CAAO,UAAA,EAAY,yBAAA;EA1FnB;;;AAqBD;AAED;EA0EE,KAAA,CAAM,eAAA,YAA2B,iBAAA;EAEjC,iBAAA,CAAkB,GAAA,WAAc,cAAA;EAChC,cAAA,CAAe,SAAA,WAAoB,cAAA;EApEhB;;;EAyEnB,YAAA;EAEA,YAAA;EACA,eAAA;EACA,cAAA;EACA,oBAAA,CAAqB,QAAA,eAAuB,WAAA;EAC5C,SAAA;EACA,WAAA;EAEA,WAAA,WAAsB,sBAAA,EACpB,KAAA,EAAO,CAAA,EACP,QAAA,EAAU,0BAAA,CAA2B,CAAA,IACpC,WAAA;AAAA;AAAA,cAGQ,iBAAA,YAA6B,aAAA;EAAA,IAC7B,IAAA,
|
|
1
|
+
{"version":3,"file":"thread-runtime.d.ts","names":[],"sources":["../../../src/runtime/api/thread-runtime.ts"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-assistant-runtime-core.d.ts","names":[],"sources":["../../../src/runtime/base/base-assistant-runtime-core.ts"],"mappings":";;;;;;;uBAMsB,wBAAA,YAAoC,oBAAA;EAAA,mBACrC,gBAAA,EAAgB,wBAAA;EAAA,aACf,OAAA,
|
|
1
|
+
{"version":3,"file":"base-assistant-runtime-core.d.ts","names":[],"sources":["../../../src/runtime/base/base-assistant-runtime-core.ts"],"mappings":";;;;;;;uBAMsB,wBAAA,YAAoC,oBAAA;EAAA,mBACrC,gBAAA,EAAgB,wBAAA;EAAA,aACf,OAAA,IAAW,qBAAA;EAExB,4BAAA,CACL,QAAA,EAAU,oBAAA,GACT,WAAA;EAII,uBAAA,IAA2B,oBAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-composer-runtime-core.d.ts","names":[],"sources":["../../../src/runtime/base/base-composer-runtime-core.ts"],"mappings":";;;;;;;;;uBA8BsB,uBAAA,SACZ,gBAAA,YACG,mBAAA;EAAA,SAEK,SAAA;EAAA,mBAEG,oBAAA,
|
|
1
|
+
{"version":3,"file":"base-composer-runtime-core.d.ts","names":[],"sources":["../../../src/runtime/base/base-composer-runtime-core.ts"],"mappings":";;;;;;;;;uBA8BsB,uBAAA,SACZ,gBAAA,YACG,mBAAA;EAAA,SAEK,SAAA;EAAA,mBAEG,oBAAA,IAAwB,iBAAA;EAAA,mBACxB,mBAAA,IAAuB,gBAAA;EAAA,IAE/B,gBAAA;EAAA,QAIH,YAAA;EAAA,IACG,WAAA,aAAW,UAAA;EAAA,UAIZ,cAAA,CAAe,KAAA,WAAgB,UAAA;EAAA,aAKrB,SAAA;EAAA,aACA,OAAA;EAAA,IAET,OAAA;EAAA,QAIH,KAAA;EAAA,IAEJ,IAAA;EAAA,QAII,KAAA;EAAA,IAEJ,IAAA;EAAA,QAII,UAAA;EAAA,IAEJ,SAAA,IAAS,SAAA;EAAA,QAIL,MAAA;EAAA,IAEJ,KAAA,IAAK,SAAA;EAIF,QAAA,CAAS,KAAA,EAAO,SAAA;EAOhB,OAAA,CAAQ,KAAA;EAaR,OAAA,CAAQ,IAAA,EAAM,WAAA;EAOd,YAAA,CAAa,SAAA,EAAW,SAAA;EAAA,QAOvB,wBAAA;EAAA,QAMM,mBAAA;EAQD,KAAA,IAAK,OAAA;EAoBL,gBAAA,IAAgB,OAAA;EAOhB,IAAA,CAAK,OAAA,GAAU,WAAA,GAAW,OAAA;EAuChC,MAAA;EAAA,mBAIY,UAAA,CACjB,OAAA,EAAS,IAAA,CAAK,aAAA,4BACd,OAAA,GAAU,WAAA;EAAA,mBAEO,YAAA;EAEb,aAAA,CAAc,gBAAA,EAAkB,IAAA,GAAO,gBAAA,GAAgB,OAAA;EAAA,QAqHrD,2BAAA;EAqBF,gBAAA,CAAiB,YAAA,WAAoB,OAAA;EAAA,QAenC,UAAA;EAAA,QACA,iBAAA;EAAA,QACA,sBAAA;EAAA,QACA,kBAAA;EAAA,QACA,mBAAA;EAAA,QACA,0BAAA;EAAA,QACA,yBAAA;EAAA,QACA,oBAAA;EAAA,IAEG,SAAA,IAAa,cAAA;EAAA,QAIhB,gBAAA;EAUD,cAAA;EA6FA,aAAA;EAAA,QAUC,iBAAA;EAAA,QAuBA,iBAAA;EAAA,UAKE,uBAAA,WAAkC,wBAAA,EAC1C,KAAA,EAAO,CAAA,EACP,OAAA,EAAS,2BAAA,CAA4B,CAAA;EAQhC,WAAA,WAAsB,wBAAA,EAC3B,KAAA,EAAO,CAAA,EACP,QAAA,EAAU,4BAAA,CAA6B,CAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-thread-runtime-core.d.ts","names":[],"sources":["../../../src/runtime/base/base-thread-runtime-core.ts"],"mappings":";;;;;;;;;;;;;KAqCK,kBAAA;EACH,MAAA,GAAS,sBAAA;EACT,QAAA,GAAW,eAAA;EACX,WAAA,GAAc,iBAAA;EACd,KAAA,GAAQ,oBAAA;AAAA;AAAA,uBAGY,qBAAA,YAAiC,iBAAA;EAAA,iBAqExB,gBAAA;EAAA,QApErB,cAAA;EAAA,QACA,cAAA;EAAA,mBAEW,UAAA,EAAU,iBAAA;EAAA,aACT,QAAA,
|
|
1
|
+
{"version":3,"file":"base-thread-runtime-core.d.ts","names":[],"sources":["../../../src/runtime/base/base-thread-runtime-core.ts"],"mappings":";;;;;;;;;;;;;KAqCK,kBAAA;EACH,MAAA,GAAS,sBAAA;EACT,QAAA,GAAW,eAAA;EACX,WAAA,GAAc,iBAAA;EACd,KAAA,GAAQ,oBAAA;AAAA;AAAA,uBAGY,qBAAA,YAAiC,iBAAA;EAAA,iBAqExB,gBAAA;EAAA,QApErB,cAAA;EAAA,QACA,cAAA;EAAA,mBAEW,UAAA,EAAU,iBAAA;EAAA,aACT,QAAA,IAAY,kBAAA;EAAA,aACZ,UAAA;EAAA,aACA,cAAA;EAAA,aACA,SAAA;EAAA,aACA,WAAA,aAAwB,gBAAA;EAAA,aACxB,MAAA;EAAA,aAEA,YAAA,IAAgB,mBAAA;EAAA,SACpB,MAAA,CAAO,OAAA,EAAS,aAAA;EAAA,SAChB,QAAA,CAAS,MAAA,EAAQ,cAAA;EAAA,SACjB,SAAA,CAAU,MAAA,EAAQ,eAAA;EAAA,SAClB,aAAA,CAAc,OAAA,EAAS,oBAAA;EAAA,SACvB,cAAA,CAAe,OAAA,EAAS,qBAAA;EAAA,SACxB,qBAAA,CACd,OAAA,EAAS,4BAAA;EAAA,SAEK,SAAA;EAAA,SACA,mBAAA;EAAA,SACA,mBAAA,CAAoB,KAAA;EAAA,UAE1B,cAAA,EAAgB,aAAA;EAAA,UAChB,gBAAA;EAAA,QACF,qBAAA;EAAA,QACA,sBAAA;EAAA,QACA,iBAAA;EAAA,UAEE,uBAAA;EAAA,UAKA,gBAAA,aAA6B,aAAA;EAAA,IAI5B,QAAA,aAAqB,aAAA;EAAA,IAgBrB,KAAA,iEAAK,kBAAA,oCAAA,iBAAA;EAAA,SAWA,QAAA,EAAQ,gCAAA;cAEK,gBAAA,EAAkB,oBAAA;EAExC,eAAA,IAF4D,YAAA;EAAA,QAM3D,cAAA;EACD,eAAA,CAAgB,SAAA,WAAiB,8BAAA;EAGjC,SAAA,CAAU,SAAA;EAeV,cAAA,CAAe,SAAA;;;;;EAsBf,WAAA,CAAY,SAAA;EAOZ,cAAA,CAAe,QAAA;EAAA,UAKZ,kBAAA;EAIH,uBAAA,WAAkC,sBAAA,EACvC,KAAA,EAAO,CAAA,EACP,OAAA,EAAS,yBAAA,CAA0B,CAAA;EAQ9B,SAAA,CAAU,QAAA,eAAuB,WAAA;EAKjC,cAAA;IAAiB,SAAA;IAAW;EAAA,GAAQ,qBAAA;EAAA,QAqBnC,aAAA;EACD,MAAA,EAAQ,WAAA;EAER,KAAA,CAAM,SAAA;EA8BN,YAAA;EAAA,QAMC,aAAA;EAAA,QACA,YAAA;EACD,KAAA,EAAO,iBAAA;EAAA,QAEN,YAAA;EAAA,QACA,uBAAA;EAED,cAAA;EAEA,oBAAA,GAAwB,QAAA,iBAAuB,WAAA;EAK/C,YAAA;EAAA,QA+DC,oBAAA;EAAA,QAEA,sBAAA;EAAA,QA8DA,4BAAA;EAaD,eAAA;EAeA,SAAA;EAUA,WAAA;EAAA,UAUG,iBAAA;EAOH,MAAA,IAAM,yBAAA;EAIN,MAAA,CAAO,IAAA,EAAM,yBAAA;EAOb,KAAA,CAAM,eAAA,YAA2B,iBAAA;EAAA,QAIhC,iBAAA;EAKD,WAAA,WAAsB,sBAAA,EAC3B,KAAA,EAAO,CAAA,EACP,QAAA,EAAU,0BAAA,CAA2B,CAAA,IAAE,WAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-edit-composer-runtime-core.d.ts","names":[],"sources":["../../../src/runtime/base/default-edit-composer-runtime-core.ts"],"mappings":";;;;;;;;cAUa,8BAAA,SAAuC,uBAAA;EAAA,QAuBxC,OAAA;EAAA,QAQA,eAAA;EAAA,IA9BC,SAAA
|
|
1
|
+
{"version":3,"file":"default-edit-composer-runtime-core.d.ts","names":[],"sources":["../../../src/runtime/base/default-edit-composer-runtime-core.ts"],"mappings":";;;;;;;;cAUa,8BAAA,SAAuC,uBAAA;EAAA,QAuBxC,OAAA;EAAA,QAQA,eAAA;EAAA,IA9BC,SAAA;EAAA,IAIA,OAAA;EAAA,UAID,oBAAA,IAAoB,iBAAA;EAAA,UAIpB,mBAAA,IAAmB,gBAAA;EAAA,QAIrB,aAAA;EAAA,QACA,oBAAA;EAAA,QACA,mBAAA;EAAA,QACA,SAAA;EAAA,QACA,SAAA;cAEE,OAAA,EAAS,iBAAA;IACf,QAAA;MAEM,WAAA,GAAc,iBAAA;MACd,SAAA,GAAY,gBAAA;IAAA;EAAA,GAIZ,eAAA;IACN,QAAA;IAAU;EAAA;IAAa,QAAA;IAAyB,OAAA,EAAS,aAAA;EAAA;EAAA,IA2BlD,QAAA;EAAA,IAIA,QAAA;EAIE,UAAA,CACX,OAAA,EAAS,IAAA,CAAK,aAAA,4BACd,OAAA,GAAU,WAAA,GAAW,OAAA;EAgChB,YAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-thread-composer-runtime-core.d.ts","names":[],"sources":["../../../src/runtime/base/default-thread-composer-runtime-core.ts"],"mappings":";;;;;;;;cAUa,gCAAA,SACH,uBAAA,YACG,yBAAA;EAAA,QAoBD,OAAA;EAAA,QAlBF,UAAA;EAAA,IACG,SAAA
|
|
1
|
+
{"version":3,"file":"default-thread-composer-runtime-core.d.ts","names":[],"sources":["../../../src/runtime/base/default-thread-composer-runtime-core.ts"],"mappings":";;;;;;;;cAUa,gCAAA,SACH,uBAAA,YACG,yBAAA;EAAA,QAoBD,OAAA;EAAA,QAlBF,UAAA;EAAA,IACG,SAAA;EAAA,IAIA,OAAA;EAAA,UAID,oBAAA,IAAoB,iBAAA;EAAA,UAIpB,mBAAA,IAAmB,gBAAA;cAKnB,OAAA,EAAS,IAAA,CAAK,iBAAA;IACpB,QAAA;MAEM,WAAA,GAAc,iBAAA;MACd,SAAA,GAAY,gBAAA;IAAA;EAAA;EASf,OAAA,IAT+B,WAAA;EAyBzB,UAAA,CACX,OAAA,EAAS,IAAA,CAAK,aAAA,4BACd,OAAA,GAAU,WAAA,GAAW,OAAA;EAUV,YAAA,IAAY,OAAA;AAAA"}
|
|
@@ -39,9 +39,17 @@ declare class MessageRepository {
|
|
|
39
39
|
message: ThreadMessage;
|
|
40
40
|
index: number;
|
|
41
41
|
};
|
|
42
|
-
appendOptimisticMessage(parentId: string | null, message: ThreadMessageLike): string;
|
|
43
42
|
deleteMessage(messageId: string, replacementId?: string | null | undefined): void;
|
|
44
43
|
getBranches(messageId: string): string[];
|
|
44
|
+
/**
|
|
45
|
+
* Evicts optimistic messages (`metadata.isOptimistic`) the head just moved
|
|
46
|
+
* away from. Since eviction runs on every head move, the only optimistic
|
|
47
|
+
* messages in the repository live on the branch the head previously pointed
|
|
48
|
+
* at — so we walk just that branch rather than the whole repository. Keeps a
|
|
49
|
+
* client→server id swap from leaving a phantom sibling, and drops off-branch
|
|
50
|
+
* placeholders.
|
|
51
|
+
*/
|
|
52
|
+
private evictOffBranchOptimisticMessages;
|
|
45
53
|
switchToBranch(messageId: string): void;
|
|
46
54
|
resetHead(messageId: string | null): void;
|
|
47
55
|
clear(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-repository.d.ts","names":[],"sources":["../../../src/runtime/utils/message-repository.ts"],"mappings":";;;;KAOY,6BAAA;EACV,OAAA,EAAS,aAAA;EACT,QAAA;EACA,SAAA,GAAY,SAAS;AAAA;AAAA,KAGX,yBAAA;EACV,MAAA;EACA,QAAA,EAAU,KAAA;IACR,OAAA,EAAS,aAAA;IACT,QAAA;IACA,SAAA,GAAY,SAAA;EAAA;AAAA;AAAA,cAIH,yBAAA;iCAEU,iBAAA,OAClB,yBAAA;;IAmBC,OAAA,EAAS,iBAAA;IACT,QAAA;EAAA,KACC,OAAA;IACS,MAAA;EAAA,MACX,yBAAA;AAAA;AAAA,cAyDQ,iBAAA;EAAA,QACH,QAAA;EAAA,QACA,IAAA;EAAA,QACA,IAAA;EAAA,QAKA,YAAA;EAAA,QAUA,SAAA;EAAA,QAwDA,SAAA;EAAA,IAQJ,MAAA
|
|
1
|
+
{"version":3,"file":"message-repository.d.ts","names":[],"sources":["../../../src/runtime/utils/message-repository.ts"],"mappings":";;;;KAOY,6BAAA;EACV,OAAA,EAAS,aAAA;EACT,QAAA;EACA,SAAA,GAAY,SAAS;AAAA;AAAA,KAGX,yBAAA;EACV,MAAA;EACA,QAAA,EAAU,KAAA;IACR,OAAA,EAAS,aAAA;IACT,QAAA;IACA,SAAA,GAAY,SAAA;EAAA;AAAA;AAAA,cAIH,yBAAA;iCAEU,iBAAA,OAClB,yBAAA;;IAmBC,OAAA,EAAS,iBAAA;IACT,QAAA;EAAA,KACC,OAAA;IACS,MAAA;EAAA,MACX,yBAAA;AAAA;AAAA,cAyDQ,iBAAA;EAAA,QACH,QAAA;EAAA,QACA,IAAA;EAAA,QACA,IAAA;EAAA,QAKA,YAAA;EAAA,QAUA,SAAA;EAAA,QAwDA,SAAA;EAAA,IAQJ,MAAA;EAIJ,WAAA,CAAY,MAAA,qBAAe,aAAA;EAuB3B,kBAAA,CAAmB,QAAA,iBAAyB,OAAA,EAAS,aAAA;EAiCrD,UAAA,CAAW,SAAA;;;;;EAcX,aAAA,CAAc,SAAA,UAAmB,aAAA;EAsCjC,WAAA,CAAY,SAAA;;;;;;;;;UAmBJ,gCAAA;EA+BR,cAAA,CAAe,SAAA;EAkBf,SAAA,CAAU,SAAA;EAgDV,KAAA;EAUA,MAAA,IAAU,yBAAA;EAyBV,MAAA;IAAS,MAAA;IAAQ;EAAA,GAAY,yBAAA;AAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { generateId
|
|
1
|
+
import { generateId } from "../../utils/id.js";
|
|
2
2
|
import { getAutoStatus } from "./auto-status.js";
|
|
3
3
|
import { fromThreadMessageLike } from "./thread-message-like.js";
|
|
4
4
|
//#region src/runtime/utils/message-repository.ts
|
|
@@ -126,14 +126,6 @@ var MessageRepository = class {
|
|
|
126
126
|
index: message.level
|
|
127
127
|
};
|
|
128
128
|
}
|
|
129
|
-
appendOptimisticMessage(parentId, message) {
|
|
130
|
-
let optimisticId;
|
|
131
|
-
do
|
|
132
|
-
optimisticId = generateOptimisticId();
|
|
133
|
-
while (this.messages.has(optimisticId));
|
|
134
|
-
this.addOrUpdateMessage(parentId, fromThreadMessageLike(message, optimisticId, { type: "running" }));
|
|
135
|
-
return optimisticId;
|
|
136
|
-
}
|
|
137
129
|
deleteMessage(messageId, replacementId) {
|
|
138
130
|
const message = this.messages.get(messageId);
|
|
139
131
|
if (!message) throw new Error("MessageRepository(deleteMessage): Message not found. This is likely an internal bug in assistant-ui.");
|
|
@@ -155,12 +147,33 @@ var MessageRepository = class {
|
|
|
155
147
|
const { children } = message.prev ?? this.root;
|
|
156
148
|
return children;
|
|
157
149
|
}
|
|
150
|
+
/**
|
|
151
|
+
* Evicts optimistic messages (`metadata.isOptimistic`) the head just moved
|
|
152
|
+
* away from. Since eviction runs on every head move, the only optimistic
|
|
153
|
+
* messages in the repository live on the branch the head previously pointed
|
|
154
|
+
* at — so we walk just that branch rather than the whole repository. Keeps a
|
|
155
|
+
* client→server id swap from leaving a phantom sibling, and drops off-branch
|
|
156
|
+
* placeholders.
|
|
157
|
+
*/
|
|
158
|
+
evictOffBranchOptimisticMessages(previousHead, currentHead) {
|
|
159
|
+
if (!previousHead) return;
|
|
160
|
+
const onHeadBranch = /* @__PURE__ */ new Set();
|
|
161
|
+
for (let current = currentHead; current; current = current.prev) onHeadBranch.add(current.current.id);
|
|
162
|
+
const stale = [];
|
|
163
|
+
for (let current = previousHead; current; current = current.prev) {
|
|
164
|
+
if (onHeadBranch.has(current.current.id)) break;
|
|
165
|
+
if (current.current.metadata?.isOptimistic) stale.push(current.current.id);
|
|
166
|
+
}
|
|
167
|
+
for (const id of stale) if (this.messages.has(id)) this.deleteMessage(id);
|
|
168
|
+
}
|
|
158
169
|
switchToBranch(messageId) {
|
|
159
170
|
const message = this.messages.get(messageId);
|
|
160
171
|
if (!message) throw new Error("MessageRepository(switchToBranch): Branch not found. This is likely an internal bug in assistant-ui.");
|
|
172
|
+
const previousHead = this.head;
|
|
161
173
|
const prevOrRoot = message.prev ?? this.root;
|
|
162
174
|
prevOrRoot.next = message;
|
|
163
175
|
this.head = findHead(message);
|
|
176
|
+
this.evictOffBranchOptimisticMessages(previousHead, this.head);
|
|
164
177
|
this._messages.dirty();
|
|
165
178
|
}
|
|
166
179
|
resetHead(messageId) {
|
|
@@ -170,6 +183,7 @@ var MessageRepository = class {
|
|
|
170
183
|
}
|
|
171
184
|
const message = this.messages.get(messageId);
|
|
172
185
|
if (!message) throw new Error("MessageRepository(resetHead): Branch not found. This is likely an internal bug in assistant-ui.");
|
|
186
|
+
const previousHead = this.head;
|
|
173
187
|
if (message.children.length > 0) {
|
|
174
188
|
const deleteDescendants = (msg) => {
|
|
175
189
|
for (const childId of msg.children) {
|
|
@@ -187,6 +201,7 @@ var MessageRepository = class {
|
|
|
187
201
|
this.head = message;
|
|
188
202
|
for (let current = message; current; current = current.prev) if (current.prev) current.prev.next = current;
|
|
189
203
|
else this.root.next = current;
|
|
204
|
+
this.evictOffBranchOptimisticMessages(previousHead, this.head);
|
|
190
205
|
this._messages.dirty();
|
|
191
206
|
}
|
|
192
207
|
clear() {
|
|
@@ -200,12 +215,17 @@ var MessageRepository = class {
|
|
|
200
215
|
}
|
|
201
216
|
export() {
|
|
202
217
|
const exportItems = [];
|
|
203
|
-
for (const [, message] of this.messages)
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
218
|
+
for (const [, message] of this.messages) {
|
|
219
|
+
if (message.current.metadata?.isOptimistic) continue;
|
|
220
|
+
exportItems.push({
|
|
221
|
+
message: message.current,
|
|
222
|
+
parentId: message.prev?.current.id ?? null
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
let head = this.head;
|
|
226
|
+
while (head?.current.metadata?.isOptimistic) head = head.prev;
|
|
207
227
|
return {
|
|
208
|
-
headId:
|
|
228
|
+
headId: head?.current.id ?? null,
|
|
209
229
|
messages: exportItems
|
|
210
230
|
};
|
|
211
231
|
}
|