@assistant-ui/react 0.7.85 → 0.7.87
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/api/AssistantRuntime.d.ts +10 -3
- package/dist/api/AssistantRuntime.d.ts.map +1 -1
- package/dist/api/AssistantRuntime.js +8 -6
- package/dist/api/AssistantRuntime.js.map +1 -1
- package/dist/api/AssistantRuntime.mjs +8 -8
- package/dist/api/AssistantRuntime.mjs.map +1 -1
- package/dist/cloud/useCloudThreadListRuntime.d.ts +1 -1
- package/dist/cloud/useCloudThreadListRuntime.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3 -1
- package/dist/index.mjs.map +1 -1
- package/dist/model-context/ModelContextTypes.d.ts +1 -1
- package/dist/model-context/ModelContextTypes.d.ts.map +1 -1
- package/dist/model-context/ModelContextTypes.js +2 -1
- package/dist/model-context/ModelContextTypes.js.map +1 -1
- package/dist/model-context/ModelContextTypes.mjs +2 -1
- package/dist/model-context/ModelContextTypes.mjs.map +1 -1
- package/dist/model-context/index.d.ts +2 -0
- package/dist/model-context/index.d.ts.map +1 -1
- package/dist/model-context/index.js +6 -0
- package/dist/model-context/index.js.map +1 -1
- package/dist/model-context/index.mjs +4 -0
- package/dist/model-context/index.mjs.map +1 -1
- package/dist/model-context/makeAssistantReadable.d.ts +6 -0
- package/dist/model-context/makeAssistantReadable.d.ts.map +1 -0
- package/dist/model-context/makeAssistantReadable.js +86 -0
- package/dist/model-context/makeAssistantReadable.js.map +1 -0
- package/dist/model-context/makeAssistantReadable.mjs +69 -0
- package/dist/model-context/makeAssistantReadable.mjs.map +1 -0
- package/dist/model-context/tool.d.ts +12 -0
- package/dist/model-context/tool.d.ts.map +1 -0
- package/dist/model-context/tool.js +33 -0
- package/dist/model-context/tool.js.map +1 -0
- package/dist/model-context/tool.mjs +8 -0
- package/dist/model-context/tool.mjs.map +1 -0
- package/dist/runtimes/core/BaseThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/core/BaseThreadRuntimeCore.js +2 -0
- package/dist/runtimes/core/BaseThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/core/BaseThreadRuntimeCore.mjs +2 -0
- package/dist/runtimes/core/BaseThreadRuntimeCore.mjs.map +1 -1
- package/dist/runtimes/dangerous-in-browser/useDangerousInBrowserRuntime.d.ts +1 -1
- package/dist/runtimes/dangerous-in-browser/useDangerousInBrowserRuntime.d.ts.map +1 -1
- package/dist/runtimes/edge/useEdgeRuntime.d.ts +1 -1
- package/dist/runtimes/edge/useEdgeRuntime.d.ts.map +1 -1
- package/dist/runtimes/external-store/useExternalStoreRuntime.d.ts +2 -1
- package/dist/runtimes/external-store/useExternalStoreRuntime.d.ts.map +1 -1
- package/dist/runtimes/external-store/useExternalStoreRuntime.js +1 -5
- package/dist/runtimes/external-store/useExternalStoreRuntime.js.map +1 -1
- package/dist/runtimes/external-store/useExternalStoreRuntime.mjs +1 -5
- package/dist/runtimes/external-store/useExternalStoreRuntime.mjs.map +1 -1
- package/dist/runtimes/index.d.ts +1 -0
- package/dist/runtimes/index.d.ts.map +1 -1
- package/dist/runtimes/index.js +9 -0
- package/dist/runtimes/index.js.map +1 -1
- package/dist/runtimes/index.mjs +4 -0
- package/dist/runtimes/index.mjs.map +1 -1
- package/dist/runtimes/local/LocalRuntimeCore.d.ts +0 -4
- package/dist/runtimes/local/LocalRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/local/LocalRuntimeCore.js +2 -23
- package/dist/runtimes/local/LocalRuntimeCore.js.map +1 -1
- package/dist/runtimes/local/LocalRuntimeCore.mjs +2 -23
- package/dist/runtimes/local/LocalRuntimeCore.mjs.map +1 -1
- package/dist/runtimes/local/useLocalRuntime.d.ts +2 -6
- package/dist/runtimes/local/useLocalRuntime.d.ts.map +1 -1
- package/dist/runtimes/local/useLocalRuntime.js +2 -19
- package/dist/runtimes/local/useLocalRuntime.js.map +1 -1
- package/dist/runtimes/local/useLocalRuntime.mjs +2 -21
- package/dist/runtimes/local/useLocalRuntime.mjs.map +1 -1
- package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.d.ts +4 -4
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.d.ts +4 -4
- package/dist/runtimes/remote-thread-list/useRemoteThreadListRuntime.d.ts +2 -1
- package/dist/runtimes/remote-thread-list/useRemoteThreadListRuntime.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/useRemoteThreadListRuntime.js +1 -1
- package/dist/runtimes/remote-thread-list/useRemoteThreadListRuntime.js.map +1 -1
- package/dist/runtimes/remote-thread-list/useRemoteThreadListRuntime.mjs +1 -1
- package/dist/runtimes/remote-thread-list/useRemoteThreadListRuntime.mjs.map +1 -1
- package/dist/runtimes/utils/MessageRepository.d.ts +7 -2
- package/dist/runtimes/utils/MessageRepository.d.ts.map +1 -1
- package/dist/runtimes/utils/MessageRepository.js +26 -0
- package/dist/runtimes/utils/MessageRepository.js.map +1 -1
- package/dist/runtimes/utils/MessageRepository.mjs +26 -1
- package/dist/runtimes/utils/MessageRepository.mjs.map +1 -1
- package/dist/tailwindcss/index.d.ts.map +1 -1
- package/dist/tailwindcss/index.js +1 -4
- package/dist/tailwindcss/index.js.map +1 -1
- package/dist/tailwindcss/index.mjs +6 -9
- package/dist/tailwindcss/index.mjs.map +1 -1
- package/dist/utils/json/fix-json.d.ts +1 -1
- package/dist/utils/json/fix-json.d.ts.map +1 -1
- package/dist/utils/json/fix-json.js +5 -1
- package/dist/utils/json/fix-json.js.map +1 -1
- package/dist/utils/json/fix-json.mjs +5 -1
- package/dist/utils/json/fix-json.mjs.map +1 -1
- package/dist/utils/json/parse-partial-json.d.ts +2 -0
- package/dist/utils/json/parse-partial-json.d.ts.map +1 -1
- package/dist/utils/json/parse-partial-json.js +40 -3
- package/dist/utils/json/parse-partial-json.js.map +1 -1
- package/dist/utils/json/parse-partial-json.mjs +38 -2
- package/dist/utils/json/parse-partial-json.mjs.map +1 -1
- package/package.json +4 -1
- package/src/api/AssistantRuntime.ts +15 -22
- package/src/index.ts +2 -0
- package/src/model-context/ModelContextTypes.ts +4 -2
- package/src/model-context/index.ts +3 -0
- package/src/model-context/makeAssistantReadable.tsx +81 -0
- package/src/model-context/tool.ts +26 -0
- package/src/runtimes/core/BaseThreadRuntimeCore.tsx +2 -1
- package/src/runtimes/external-store/useExternalStoreRuntime.tsx +1 -5
- package/src/runtimes/index.ts +2 -0
- package/src/runtimes/local/LocalRuntimeCore.tsx +1 -33
- package/src/runtimes/local/useLocalRuntime.tsx +2 -29
- package/src/runtimes/remote-thread-list/useRemoteThreadListRuntime.tsx +1 -1
- package/src/runtimes/utils/MessageRepository.tsx +33 -3
- package/src/tailwindcss/index.ts +6 -9
- package/src/utils/json/fix-json.ts +6 -2
- package/src/utils/json/parse-partial-json.ts +61 -1
@@ -3,29 +3,10 @@
|
|
3
3
|
// src/runtimes/local/useLocalRuntime.tsx
|
4
4
|
import { useEffect, useMemo, useState } from "react";
|
5
5
|
import { LocalRuntimeCore } from "./LocalRuntimeCore.mjs";
|
6
|
-
import {
|
7
|
-
AssistantRuntimeImpl
|
8
|
-
} from "../../api/AssistantRuntime.mjs";
|
9
|
-
import { ThreadRuntimeImpl } from "../../internal.mjs";
|
10
6
|
import { useRuntimeAdapters } from "../adapters/RuntimeAdapterProvider.mjs";
|
11
7
|
import { useRemoteThreadListRuntime } from "../remote-thread-list/useRemoteThreadListRuntime.mjs";
|
12
8
|
import { useCloudThreadListAdapter } from "../remote-thread-list/adapter/cloud.mjs";
|
13
|
-
|
14
|
-
constructor(core) {
|
15
|
-
super(core, ThreadRuntimeImpl);
|
16
|
-
this.core = core;
|
17
|
-
}
|
18
|
-
__internal_bindMethods() {
|
19
|
-
super.__internal_bindMethods();
|
20
|
-
this.reset = this.reset.bind(this);
|
21
|
-
}
|
22
|
-
reset(options) {
|
23
|
-
this.core.reset(options);
|
24
|
-
}
|
25
|
-
static create(_core) {
|
26
|
-
return new _LocalRuntimeImpl(_core);
|
27
|
-
}
|
28
|
-
};
|
9
|
+
import { AssistantRuntimeImpl } from "../../internal.mjs";
|
29
10
|
var useLocalThreadRuntime = (adapter, { initialMessages, ...options }) => {
|
30
11
|
const { modelContext, ...threadListAdapters } = useRuntimeAdapters() ?? {};
|
31
12
|
const opt = useMemo(
|
@@ -48,7 +29,7 @@ var useLocalThreadRuntime = (adapter, { initialMessages, ...options }) => {
|
|
48
29
|
if (!modelContext) return void 0;
|
49
30
|
return runtime.registerModelContextProvider(modelContext);
|
50
31
|
}, [modelContext, runtime]);
|
51
|
-
return useMemo(() =>
|
32
|
+
return useMemo(() => new AssistantRuntimeImpl(runtime), [runtime]);
|
52
33
|
};
|
53
34
|
var useLocalRuntime = (adapter, { cloud, ...options } = {}) => {
|
54
35
|
const cloudAdapter = useCloudThreadListAdapter({ cloud });
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/runtimes/local/useLocalRuntime.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useMemo, useState } from \"react\";\nimport type { ChatModelAdapter } from \"./ChatModelAdapter\";\nimport { LocalRuntimeCore } from \"./LocalRuntimeCore\";\nimport { LocalRuntimeOptions } from \"./LocalRuntimeOptions\";\nimport {
|
1
|
+
{"version":3,"sources":["../../../src/runtimes/local/useLocalRuntime.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useMemo, useState } from \"react\";\nimport type { ChatModelAdapter } from \"./ChatModelAdapter\";\nimport { LocalRuntimeCore } from \"./LocalRuntimeCore\";\nimport { LocalRuntimeOptions } from \"./LocalRuntimeOptions\";\nimport { useRuntimeAdapters } from \"../adapters/RuntimeAdapterProvider\";\nimport { useRemoteThreadListRuntime } from \"../remote-thread-list/useRemoteThreadListRuntime\";\nimport { useCloudThreadListAdapter } from \"../remote-thread-list/adapter/cloud\";\nimport { AssistantRuntimeImpl } from \"../../internal\";\n\nconst useLocalThreadRuntime = (\n adapter: ChatModelAdapter,\n { initialMessages, ...options }: LocalRuntimeOptions,\n) => {\n const { modelContext, ...threadListAdapters } = useRuntimeAdapters() ?? {};\n const opt = useMemo(\n () => ({\n ...options,\n adapters: {\n ...threadListAdapters,\n ...options.adapters,\n chatModel: adapter,\n },\n }),\n [adapter, options, threadListAdapters],\n );\n\n const [runtime] = useState(() => new LocalRuntimeCore(opt, initialMessages));\n\n useEffect(() => {\n runtime.threads.getMainThreadRuntimeCore().__internal_setOptions(opt);\n runtime.threads.getMainThreadRuntimeCore().__internal_load();\n }, [runtime, opt]);\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 useLocalRuntime = (\n adapter: ChatModelAdapter,\n { cloud, ...options }: LocalRuntimeOptions = {},\n) => {\n const cloudAdapter = useCloudThreadListAdapter({ cloud });\n return useRemoteThreadListRuntime({\n runtimeHook: () => useLocalThreadRuntime(adapter, options),\n adapter: cloudAdapter,\n });\n};\n"],"mappings":";;;AAEA,SAAS,WAAW,SAAS,gBAAgB;AAE7C,SAAS,wBAAwB;AAEjC,SAAS,0BAA0B;AACnC,SAAS,kCAAkC;AAC3C,SAAS,iCAAiC;AAC1C,SAAS,4BAA4B;AAErC,IAAM,wBAAwB,CAC5B,SACA,EAAE,iBAAiB,GAAG,QAAQ,MAC3B;AACH,QAAM,EAAE,cAAc,GAAG,mBAAmB,IAAI,mBAAmB,KAAK,CAAC;AACzE,QAAM,MAAM;AAAA,IACV,OAAO;AAAA,MACL,GAAG;AAAA,MACH,UAAU;AAAA,QACR,GAAG;AAAA,QACH,GAAG,QAAQ;AAAA,QACX,WAAW;AAAA,MACb;AAAA,IACF;AAAA,IACA,CAAC,SAAS,SAAS,kBAAkB;AAAA,EACvC;AAEA,QAAM,CAAC,OAAO,IAAI,SAAS,MAAM,IAAI,iBAAiB,KAAK,eAAe,CAAC;AAE3E,YAAU,MAAM;AACd,YAAQ,QAAQ,yBAAyB,EAAE,sBAAsB,GAAG;AACpE,YAAQ,QAAQ,yBAAyB,EAAE,gBAAgB;AAAA,EAC7D,GAAG,CAAC,SAAS,GAAG,CAAC;AAEjB,YAAU,MAAM;AACd,QAAI,CAAC,aAAc,QAAO;AAC1B,WAAO,QAAQ,6BAA6B,YAAY;AAAA,EAC1D,GAAG,CAAC,cAAc,OAAO,CAAC;AAE1B,SAAO,QAAQ,MAAM,IAAI,qBAAqB,OAAO,GAAG,CAAC,OAAO,CAAC;AACnE;AAEO,IAAM,kBAAkB,CAC7B,SACA,EAAE,OAAO,GAAG,QAAQ,IAAyB,CAAC,MAC3C;AACH,QAAM,eAAe,0BAA0B,EAAE,MAAM,CAAC;AACxD,SAAO,2BAA2B;AAAA,IAChC,aAAa,MAAM,sBAAsB,SAAS,OAAO;AAAA,IACzD,SAAS;AAAA,EACX,CAAC;AACH;","names":[]}
|
@@ -33,8 +33,8 @@ export declare class RemoteThreadListHookInstanceManager extends BaseSubscribabl
|
|
33
33
|
suggestions: readonly import("..").ThreadSuggestion[];
|
34
34
|
extras: unknown;
|
35
35
|
subscribe: (callback: () => void) => import("../..").Unsubscribe;
|
36
|
-
import(repository: import("
|
37
|
-
export(): import("
|
36
|
+
import(repository: import("..").ExportedMessageRepository): void;
|
37
|
+
export(): import("..").ExportedMessageRepository;
|
38
38
|
unstable_on(event: import("../core/ThreadRuntimeCore").ThreadRuntimeEventType, callback: () => void): import("../..").Unsubscribe;
|
39
39
|
}>>;
|
40
40
|
getThreadRuntimeCore(threadId: string): Readonly<{
|
@@ -63,8 +63,8 @@ export declare class RemoteThreadListHookInstanceManager extends BaseSubscribabl
|
|
63
63
|
suggestions: readonly import("..").ThreadSuggestion[];
|
64
64
|
extras: unknown;
|
65
65
|
subscribe: (callback: () => void) => import("../..").Unsubscribe;
|
66
|
-
import(repository: import("
|
67
|
-
export(): import("
|
66
|
+
import(repository: import("..").ExportedMessageRepository): void;
|
67
|
+
export(): import("..").ExportedMessageRepository;
|
68
68
|
unstable_on(event: import("../core/ThreadRuntimeCore").ThreadRuntimeEventType, callback: () => void): import("../..").Unsubscribe;
|
69
69
|
}> | undefined;
|
70
70
|
stopThreadRuntime(threadId: string): void;
|
@@ -66,8 +66,8 @@ export declare class RemoteThreadListThreadListRuntimeCore extends BaseSubscriba
|
|
66
66
|
suggestions: readonly import("..").ThreadSuggestion[];
|
67
67
|
extras: unknown;
|
68
68
|
subscribe: (callback: () => void) => import("../..").Unsubscribe;
|
69
|
-
import(repository: import("
|
70
|
-
export(): import("
|
69
|
+
import(repository: import("..").ExportedMessageRepository): void;
|
70
|
+
export(): import("..").ExportedMessageRepository;
|
71
71
|
unstable_on(event: import("../core/ThreadRuntimeCore").ThreadRuntimeEventType, callback: () => void): import("../..").Unsubscribe;
|
72
72
|
}>;
|
73
73
|
getThreadRuntimeCore(threadIdOrRemoteId: string): Readonly<{
|
@@ -96,8 +96,8 @@ export declare class RemoteThreadListThreadListRuntimeCore extends BaseSubscriba
|
|
96
96
|
suggestions: readonly import("..").ThreadSuggestion[];
|
97
97
|
extras: unknown;
|
98
98
|
subscribe: (callback: () => void) => import("../..").Unsubscribe;
|
99
|
-
import(repository: import("
|
100
|
-
export(): import("
|
99
|
+
import(repository: import("..").ExportedMessageRepository): void;
|
100
|
+
export(): import("..").ExportedMessageRepository;
|
101
101
|
unstable_on(event: import("../core/ThreadRuntimeCore").ThreadRuntimeEventType, callback: () => void): import("../..").Unsubscribe;
|
102
102
|
}>;
|
103
103
|
getItemById(threadIdOrRemoteId: string): RemoteThreadData | undefined;
|
@@ -1,3 +1,4 @@
|
|
1
1
|
import { RemoteThreadListOptions } from "./types";
|
2
|
-
|
2
|
+
import { AssistantRuntimeImpl } from "../../internal";
|
3
|
+
export declare const useRemoteThreadListRuntime: (options: RemoteThreadListOptions) => AssistantRuntimeImpl;
|
3
4
|
//# sourceMappingURL=useRemoteThreadListRuntime.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useRemoteThreadListRuntime.d.ts","sourceRoot":"","sources":["../../../src/runtimes/remote-thread-list/useRemoteThreadListRuntime.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;
|
1
|
+
{"version":3,"file":"useRemoteThreadListRuntime.d.ts","sourceRoot":"","sources":["../../../src/runtimes/remote-thread-list/useRemoteThreadListRuntime.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAsBtD,eAAO,MAAM,0BAA0B,YAC5B,uBAAuB,yBAQjC,CAAC"}
|
@@ -47,7 +47,7 @@ var useRemoteThreadListRuntime = (options) => {
|
|
47
47
|
runtime.threads.__internal_setOptions(options);
|
48
48
|
runtime.threads.__internal_load();
|
49
49
|
}, [runtime, options]);
|
50
|
-
return (0, import_react.useMemo)(() => import_internal.AssistantRuntimeImpl
|
50
|
+
return (0, import_react.useMemo)(() => new import_internal.AssistantRuntimeImpl(runtime), [runtime]);
|
51
51
|
};
|
52
52
|
// Annotate the CommonJS export names for ESM import in node:
|
53
53
|
0 && (module.exports = {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/runtimes/remote-thread-list/useRemoteThreadListRuntime.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState, useEffect, useMemo } from \"react\";\nimport { BaseAssistantRuntimeCore } from \"../core/BaseAssistantRuntimeCore\";\nimport { RemoteThreadListThreadListRuntimeCore } from \"./RemoteThreadListThreadListRuntimeCore\";\nimport { RemoteThreadListOptions } from \"./types\";\nimport { AssistantRuntimeImpl } from \"../../internal\";\nimport { AssistantRuntimeCore } from \"../core/AssistantRuntimeCore\";\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\nexport const useRemoteThreadListRuntime = (\n options: RemoteThreadListOptions,\n) => {\n const [runtime] = useState(() => new RemoteThreadListRuntimeCore(options));\n useEffect(() => {\n runtime.threads.__internal_setOptions(options);\n runtime.threads.__internal_load();\n }, [runtime, options]);\n return useMemo(() => AssistantRuntimeImpl
|
1
|
+
{"version":3,"sources":["../../../src/runtimes/remote-thread-list/useRemoteThreadListRuntime.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState, useEffect, useMemo } from \"react\";\nimport { BaseAssistantRuntimeCore } from \"../core/BaseAssistantRuntimeCore\";\nimport { RemoteThreadListThreadListRuntimeCore } from \"./RemoteThreadListThreadListRuntimeCore\";\nimport { RemoteThreadListOptions } from \"./types\";\nimport { AssistantRuntimeImpl } from \"../../internal\";\nimport { AssistantRuntimeCore } from \"../core/AssistantRuntimeCore\";\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\nexport const useRemoteThreadListRuntime = (\n options: RemoteThreadListOptions,\n) => {\n const [runtime] = useState(() => new RemoteThreadListRuntimeCore(options));\n useEffect(() => {\n runtime.threads.__internal_setOptions(options);\n runtime.threads.__internal_load();\n }, [runtime, options]);\n return useMemo(() => new AssistantRuntimeImpl(runtime), [runtime]);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAA6C;AAC7C,sCAAyC;AACzC,mDAAsD;AAEtD,sBAAqC;AAGrC,IAAM,8BAAN,cACU,yDAEV;AAAA,EACkB;AAAA,EAEhB,YAAY,SAAkC;AAC5C,UAAM;AACN,SAAK,UAAU,IAAI;AAAA,MACjB;AAAA,MACA,KAAK;AAAA,IACP;AAAA,EACF;AAAA,EAEA,IAAW,kBAAkB;AAC3B,WAAO,KAAK,QAAQ;AAAA,EACtB;AACF;AAEO,IAAM,6BAA6B,CACxC,YACG;AACH,QAAM,CAAC,OAAO,QAAI,uBAAS,MAAM,IAAI,4BAA4B,OAAO,CAAC;AACzE,8BAAU,MAAM;AACd,YAAQ,QAAQ,sBAAsB,OAAO;AAC7C,YAAQ,QAAQ,gBAAgB;AAAA,EAClC,GAAG,CAAC,SAAS,OAAO,CAAC;AACrB,aAAO,sBAAQ,MAAM,IAAI,qCAAqB,OAAO,GAAG,CAAC,OAAO,CAAC;AACnE;","names":[]}
|
@@ -24,7 +24,7 @@ var useRemoteThreadListRuntime = (options) => {
|
|
24
24
|
runtime.threads.__internal_setOptions(options);
|
25
25
|
runtime.threads.__internal_load();
|
26
26
|
}, [runtime, options]);
|
27
|
-
return useMemo(() => AssistantRuntimeImpl
|
27
|
+
return useMemo(() => new AssistantRuntimeImpl(runtime), [runtime]);
|
28
28
|
};
|
29
29
|
export {
|
30
30
|
useRemoteThreadListRuntime
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/runtimes/remote-thread-list/useRemoteThreadListRuntime.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState, useEffect, useMemo } from \"react\";\nimport { BaseAssistantRuntimeCore } from \"../core/BaseAssistantRuntimeCore\";\nimport { RemoteThreadListThreadListRuntimeCore } from \"./RemoteThreadListThreadListRuntimeCore\";\nimport { RemoteThreadListOptions } from \"./types\";\nimport { AssistantRuntimeImpl } from \"../../internal\";\nimport { AssistantRuntimeCore } from \"../core/AssistantRuntimeCore\";\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\nexport const useRemoteThreadListRuntime = (\n options: RemoteThreadListOptions,\n) => {\n const [runtime] = useState(() => new RemoteThreadListRuntimeCore(options));\n useEffect(() => {\n runtime.threads.__internal_setOptions(options);\n runtime.threads.__internal_load();\n }, [runtime, options]);\n return useMemo(() => AssistantRuntimeImpl
|
1
|
+
{"version":3,"sources":["../../../src/runtimes/remote-thread-list/useRemoteThreadListRuntime.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState, useEffect, useMemo } from \"react\";\nimport { BaseAssistantRuntimeCore } from \"../core/BaseAssistantRuntimeCore\";\nimport { RemoteThreadListThreadListRuntimeCore } from \"./RemoteThreadListThreadListRuntimeCore\";\nimport { RemoteThreadListOptions } from \"./types\";\nimport { AssistantRuntimeImpl } from \"../../internal\";\nimport { AssistantRuntimeCore } from \"../core/AssistantRuntimeCore\";\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\nexport const useRemoteThreadListRuntime = (\n options: RemoteThreadListOptions,\n) => {\n const [runtime] = useState(() => new RemoteThreadListRuntimeCore(options));\n useEffect(() => {\n runtime.threads.__internal_setOptions(options);\n runtime.threads.__internal_load();\n }, [runtime, options]);\n return useMemo(() => new AssistantRuntimeImpl(runtime), [runtime]);\n};\n"],"mappings":";;;AAEA,SAAS,UAAU,WAAW,eAAe;AAC7C,SAAS,gCAAgC;AACzC,SAAS,6CAA6C;AAEtD,SAAS,4BAA4B;AAGrC,IAAM,8BAAN,cACU,yBAEV;AAAA,EACkB;AAAA,EAEhB,YAAY,SAAkC;AAC5C,UAAM;AACN,SAAK,UAAU,IAAI;AAAA,MACjB;AAAA,MACA,KAAK;AAAA,IACP;AAAA,EACF;AAAA,EAEA,IAAW,kBAAkB;AAC3B,WAAO,KAAK,QAAQ;AAAA,EACtB;AACF;AAEO,IAAM,6BAA6B,CACxC,YACG;AACH,QAAM,CAAC,OAAO,IAAI,SAAS,MAAM,IAAI,4BAA4B,OAAO,CAAC;AACzE,YAAU,MAAM;AACd,YAAQ,QAAQ,sBAAsB,OAAO;AAC7C,YAAQ,QAAQ,gBAAgB;AAAA,EAClC,GAAG,CAAC,SAAS,OAAO,CAAC;AACrB,SAAO,QAAQ,MAAM,IAAI,qBAAqB,OAAO,GAAG,CAAC,OAAO,CAAC;AACnE;","names":[]}
|
@@ -1,15 +1,19 @@
|
|
1
1
|
import type { CoreMessage, ThreadMessage } from "../../types/AssistantTypes";
|
2
|
+
import { ThreadMessageLike } from "../external-store";
|
2
3
|
export type ExportedMessageRepositoryItem = {
|
3
4
|
message: ThreadMessage;
|
4
5
|
parentId: string | null;
|
5
6
|
};
|
6
|
-
export
|
7
|
+
export type ExportedMessageRepository = {
|
7
8
|
headId?: string | null;
|
8
9
|
messages: Array<{
|
9
10
|
message: ThreadMessage;
|
10
11
|
parentId: string | null;
|
11
12
|
}>;
|
12
|
-
}
|
13
|
+
};
|
14
|
+
export declare const ExportedMessageRepository: {
|
15
|
+
fromArray: (messages: readonly ThreadMessageLike[]) => ExportedMessageRepository;
|
16
|
+
};
|
13
17
|
export declare class MessageRepository {
|
14
18
|
private messages;
|
15
19
|
private head;
|
@@ -27,6 +31,7 @@ export declare class MessageRepository {
|
|
27
31
|
getBranches(messageId: string): string[];
|
28
32
|
switchToBranch(messageId: string): void;
|
29
33
|
resetHead(messageId: string | null): void;
|
34
|
+
clear(): void;
|
30
35
|
export(): ExportedMessageRepository;
|
31
36
|
import({ headId, messages }: ExportedMessageRepository): void;
|
32
37
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"MessageRepository.d.ts","sourceRoot":"","sources":["../../../src/runtimes/utils/MessageRepository.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;
|
1
|
+
{"version":3,"file":"MessageRepository.d.ts","sourceRoot":"","sources":["../../../src/runtimes/utils/MessageRepository.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAetD,MAAM,MAAM,6BAA6B,GAAG;IAC1C,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC;QACd,OAAO,EAAE,aAAa,CAAC;QACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;KACzB,CAAC,CAAC;CACJ,CAAC;AAEF,eAAO,MAAM,yBAAyB;0BAExB,SAAS,iBAAiB,EAAE,KACrC,yBAAyB;CAY7B,CAAC;AA2BF,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAwC;IACxD,OAAO,CAAC,IAAI,CAAkC;IAC9C,OAAO,CAAC,IAAI,CAGV;IAEF,OAAO,CAAC,SAAS;IA4DjB,OAAO,CAAC,SAAS,CAMd;IAEH,WAAW;IAIX,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,aAAa;IAmClE,UAAU,CAAC,SAAS,EAAE,MAAM;;;;IAa5B,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,WAAW;IAiBrE,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAsC1E,WAAW,CAAC,SAAS,EAAE,MAAM;IAW7B,cAAc,CAAC,SAAS,EAAE,MAAM;IAehC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IA2BlC,KAAK,IAAI,IAAI;IAUb,MAAM,IAAI,yBAAyB;IAkBnC,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,yBAAyB;CAQvD"}
|
@@ -20,11 +20,27 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
20
20
|
// src/runtimes/utils/MessageRepository.tsx
|
21
21
|
var MessageRepository_exports = {};
|
22
22
|
__export(MessageRepository_exports, {
|
23
|
+
ExportedMessageRepository: () => ExportedMessageRepository,
|
23
24
|
MessageRepository: () => MessageRepository
|
24
25
|
});
|
25
26
|
module.exports = __toCommonJS(MessageRepository_exports);
|
26
27
|
var import_idUtils = require("../../utils/idUtils.js");
|
27
28
|
var import_fromCoreMessage = require("../edge/converters/fromCoreMessage.js");
|
29
|
+
var import_auto_status = require("../external-store/auto-status.js");
|
30
|
+
var import_ThreadMessageLike = require("../external-store/ThreadMessageLike.js");
|
31
|
+
var ExportedMessageRepository = {
|
32
|
+
fromArray: (messages) => {
|
33
|
+
const conv = messages.map(
|
34
|
+
(m) => (0, import_ThreadMessageLike.fromThreadMessageLike)(m, (0, import_idUtils.generateId)(), (0, import_auto_status.getAutoStatus)(false, false))
|
35
|
+
);
|
36
|
+
return {
|
37
|
+
messages: conv.map((m, idx) => ({
|
38
|
+
parentId: idx > 0 ? conv[idx - 1].id : null,
|
39
|
+
message: m
|
40
|
+
}))
|
41
|
+
};
|
42
|
+
}
|
43
|
+
};
|
28
44
|
var findHead = (message) => {
|
29
45
|
if (message.next) return findHead(message.next);
|
30
46
|
if ("current" in message) return message;
|
@@ -217,6 +233,15 @@ var MessageRepository = class {
|
|
217
233
|
}
|
218
234
|
this._messages.dirty();
|
219
235
|
}
|
236
|
+
clear() {
|
237
|
+
this.messages.clear();
|
238
|
+
this.head = null;
|
239
|
+
this.root = {
|
240
|
+
children: [],
|
241
|
+
next: null
|
242
|
+
};
|
243
|
+
this._messages.dirty();
|
244
|
+
}
|
220
245
|
export() {
|
221
246
|
const exportItems = [];
|
222
247
|
for (const [, message] of this.messages) {
|
@@ -239,6 +264,7 @@ var MessageRepository = class {
|
|
239
264
|
};
|
240
265
|
// Annotate the CommonJS export names for ESM import in node:
|
241
266
|
0 && (module.exports = {
|
267
|
+
ExportedMessageRepository,
|
242
268
|
MessageRepository
|
243
269
|
});
|
244
270
|
//# sourceMappingURL=MessageRepository.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/runtimes/utils/MessageRepository.tsx"],"sourcesContent":["import type { CoreMessage, ThreadMessage } from \"../../types/AssistantTypes\";\nimport { generateOptimisticId } from \"../../utils/idUtils\";\nimport { fromCoreMessage } from \"../edge/converters/fromCoreMessage\";\n\ntype RepositoryParent = {\n children: string[];\n next: RepositoryMessage | null;\n};\n\ntype RepositoryMessage = RepositoryParent & {\n prev: RepositoryMessage | null;\n current: ThreadMessage;\n level: number;\n};\n\nexport type ExportedMessageRepositoryItem = {\n message: ThreadMessage;\n parentId: string | null;\n};\n\nexport interface ExportedMessageRepository {\n headId?: string | null;\n messages: Array<{\n message: ThreadMessage;\n parentId: string | null;\n }>;\n}\n\nconst findHead = (\n message: RepositoryMessage | RepositoryParent,\n): RepositoryMessage | null => {\n if (message.next) return findHead(message.next);\n if (\"current\" in message) return message;\n return null;\n};\n\nclass CachedValue<T> {\n private _value: T | null = null;\n\n constructor(private func: () => T) {}\n\n get value() {\n if (this._value === null) {\n this._value = this.func();\n }\n return this._value;\n }\n\n dirty() {\n this._value = null;\n }\n}\n\nexport class MessageRepository {\n private messages = new Map<string, RepositoryMessage>(); // message_id -> item\n private head: RepositoryMessage | null = null;\n private root: RepositoryParent = {\n children: [],\n next: null,\n };\n\n private performOp(\n newParent: RepositoryMessage | null,\n child: RepositoryMessage,\n operation: \"cut\" | \"link\" | \"relink\",\n ) {\n const parentOrRoot = child.prev ?? this.root;\n const newParentOrRoot = newParent ?? this.root;\n\n if (operation === \"relink\" && parentOrRoot === newParentOrRoot) return;\n\n // cut\n if (operation !== \"link\") {\n // remove from parentOrRoot.children\n parentOrRoot.children = parentOrRoot.children.filter(\n (m) => m !== child.current.id,\n );\n\n // update parentOrRoot.next\n if (parentOrRoot.next === child) {\n const fallbackId = parentOrRoot.children.at(-1);\n const fallback = fallbackId ? this.messages.get(fallbackId) : null;\n if (fallback === undefined) {\n throw new Error(\n \"MessageRepository(performOp/cut): Fallback sibling message not found. This is likely an internal bug in assistant-ui.\",\n );\n }\n parentOrRoot.next = fallback;\n }\n }\n\n // link\n if (operation !== \"cut\") {\n // ensure the child is not part of parent tree\n for (\n let current: RepositoryMessage | null = newParent;\n current;\n current = current.prev\n ) {\n if (current.current.id === child.current.id) {\n throw new Error(\n \"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.\",\n );\n }\n }\n\n // add to parentOrRoot.children\n newParentOrRoot.children = [\n ...newParentOrRoot.children,\n child.current.id,\n ];\n\n // update parentOrRoot.next\n if (findHead(child) === this.head || newParentOrRoot.next === null) {\n newParentOrRoot.next = child;\n }\n\n child.prev = newParent;\n }\n }\n\n private _messages = new CachedValue<readonly ThreadMessage[]>(() => {\n const messages = new Array<ThreadMessage>(this.head?.level ?? 0);\n for (let current = this.head; current; current = current.prev) {\n messages[current.level] = current.current;\n }\n return messages;\n });\n\n getMessages() {\n return this._messages.value;\n }\n\n addOrUpdateMessage(parentId: string | null, message: ThreadMessage) {\n const existingItem = this.messages.get(message.id);\n const prev = parentId ? this.messages.get(parentId) : null;\n if (prev === undefined)\n throw new Error(\n \"MessageRepository(addOrUpdateMessage): Parent message not found. This is likely an internal bug in assistant-ui.\",\n );\n\n // update existing message\n if (existingItem) {\n existingItem.current = message;\n this.performOp(prev, existingItem, \"relink\");\n this._messages.dirty();\n return;\n }\n\n // create a new message\n const newItem: RepositoryMessage = {\n prev,\n current: message,\n next: null,\n children: [],\n level: prev ? prev.level + 1 : 0,\n };\n\n this.messages.set(message.id, newItem);\n this.performOp(prev, newItem, \"link\");\n\n if (this.head === prev) {\n this.head = newItem;\n }\n\n this._messages.dirty();\n }\n\n getMessage(messageId: string) {\n const message = this.messages.get(messageId);\n if (!message)\n throw new Error(\n \"MessageRepository(updateMessage): Message not found. This is likely an internal bug in assistant-ui.\",\n );\n\n return {\n parentId: message.prev?.current.id ?? null,\n message: message.current,\n };\n }\n\n appendOptimisticMessage(parentId: string | null, message: CoreMessage) {\n let optimisticId: string;\n do {\n optimisticId = generateOptimisticId();\n } while (this.messages.has(optimisticId));\n\n this.addOrUpdateMessage(\n parentId,\n fromCoreMessage(message, {\n id: optimisticId,\n status: { type: \"running\" },\n }),\n );\n\n return optimisticId;\n }\n\n deleteMessage(messageId: string, replacementId?: string | null | undefined) {\n const message = this.messages.get(messageId);\n\n if (!message)\n throw new Error(\n \"MessageRepository(deleteMessage): Optimistic message not found. This is likely an internal bug in assistant-ui.\",\n );\n\n const replacement =\n replacementId === undefined\n ? message.prev // if no replacementId is provided, use the parent\n : replacementId === null\n ? null\n : this.messages.get(replacementId);\n if (replacement === undefined)\n throw new Error(\n \"MessageRepository(deleteMessage): Replacement not found. This is likely an internal bug in assistant-ui.\",\n );\n\n for (const child of message.children) {\n const childMessage = this.messages.get(child);\n if (!childMessage)\n throw new Error(\n \"MessageRepository(deleteMessage): Child message not found. This is likely an internal bug in assistant-ui.\",\n );\n this.performOp(replacement, childMessage, \"relink\");\n }\n\n this.performOp(null, message, \"cut\");\n this.messages.delete(messageId);\n\n if (this.head === message) {\n this.head = findHead(replacement ?? this.root);\n }\n\n this._messages.dirty();\n }\n\n getBranches(messageId: string) {\n const message = this.messages.get(messageId);\n if (!message)\n throw new Error(\n \"MessageRepository(getBranches): Message not found. This is likely an internal bug in assistant-ui.\",\n );\n\n const { children } = message.prev ?? this.root;\n return children;\n }\n\n switchToBranch(messageId: string) {\n const message = this.messages.get(messageId);\n if (!message)\n throw new Error(\n \"MessageRepository(switchToBranch): Branch not found. This is likely an internal bug in assistant-ui.\",\n );\n\n const prevOrRoot = message.prev ?? this.root;\n prevOrRoot.next = message;\n\n this.head = findHead(message);\n\n this._messages.dirty();\n }\n\n resetHead(messageId: string | null) {\n if (messageId === null) {\n this.head = null;\n this._messages.dirty();\n return;\n }\n\n const message = this.messages.get(messageId);\n if (!message)\n throw new Error(\n \"MessageRepository(resetHead): Branch not found. This is likely an internal bug in assistant-ui.\",\n );\n\n this.head = message;\n for (\n let current: RepositoryMessage | null = message;\n current;\n current = current.prev\n ) {\n if (current.prev) {\n current.prev.next = current;\n }\n }\n\n this._messages.dirty();\n }\n\n export(): ExportedMessageRepository {\n const exportItems: ExportedMessageRepository[\"messages\"] = [];\n\n // hint: we are relying on the insertion order of the messages\n // this is important for the import function to properly link the messages\n for (const [, message] of this.messages) {\n exportItems.push({\n message: message.current,\n parentId: message.prev?.current.id ?? null,\n });\n }\n\n return {\n headId: this.head?.current.id ?? null,\n messages: exportItems,\n };\n }\n\n import({ headId, messages }: ExportedMessageRepository) {\n for (const { message, parentId } of messages) {\n this.addOrUpdateMessage(parentId, message);\n }\n\n // switch to the saved head id if it is not the most recent message\n this.resetHead(headId ?? messages.at(-1)?.message.id ?? null);\n }\n}\n"],"mappings":"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","names":[]}
|
1
|
+
{"version":3,"sources":["../../../src/runtimes/utils/MessageRepository.tsx"],"sourcesContent":["import type { CoreMessage, ThreadMessage } from \"../../types/AssistantTypes\";\nimport { generateId, generateOptimisticId } from \"../../utils/idUtils\";\nimport { fromCoreMessage } from \"../edge/converters/fromCoreMessage\";\nimport { ThreadMessageLike } from \"../external-store\";\nimport { getAutoStatus } from \"../external-store/auto-status\";\nimport { fromThreadMessageLike } from \"../external-store/ThreadMessageLike\";\n\ntype RepositoryParent = {\n children: string[];\n next: RepositoryMessage | null;\n};\n\ntype RepositoryMessage = RepositoryParent & {\n prev: RepositoryMessage | null;\n current: ThreadMessage;\n level: number;\n};\n\nexport type ExportedMessageRepositoryItem = {\n message: ThreadMessage;\n parentId: string | null;\n};\n\nexport type ExportedMessageRepository = {\n headId?: string | null;\n messages: Array<{\n message: ThreadMessage;\n parentId: string | null;\n }>;\n};\n\nexport const ExportedMessageRepository = {\n fromArray: (\n messages: readonly ThreadMessageLike[],\n ): ExportedMessageRepository => {\n const conv = messages.map((m) =>\n fromThreadMessageLike(m, generateId(), getAutoStatus(false, false)),\n );\n\n return {\n messages: conv.map((m, idx) => ({\n parentId: idx > 0 ? conv[idx - 1]!.id : null,\n message: m,\n })),\n };\n },\n};\n\nconst findHead = (\n message: RepositoryMessage | RepositoryParent,\n): RepositoryMessage | null => {\n if (message.next) return findHead(message.next);\n if (\"current\" in message) return message;\n return null;\n};\n\nclass CachedValue<T> {\n private _value: T | null = null;\n\n constructor(private func: () => T) {}\n\n get value() {\n if (this._value === null) {\n this._value = this.func();\n }\n return this._value;\n }\n\n dirty() {\n this._value = null;\n }\n}\n\nexport class MessageRepository {\n private messages = new Map<string, RepositoryMessage>(); // message_id -> item\n private head: RepositoryMessage | null = null;\n private root: RepositoryParent = {\n children: [],\n next: null,\n };\n\n private performOp(\n newParent: RepositoryMessage | null,\n child: RepositoryMessage,\n operation: \"cut\" | \"link\" | \"relink\",\n ) {\n const parentOrRoot = child.prev ?? this.root;\n const newParentOrRoot = newParent ?? this.root;\n\n if (operation === \"relink\" && parentOrRoot === newParentOrRoot) return;\n\n // cut\n if (operation !== \"link\") {\n // remove from parentOrRoot.children\n parentOrRoot.children = parentOrRoot.children.filter(\n (m) => m !== child.current.id,\n );\n\n // update parentOrRoot.next\n if (parentOrRoot.next === child) {\n const fallbackId = parentOrRoot.children.at(-1);\n const fallback = fallbackId ? this.messages.get(fallbackId) : null;\n if (fallback === undefined) {\n throw new Error(\n \"MessageRepository(performOp/cut): Fallback sibling message not found. This is likely an internal bug in assistant-ui.\",\n );\n }\n parentOrRoot.next = fallback;\n }\n }\n\n // link\n if (operation !== \"cut\") {\n // ensure the child is not part of parent tree\n for (\n let current: RepositoryMessage | null = newParent;\n current;\n current = current.prev\n ) {\n if (current.current.id === child.current.id) {\n throw new Error(\n \"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.\",\n );\n }\n }\n\n // add to parentOrRoot.children\n newParentOrRoot.children = [\n ...newParentOrRoot.children,\n child.current.id,\n ];\n\n // update parentOrRoot.next\n if (findHead(child) === this.head || newParentOrRoot.next === null) {\n newParentOrRoot.next = child;\n }\n\n child.prev = newParent;\n }\n }\n\n private _messages = new CachedValue<readonly ThreadMessage[]>(() => {\n const messages = new Array<ThreadMessage>(this.head?.level ?? 0);\n for (let current = this.head; current; current = current.prev) {\n messages[current.level] = current.current;\n }\n return messages;\n });\n\n getMessages() {\n return this._messages.value;\n }\n\n addOrUpdateMessage(parentId: string | null, message: ThreadMessage) {\n const existingItem = this.messages.get(message.id);\n const prev = parentId ? this.messages.get(parentId) : null;\n if (prev === undefined)\n throw new Error(\n \"MessageRepository(addOrUpdateMessage): Parent message not found. This is likely an internal bug in assistant-ui.\",\n );\n\n // update existing message\n if (existingItem) {\n existingItem.current = message;\n this.performOp(prev, existingItem, \"relink\");\n this._messages.dirty();\n return;\n }\n\n // create a new message\n const newItem: RepositoryMessage = {\n prev,\n current: message,\n next: null,\n children: [],\n level: prev ? prev.level + 1 : 0,\n };\n\n this.messages.set(message.id, newItem);\n this.performOp(prev, newItem, \"link\");\n\n if (this.head === prev) {\n this.head = newItem;\n }\n\n this._messages.dirty();\n }\n\n getMessage(messageId: string) {\n const message = this.messages.get(messageId);\n if (!message)\n throw new Error(\n \"MessageRepository(updateMessage): Message not found. This is likely an internal bug in assistant-ui.\",\n );\n\n return {\n parentId: message.prev?.current.id ?? null,\n message: message.current,\n };\n }\n\n appendOptimisticMessage(parentId: string | null, message: CoreMessage) {\n let optimisticId: string;\n do {\n optimisticId = generateOptimisticId();\n } while (this.messages.has(optimisticId));\n\n this.addOrUpdateMessage(\n parentId,\n fromCoreMessage(message, {\n id: optimisticId,\n status: { type: \"running\" },\n }),\n );\n\n return optimisticId;\n }\n\n deleteMessage(messageId: string, replacementId?: string | null | undefined) {\n const message = this.messages.get(messageId);\n\n if (!message)\n throw new Error(\n \"MessageRepository(deleteMessage): Optimistic message not found. This is likely an internal bug in assistant-ui.\",\n );\n\n const replacement =\n replacementId === undefined\n ? message.prev // if no replacementId is provided, use the parent\n : replacementId === null\n ? null\n : this.messages.get(replacementId);\n if (replacement === undefined)\n throw new Error(\n \"MessageRepository(deleteMessage): Replacement not found. This is likely an internal bug in assistant-ui.\",\n );\n\n for (const child of message.children) {\n const childMessage = this.messages.get(child);\n if (!childMessage)\n throw new Error(\n \"MessageRepository(deleteMessage): Child message not found. This is likely an internal bug in assistant-ui.\",\n );\n this.performOp(replacement, childMessage, \"relink\");\n }\n\n this.performOp(null, message, \"cut\");\n this.messages.delete(messageId);\n\n if (this.head === message) {\n this.head = findHead(replacement ?? this.root);\n }\n\n this._messages.dirty();\n }\n\n getBranches(messageId: string) {\n const message = this.messages.get(messageId);\n if (!message)\n throw new Error(\n \"MessageRepository(getBranches): Message not found. This is likely an internal bug in assistant-ui.\",\n );\n\n const { children } = message.prev ?? this.root;\n return children;\n }\n\n switchToBranch(messageId: string) {\n const message = this.messages.get(messageId);\n if (!message)\n throw new Error(\n \"MessageRepository(switchToBranch): Branch not found. This is likely an internal bug in assistant-ui.\",\n );\n\n const prevOrRoot = message.prev ?? this.root;\n prevOrRoot.next = message;\n\n this.head = findHead(message);\n\n this._messages.dirty();\n }\n\n resetHead(messageId: string | null) {\n if (messageId === null) {\n this.head = null;\n this._messages.dirty();\n return;\n }\n\n const message = this.messages.get(messageId);\n if (!message)\n throw new Error(\n \"MessageRepository(resetHead): Branch not found. This is likely an internal bug in assistant-ui.\",\n );\n\n this.head = message;\n for (\n let current: RepositoryMessage | null = message;\n current;\n current = current.prev\n ) {\n if (current.prev) {\n current.prev.next = current;\n }\n }\n\n this._messages.dirty();\n }\n\n clear(): void {\n this.messages.clear();\n this.head = null;\n this.root = {\n children: [],\n next: null,\n };\n this._messages.dirty();\n }\n\n export(): ExportedMessageRepository {\n const exportItems: ExportedMessageRepository[\"messages\"] = [];\n\n // hint: we are relying on the insertion order of the messages\n // this is important for the import function to properly link the messages\n for (const [, message] of this.messages) {\n exportItems.push({\n message: message.current,\n parentId: message.prev?.current.id ?? null,\n });\n }\n\n return {\n headId: this.head?.current.id ?? null,\n messages: exportItems,\n };\n }\n\n import({ headId, messages }: ExportedMessageRepository) {\n for (const { message, parentId } of messages) {\n this.addOrUpdateMessage(parentId, message);\n }\n\n // switch to the saved head id if it is not the most recent message\n this.resetHead(headId ?? messages.at(-1)?.message.id ?? null);\n }\n}\n"],"mappings":"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","names":[]}
|
@@ -1,6 +1,21 @@
|
|
1
1
|
// src/runtimes/utils/MessageRepository.tsx
|
2
|
-
import { generateOptimisticId } from "../../utils/idUtils.mjs";
|
2
|
+
import { generateId, generateOptimisticId } from "../../utils/idUtils.mjs";
|
3
3
|
import { fromCoreMessage } from "../edge/converters/fromCoreMessage.mjs";
|
4
|
+
import { getAutoStatus } from "../external-store/auto-status.mjs";
|
5
|
+
import { fromThreadMessageLike } from "../external-store/ThreadMessageLike.mjs";
|
6
|
+
var ExportedMessageRepository = {
|
7
|
+
fromArray: (messages) => {
|
8
|
+
const conv = messages.map(
|
9
|
+
(m) => fromThreadMessageLike(m, generateId(), getAutoStatus(false, false))
|
10
|
+
);
|
11
|
+
return {
|
12
|
+
messages: conv.map((m, idx) => ({
|
13
|
+
parentId: idx > 0 ? conv[idx - 1].id : null,
|
14
|
+
message: m
|
15
|
+
}))
|
16
|
+
};
|
17
|
+
}
|
18
|
+
};
|
4
19
|
var findHead = (message) => {
|
5
20
|
if (message.next) return findHead(message.next);
|
6
21
|
if ("current" in message) return message;
|
@@ -193,6 +208,15 @@ var MessageRepository = class {
|
|
193
208
|
}
|
194
209
|
this._messages.dirty();
|
195
210
|
}
|
211
|
+
clear() {
|
212
|
+
this.messages.clear();
|
213
|
+
this.head = null;
|
214
|
+
this.root = {
|
215
|
+
children: [],
|
216
|
+
next: null
|
217
|
+
};
|
218
|
+
this._messages.dirty();
|
219
|
+
}
|
196
220
|
export() {
|
197
221
|
const exportItems = [];
|
198
222
|
for (const [, message] of this.messages) {
|
@@ -214,6 +238,7 @@ var MessageRepository = class {
|
|
214
238
|
}
|
215
239
|
};
|
216
240
|
export {
|
241
|
+
ExportedMessageRepository,
|
217
242
|
MessageRepository
|
218
243
|
};
|
219
244
|
//# sourceMappingURL=MessageRepository.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/runtimes/utils/MessageRepository.tsx"],"sourcesContent":["import type { CoreMessage, ThreadMessage } from \"../../types/AssistantTypes\";\nimport { generateOptimisticId } from \"../../utils/idUtils\";\nimport { fromCoreMessage } from \"../edge/converters/fromCoreMessage\";\n\ntype RepositoryParent = {\n children: string[];\n next: RepositoryMessage | null;\n};\n\ntype RepositoryMessage = RepositoryParent & {\n prev: RepositoryMessage | null;\n current: ThreadMessage;\n level: number;\n};\n\nexport type ExportedMessageRepositoryItem = {\n message: ThreadMessage;\n parentId: string | null;\n};\n\nexport interface ExportedMessageRepository {\n headId?: string | null;\n messages: Array<{\n message: ThreadMessage;\n parentId: string | null;\n }>;\n}\n\nconst findHead = (\n message: RepositoryMessage | RepositoryParent,\n): RepositoryMessage | null => {\n if (message.next) return findHead(message.next);\n if (\"current\" in message) return message;\n return null;\n};\n\nclass CachedValue<T> {\n private _value: T | null = null;\n\n constructor(private func: () => T) {}\n\n get value() {\n if (this._value === null) {\n this._value = this.func();\n }\n return this._value;\n }\n\n dirty() {\n this._value = null;\n }\n}\n\nexport class MessageRepository {\n private messages = new Map<string, RepositoryMessage>(); // message_id -> item\n private head: RepositoryMessage | null = null;\n private root: RepositoryParent = {\n children: [],\n next: null,\n };\n\n private performOp(\n newParent: RepositoryMessage | null,\n child: RepositoryMessage,\n operation: \"cut\" | \"link\" | \"relink\",\n ) {\n const parentOrRoot = child.prev ?? this.root;\n const newParentOrRoot = newParent ?? this.root;\n\n if (operation === \"relink\" && parentOrRoot === newParentOrRoot) return;\n\n // cut\n if (operation !== \"link\") {\n // remove from parentOrRoot.children\n parentOrRoot.children = parentOrRoot.children.filter(\n (m) => m !== child.current.id,\n );\n\n // update parentOrRoot.next\n if (parentOrRoot.next === child) {\n const fallbackId = parentOrRoot.children.at(-1);\n const fallback = fallbackId ? this.messages.get(fallbackId) : null;\n if (fallback === undefined) {\n throw new Error(\n \"MessageRepository(performOp/cut): Fallback sibling message not found. This is likely an internal bug in assistant-ui.\",\n );\n }\n parentOrRoot.next = fallback;\n }\n }\n\n // link\n if (operation !== \"cut\") {\n // ensure the child is not part of parent tree\n for (\n let current: RepositoryMessage | null = newParent;\n current;\n current = current.prev\n ) {\n if (current.current.id === child.current.id) {\n throw new Error(\n \"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.\",\n );\n }\n }\n\n // add to parentOrRoot.children\n newParentOrRoot.children = [\n ...newParentOrRoot.children,\n child.current.id,\n ];\n\n // update parentOrRoot.next\n if (findHead(child) === this.head || newParentOrRoot.next === null) {\n newParentOrRoot.next = child;\n }\n\n child.prev = newParent;\n }\n }\n\n private _messages = new CachedValue<readonly ThreadMessage[]>(() => {\n const messages = new Array<ThreadMessage>(this.head?.level ?? 0);\n for (let current = this.head; current; current = current.prev) {\n messages[current.level] = current.current;\n }\n return messages;\n });\n\n getMessages() {\n return this._messages.value;\n }\n\n addOrUpdateMessage(parentId: string | null, message: ThreadMessage) {\n const existingItem = this.messages.get(message.id);\n const prev = parentId ? this.messages.get(parentId) : null;\n if (prev === undefined)\n throw new Error(\n \"MessageRepository(addOrUpdateMessage): Parent message not found. This is likely an internal bug in assistant-ui.\",\n );\n\n // update existing message\n if (existingItem) {\n existingItem.current = message;\n this.performOp(prev, existingItem, \"relink\");\n this._messages.dirty();\n return;\n }\n\n // create a new message\n const newItem: RepositoryMessage = {\n prev,\n current: message,\n next: null,\n children: [],\n level: prev ? prev.level + 1 : 0,\n };\n\n this.messages.set(message.id, newItem);\n this.performOp(prev, newItem, \"link\");\n\n if (this.head === prev) {\n this.head = newItem;\n }\n\n this._messages.dirty();\n }\n\n getMessage(messageId: string) {\n const message = this.messages.get(messageId);\n if (!message)\n throw new Error(\n \"MessageRepository(updateMessage): Message not found. This is likely an internal bug in assistant-ui.\",\n );\n\n return {\n parentId: message.prev?.current.id ?? null,\n message: message.current,\n };\n }\n\n appendOptimisticMessage(parentId: string | null, message: CoreMessage) {\n let optimisticId: string;\n do {\n optimisticId = generateOptimisticId();\n } while (this.messages.has(optimisticId));\n\n this.addOrUpdateMessage(\n parentId,\n fromCoreMessage(message, {\n id: optimisticId,\n status: { type: \"running\" },\n }),\n );\n\n return optimisticId;\n }\n\n deleteMessage(messageId: string, replacementId?: string | null | undefined) {\n const message = this.messages.get(messageId);\n\n if (!message)\n throw new Error(\n \"MessageRepository(deleteMessage): Optimistic message not found. This is likely an internal bug in assistant-ui.\",\n );\n\n const replacement =\n replacementId === undefined\n ? message.prev // if no replacementId is provided, use the parent\n : replacementId === null\n ? null\n : this.messages.get(replacementId);\n if (replacement === undefined)\n throw new Error(\n \"MessageRepository(deleteMessage): Replacement not found. This is likely an internal bug in assistant-ui.\",\n );\n\n for (const child of message.children) {\n const childMessage = this.messages.get(child);\n if (!childMessage)\n throw new Error(\n \"MessageRepository(deleteMessage): Child message not found. This is likely an internal bug in assistant-ui.\",\n );\n this.performOp(replacement, childMessage, \"relink\");\n }\n\n this.performOp(null, message, \"cut\");\n this.messages.delete(messageId);\n\n if (this.head === message) {\n this.head = findHead(replacement ?? this.root);\n }\n\n this._messages.dirty();\n }\n\n getBranches(messageId: string) {\n const message = this.messages.get(messageId);\n if (!message)\n throw new Error(\n \"MessageRepository(getBranches): Message not found. This is likely an internal bug in assistant-ui.\",\n );\n\n const { children } = message.prev ?? this.root;\n return children;\n }\n\n switchToBranch(messageId: string) {\n const message = this.messages.get(messageId);\n if (!message)\n throw new Error(\n \"MessageRepository(switchToBranch): Branch not found. This is likely an internal bug in assistant-ui.\",\n );\n\n const prevOrRoot = message.prev ?? this.root;\n prevOrRoot.next = message;\n\n this.head = findHead(message);\n\n this._messages.dirty();\n }\n\n resetHead(messageId: string | null) {\n if (messageId === null) {\n this.head = null;\n this._messages.dirty();\n return;\n }\n\n const message = this.messages.get(messageId);\n if (!message)\n throw new Error(\n \"MessageRepository(resetHead): Branch not found. This is likely an internal bug in assistant-ui.\",\n );\n\n this.head = message;\n for (\n let current: RepositoryMessage | null = message;\n current;\n current = current.prev\n ) {\n if (current.prev) {\n current.prev.next = current;\n }\n }\n\n this._messages.dirty();\n }\n\n export(): ExportedMessageRepository {\n const exportItems: ExportedMessageRepository[\"messages\"] = [];\n\n // hint: we are relying on the insertion order of the messages\n // this is important for the import function to properly link the messages\n for (const [, message] of this.messages) {\n exportItems.push({\n message: message.current,\n parentId: message.prev?.current.id ?? null,\n });\n }\n\n return {\n headId: this.head?.current.id ?? null,\n messages: exportItems,\n };\n }\n\n import({ headId, messages }: ExportedMessageRepository) {\n for (const { message, parentId } of messages) {\n this.addOrUpdateMessage(parentId, message);\n }\n\n // switch to the saved head id if it is not the most recent message\n this.resetHead(headId ?? messages.at(-1)?.message.id ?? null);\n }\n}\n"],"mappings":"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","names":[]}
|
1
|
+
{"version":3,"sources":["../../../src/runtimes/utils/MessageRepository.tsx"],"sourcesContent":["import type { CoreMessage, ThreadMessage } from \"../../types/AssistantTypes\";\nimport { generateId, generateOptimisticId } from \"../../utils/idUtils\";\nimport { fromCoreMessage } from \"../edge/converters/fromCoreMessage\";\nimport { ThreadMessageLike } from \"../external-store\";\nimport { getAutoStatus } from \"../external-store/auto-status\";\nimport { fromThreadMessageLike } from \"../external-store/ThreadMessageLike\";\n\ntype RepositoryParent = {\n children: string[];\n next: RepositoryMessage | null;\n};\n\ntype RepositoryMessage = RepositoryParent & {\n prev: RepositoryMessage | null;\n current: ThreadMessage;\n level: number;\n};\n\nexport type ExportedMessageRepositoryItem = {\n message: ThreadMessage;\n parentId: string | null;\n};\n\nexport type ExportedMessageRepository = {\n headId?: string | null;\n messages: Array<{\n message: ThreadMessage;\n parentId: string | null;\n }>;\n};\n\nexport const ExportedMessageRepository = {\n fromArray: (\n messages: readonly ThreadMessageLike[],\n ): ExportedMessageRepository => {\n const conv = messages.map((m) =>\n fromThreadMessageLike(m, generateId(), getAutoStatus(false, false)),\n );\n\n return {\n messages: conv.map((m, idx) => ({\n parentId: idx > 0 ? conv[idx - 1]!.id : null,\n message: m,\n })),\n };\n },\n};\n\nconst findHead = (\n message: RepositoryMessage | RepositoryParent,\n): RepositoryMessage | null => {\n if (message.next) return findHead(message.next);\n if (\"current\" in message) return message;\n return null;\n};\n\nclass CachedValue<T> {\n private _value: T | null = null;\n\n constructor(private func: () => T) {}\n\n get value() {\n if (this._value === null) {\n this._value = this.func();\n }\n return this._value;\n }\n\n dirty() {\n this._value = null;\n }\n}\n\nexport class MessageRepository {\n private messages = new Map<string, RepositoryMessage>(); // message_id -> item\n private head: RepositoryMessage | null = null;\n private root: RepositoryParent = {\n children: [],\n next: null,\n };\n\n private performOp(\n newParent: RepositoryMessage | null,\n child: RepositoryMessage,\n operation: \"cut\" | \"link\" | \"relink\",\n ) {\n const parentOrRoot = child.prev ?? this.root;\n const newParentOrRoot = newParent ?? this.root;\n\n if (operation === \"relink\" && parentOrRoot === newParentOrRoot) return;\n\n // cut\n if (operation !== \"link\") {\n // remove from parentOrRoot.children\n parentOrRoot.children = parentOrRoot.children.filter(\n (m) => m !== child.current.id,\n );\n\n // update parentOrRoot.next\n if (parentOrRoot.next === child) {\n const fallbackId = parentOrRoot.children.at(-1);\n const fallback = fallbackId ? this.messages.get(fallbackId) : null;\n if (fallback === undefined) {\n throw new Error(\n \"MessageRepository(performOp/cut): Fallback sibling message not found. This is likely an internal bug in assistant-ui.\",\n );\n }\n parentOrRoot.next = fallback;\n }\n }\n\n // link\n if (operation !== \"cut\") {\n // ensure the child is not part of parent tree\n for (\n let current: RepositoryMessage | null = newParent;\n current;\n current = current.prev\n ) {\n if (current.current.id === child.current.id) {\n throw new Error(\n \"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.\",\n );\n }\n }\n\n // add to parentOrRoot.children\n newParentOrRoot.children = [\n ...newParentOrRoot.children,\n child.current.id,\n ];\n\n // update parentOrRoot.next\n if (findHead(child) === this.head || newParentOrRoot.next === null) {\n newParentOrRoot.next = child;\n }\n\n child.prev = newParent;\n }\n }\n\n private _messages = new CachedValue<readonly ThreadMessage[]>(() => {\n const messages = new Array<ThreadMessage>(this.head?.level ?? 0);\n for (let current = this.head; current; current = current.prev) {\n messages[current.level] = current.current;\n }\n return messages;\n });\n\n getMessages() {\n return this._messages.value;\n }\n\n addOrUpdateMessage(parentId: string | null, message: ThreadMessage) {\n const existingItem = this.messages.get(message.id);\n const prev = parentId ? this.messages.get(parentId) : null;\n if (prev === undefined)\n throw new Error(\n \"MessageRepository(addOrUpdateMessage): Parent message not found. This is likely an internal bug in assistant-ui.\",\n );\n\n // update existing message\n if (existingItem) {\n existingItem.current = message;\n this.performOp(prev, existingItem, \"relink\");\n this._messages.dirty();\n return;\n }\n\n // create a new message\n const newItem: RepositoryMessage = {\n prev,\n current: message,\n next: null,\n children: [],\n level: prev ? prev.level + 1 : 0,\n };\n\n this.messages.set(message.id, newItem);\n this.performOp(prev, newItem, \"link\");\n\n if (this.head === prev) {\n this.head = newItem;\n }\n\n this._messages.dirty();\n }\n\n getMessage(messageId: string) {\n const message = this.messages.get(messageId);\n if (!message)\n throw new Error(\n \"MessageRepository(updateMessage): Message not found. This is likely an internal bug in assistant-ui.\",\n );\n\n return {\n parentId: message.prev?.current.id ?? null,\n message: message.current,\n };\n }\n\n appendOptimisticMessage(parentId: string | null, message: CoreMessage) {\n let optimisticId: string;\n do {\n optimisticId = generateOptimisticId();\n } while (this.messages.has(optimisticId));\n\n this.addOrUpdateMessage(\n parentId,\n fromCoreMessage(message, {\n id: optimisticId,\n status: { type: \"running\" },\n }),\n );\n\n return optimisticId;\n }\n\n deleteMessage(messageId: string, replacementId?: string | null | undefined) {\n const message = this.messages.get(messageId);\n\n if (!message)\n throw new Error(\n \"MessageRepository(deleteMessage): Optimistic message not found. This is likely an internal bug in assistant-ui.\",\n );\n\n const replacement =\n replacementId === undefined\n ? message.prev // if no replacementId is provided, use the parent\n : replacementId === null\n ? null\n : this.messages.get(replacementId);\n if (replacement === undefined)\n throw new Error(\n \"MessageRepository(deleteMessage): Replacement not found. This is likely an internal bug in assistant-ui.\",\n );\n\n for (const child of message.children) {\n const childMessage = this.messages.get(child);\n if (!childMessage)\n throw new Error(\n \"MessageRepository(deleteMessage): Child message not found. This is likely an internal bug in assistant-ui.\",\n );\n this.performOp(replacement, childMessage, \"relink\");\n }\n\n this.performOp(null, message, \"cut\");\n this.messages.delete(messageId);\n\n if (this.head === message) {\n this.head = findHead(replacement ?? this.root);\n }\n\n this._messages.dirty();\n }\n\n getBranches(messageId: string) {\n const message = this.messages.get(messageId);\n if (!message)\n throw new Error(\n \"MessageRepository(getBranches): Message not found. This is likely an internal bug in assistant-ui.\",\n );\n\n const { children } = message.prev ?? this.root;\n return children;\n }\n\n switchToBranch(messageId: string) {\n const message = this.messages.get(messageId);\n if (!message)\n throw new Error(\n \"MessageRepository(switchToBranch): Branch not found. This is likely an internal bug in assistant-ui.\",\n );\n\n const prevOrRoot = message.prev ?? this.root;\n prevOrRoot.next = message;\n\n this.head = findHead(message);\n\n this._messages.dirty();\n }\n\n resetHead(messageId: string | null) {\n if (messageId === null) {\n this.head = null;\n this._messages.dirty();\n return;\n }\n\n const message = this.messages.get(messageId);\n if (!message)\n throw new Error(\n \"MessageRepository(resetHead): Branch not found. This is likely an internal bug in assistant-ui.\",\n );\n\n this.head = message;\n for (\n let current: RepositoryMessage | null = message;\n current;\n current = current.prev\n ) {\n if (current.prev) {\n current.prev.next = current;\n }\n }\n\n this._messages.dirty();\n }\n\n clear(): void {\n this.messages.clear();\n this.head = null;\n this.root = {\n children: [],\n next: null,\n };\n this._messages.dirty();\n }\n\n export(): ExportedMessageRepository {\n const exportItems: ExportedMessageRepository[\"messages\"] = [];\n\n // hint: we are relying on the insertion order of the messages\n // this is important for the import function to properly link the messages\n for (const [, message] of this.messages) {\n exportItems.push({\n message: message.current,\n parentId: message.prev?.current.id ?? null,\n });\n }\n\n return {\n headId: this.head?.current.id ?? null,\n messages: exportItems,\n };\n }\n\n import({ headId, messages }: ExportedMessageRepository) {\n for (const { message, parentId } of messages) {\n this.addOrUpdateMessage(parentId, message);\n }\n\n // switch to the saved head id if it is not the most recent message\n this.resetHead(headId ?? messages.at(-1)?.message.id ?? null);\n }\n}\n"],"mappings":"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","names":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tailwindcss/index.ts"],"names":[],"mappings":"AAOA,KAAK,6BAA6B,GAAG;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,SAAS,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,WAAW,EAAE;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,KAAK,EAAE;QACL,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH,CAAC;AAEF,KAAK,+BAA+B,GAAG;IACrC,UAAU,CAAC,EAAE,CAAC,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,iBAAiB,CAAC,EAAE,CAAC;IACzE,MAAM,CAAC,EAAE,6BAA6B,CAAC;IACvC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,QAAA,MAAM,SAAS;;;
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tailwindcss/index.ts"],"names":[],"mappings":"AAOA,KAAK,6BAA6B,GAAG;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,SAAS,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,WAAW,EAAE;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,KAAK,EAAE;QACL,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH,CAAC;AAEF,KAAK,+BAA+B,GAAG;IACrC,UAAU,CAAC,EAAE,CAAC,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,iBAAiB,CAAC,EAAE,CAAC;IACzE,MAAM,CAAC,EAAE,6BAA6B,CAAC;IACvC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,QAAA,MAAM,SAAS;;;cA/CkE,CAAC;;;CAgJjF,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
@@ -134,10 +134,7 @@ var auiPlugin = import_plugin.default.withOptions(
|
|
134
134
|
addComponents(import_modal_css.default);
|
135
135
|
}
|
136
136
|
},
|
137
|
-
({
|
138
|
-
colors = {},
|
139
|
-
shadcn = false
|
140
|
-
} = {}) => {
|
137
|
+
({ colors = {}, shadcn = false } = {}) => {
|
141
138
|
const prefix = !shadcn ? "--aui-" : "--";
|
142
139
|
return {
|
143
140
|
safelist: [{ pattern: /^aui-/ }],
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../node_modules/.pnpm/tailwindcss@3.4.17/node_modules/tailwindcss/lib/util/createPlugin.js","../../../../node_modules/.pnpm/tailwindcss@3.4.17/node_modules/tailwindcss/lib/public/create-plugin.js","../../../../node_modules/.pnpm/tailwindcss@3.4.17/node_modules/tailwindcss/plugin.js","../../src/tailwindcss/index.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nfunction createPlugin(plugin, config) {\n return {\n handler: plugin,\n config\n };\n}\ncreatePlugin.withOptions = function(pluginFunction, configFunction = ()=>({})) {\n const optionsFunction = function(options) {\n return {\n __options: options,\n handler: pluginFunction(options),\n config: configFunction(options)\n };\n };\n optionsFunction.__isOptionsFunction = true;\n // Expose plugin dependencies so that `object-hash` returns a different\n // value if anything here changes, to ensure a rebuild is triggered.\n optionsFunction.__pluginFunction = pluginFunction;\n optionsFunction.__configFunction = configFunction;\n return optionsFunction;\n};\nconst _default = createPlugin;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _createPlugin = /*#__PURE__*/ _interop_require_default(require(\"../util/createPlugin\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nconst _default = _createPlugin.default;\n","let createPlugin = require('./lib/public/create-plugin')\nmodule.exports = (createPlugin.__esModule ? createPlugin : { default: createPlugin }).default\n","import plugin from \"tailwindcss/plugin.js\";\nimport baseComponentsCSS from \"../../dist/styles/tailwindcss/base-components.css.json\";\nimport threadCSS from \"../../dist/styles/tailwindcss/thread.css.json\";\nimport modalCSS from \"../../dist/styles/tailwindcss/modal.css.json\";\nimport defaultThemeCSS from \"../../dist/styles/themes/default.css.json\";\nimport shadcnExtrasCSS from \"../../dist/styles/themes/shadcn-extras.css.json\";\n\ntype AssistantTailwindPluginColors = {\n border: string;\n input: string;\n ring: string;\n background: string;\n foreground: string;\n primary: {\n DEFAULT: string;\n foreground: string;\n };\n secondary: {\n DEFAULT: string;\n foreground: string;\n };\n destructive: {\n DEFAULT: string;\n foreground: string;\n };\n muted: {\n DEFAULT: string;\n foreground: string;\n };\n accent: {\n DEFAULT: string;\n foreground: string;\n };\n popover: {\n DEFAULT: string;\n foreground: string;\n };\n card: {\n DEFAULT: string;\n foreground: string;\n };\n};\n\ntype AssisstantTailwindPluginOptions = {\n components?: (\"default-theme\" | \"base\" | \"thread\" | \"assistant-modal\")[];\n colors?: AssistantTailwindPluginColors;\n shadcn?: boolean;\n};\n\nconst auiPlugin = plugin.withOptions<AssisstantTailwindPluginOptions>(\n ({ components = [\"assistant-modal\", \"thread\"], shadcn = false } = {}) =>\n ({ addComponents }) => {\n const assistantModal = components.includes(\"assistant-modal\");\n const thread = assistantModal || components.includes(\"thread\");\n const base = thread || components.includes(\"base\");\n const defaultTheme = components.includes(\"default-theme\");\n\n if (defaultTheme && shadcn)\n throw new Error(\"default-theme cannot be used with shadcn\");\n\n if (defaultTheme || (base && !shadcn)) {\n addComponents(defaultThemeCSS);\n }\n if (!defaultTheme && base && shadcn) {\n addComponents(shadcnExtrasCSS);\n }\n\n if (base) {\n addComponents(baseComponentsCSS);\n }\n\n if (thread) {\n addComponents(threadCSS);\n }\n\n if (assistantModal) {\n addComponents(modalCSS);\n }\n },\n ({\n colors = {},\n shadcn = false,\n } = {}) => {\n const prefix = !shadcn ? \"--aui-\" : \"--\";\n return {\n safelist: [{ pattern: /^aui-/ }],\n theme: {\n extend: {\n maxWidth: {\n \"aui-thread\": \"var(--aui-thread-max-width)\",\n },\n colors: {\n aui: {\n border: colors.border ?? `hsl(var(${prefix}border))`,\n input: colors.input ?? `hsl(var(${prefix}input))`,\n ring: colors.ring ?? `hsl(var(${prefix}ring))`,\n background: colors.background ?? `hsl(var(${prefix}background))`,\n foreground: colors.foreground ?? `hsl(var(${prefix}foreground))`,\n primary: {\n DEFAULT:\n colors.primary?.DEFAULT ?? `hsl(var(${prefix}primary))`,\n foreground:\n colors.primary?.foreground ??\n `hsl(var(${prefix}primary-foreground))`,\n },\n secondary: {\n DEFAULT:\n colors.secondary?.DEFAULT ?? `hsl(var(${prefix}secondary))`,\n foreground:\n colors.secondary?.foreground ??\n `hsl(var(${prefix}secondary-foreground))`,\n },\n destructive: {\n DEFAULT:\n colors.destructive?.DEFAULT ??\n `hsl(var(${prefix}destructive))`,\n foreground: `hsl(var(${prefix}destructive-foreground))`,\n },\n muted: {\n DEFAULT: `hsl(var(${prefix}muted))`,\n foreground:\n colors.muted?.foreground ??\n `hsl(var(${prefix}muted-foreground))`,\n },\n accent: {\n DEFAULT: colors.accent?.DEFAULT ?? `hsl(var(${prefix}accent))`,\n foreground:\n colors.accent?.foreground ??\n `hsl(var(${prefix}accent-foreground))`,\n },\n popover: {\n DEFAULT:\n colors.popover?.DEFAULT ?? `hsl(var(${prefix}popover))`,\n foreground:\n colors.popover?.foreground ??\n `hsl(var(${prefix}popover-foreground))`,\n },\n card: {\n DEFAULT: colors.card?.DEFAULT ?? `hsl(var(${prefix}card))`,\n foreground:\n colors.card?.foreground ??\n `hsl(var(${prefix}card-foreground))`,\n },\n },\n },\n },\n },\n };\n },\n);\n\nexport default auiPlugin;\n"],"mappings":"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","names":["exports","plugin","exports","exports","module","plugin","defaultThemeCSS","shadcnExtrasCSS","baseComponentsCSS","threadCSS","modalCSS"]}
|
1
|
+
{"version":3,"sources":["../../../../node_modules/.pnpm/tailwindcss@3.4.17/node_modules/tailwindcss/lib/util/createPlugin.js","../../../../node_modules/.pnpm/tailwindcss@3.4.17/node_modules/tailwindcss/lib/public/create-plugin.js","../../../../node_modules/.pnpm/tailwindcss@3.4.17/node_modules/tailwindcss/plugin.js","../../src/tailwindcss/index.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nfunction createPlugin(plugin, config) {\n return {\n handler: plugin,\n config\n };\n}\ncreatePlugin.withOptions = function(pluginFunction, configFunction = ()=>({})) {\n const optionsFunction = function(options) {\n return {\n __options: options,\n handler: pluginFunction(options),\n config: configFunction(options)\n };\n };\n optionsFunction.__isOptionsFunction = true;\n // Expose plugin dependencies so that `object-hash` returns a different\n // value if anything here changes, to ensure a rebuild is triggered.\n optionsFunction.__pluginFunction = pluginFunction;\n optionsFunction.__configFunction = configFunction;\n return optionsFunction;\n};\nconst _default = createPlugin;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _createPlugin = /*#__PURE__*/ _interop_require_default(require(\"../util/createPlugin\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nconst _default = _createPlugin.default;\n","let createPlugin = require('./lib/public/create-plugin')\nmodule.exports = (createPlugin.__esModule ? createPlugin : { default: createPlugin }).default\n","import plugin from \"tailwindcss/plugin.js\";\nimport baseComponentsCSS from \"../../dist/styles/tailwindcss/base-components.css.json\" with { type: \"json\" };\nimport threadCSS from \"../../dist/styles/tailwindcss/thread.css.json\" with { type: \"json\" };\nimport modalCSS from \"../../dist/styles/tailwindcss/modal.css.json\" with { type: \"json\" };\nimport defaultThemeCSS from \"../../dist/styles/themes/default.css.json\" with { type: \"json\" };\nimport shadcnExtrasCSS from \"../../dist/styles/themes/shadcn-extras.css.json\" with { type: \"json\" };\n\ntype AssistantTailwindPluginColors = {\n border: string;\n input: string;\n ring: string;\n background: string;\n foreground: string;\n primary: {\n DEFAULT: string;\n foreground: string;\n };\n secondary: {\n DEFAULT: string;\n foreground: string;\n };\n destructive: {\n DEFAULT: string;\n foreground: string;\n };\n muted: {\n DEFAULT: string;\n foreground: string;\n };\n accent: {\n DEFAULT: string;\n foreground: string;\n };\n popover: {\n DEFAULT: string;\n foreground: string;\n };\n card: {\n DEFAULT: string;\n foreground: string;\n };\n};\n\ntype AssisstantTailwindPluginOptions = {\n components?: (\"default-theme\" | \"base\" | \"thread\" | \"assistant-modal\")[];\n colors?: AssistantTailwindPluginColors;\n shadcn?: boolean;\n};\n\nconst auiPlugin = plugin.withOptions<AssisstantTailwindPluginOptions>(\n ({ components = [\"assistant-modal\", \"thread\"], shadcn = false } = {}) =>\n ({ addComponents }) => {\n const assistantModal = components.includes(\"assistant-modal\");\n const thread = assistantModal || components.includes(\"thread\");\n const base = thread || components.includes(\"base\");\n const defaultTheme = components.includes(\"default-theme\");\n\n if (defaultTheme && shadcn)\n throw new Error(\"default-theme cannot be used with shadcn\");\n\n if (defaultTheme || (base && !shadcn)) {\n addComponents(defaultThemeCSS);\n }\n if (!defaultTheme && base && shadcn) {\n addComponents(shadcnExtrasCSS);\n }\n\n if (base) {\n addComponents(baseComponentsCSS);\n }\n\n if (thread) {\n addComponents(threadCSS);\n }\n\n if (assistantModal) {\n addComponents(modalCSS);\n }\n },\n ({ colors = {}, shadcn = false } = {}) => {\n const prefix = !shadcn ? \"--aui-\" : \"--\";\n return {\n safelist: [{ pattern: /^aui-/ }],\n theme: {\n extend: {\n maxWidth: {\n \"aui-thread\": \"var(--aui-thread-max-width)\",\n },\n colors: {\n aui: {\n border: colors.border ?? `hsl(var(${prefix}border))`,\n input: colors.input ?? `hsl(var(${prefix}input))`,\n ring: colors.ring ?? `hsl(var(${prefix}ring))`,\n background: colors.background ?? `hsl(var(${prefix}background))`,\n foreground: colors.foreground ?? `hsl(var(${prefix}foreground))`,\n primary: {\n DEFAULT:\n colors.primary?.DEFAULT ?? `hsl(var(${prefix}primary))`,\n foreground:\n colors.primary?.foreground ??\n `hsl(var(${prefix}primary-foreground))`,\n },\n secondary: {\n DEFAULT:\n colors.secondary?.DEFAULT ?? `hsl(var(${prefix}secondary))`,\n foreground:\n colors.secondary?.foreground ??\n `hsl(var(${prefix}secondary-foreground))`,\n },\n destructive: {\n DEFAULT:\n colors.destructive?.DEFAULT ??\n `hsl(var(${prefix}destructive))`,\n foreground: `hsl(var(${prefix}destructive-foreground))`,\n },\n muted: {\n DEFAULT: `hsl(var(${prefix}muted))`,\n foreground:\n colors.muted?.foreground ??\n `hsl(var(${prefix}muted-foreground))`,\n },\n accent: {\n DEFAULT: colors.accent?.DEFAULT ?? `hsl(var(${prefix}accent))`,\n foreground:\n colors.accent?.foreground ??\n `hsl(var(${prefix}accent-foreground))`,\n },\n popover: {\n DEFAULT:\n colors.popover?.DEFAULT ?? `hsl(var(${prefix}popover))`,\n foreground:\n colors.popover?.foreground ??\n `hsl(var(${prefix}popover-foreground))`,\n },\n card: {\n DEFAULT: colors.card?.DEFAULT ?? `hsl(var(${prefix}card))`,\n foreground:\n colors.card?.foreground ??\n `hsl(var(${prefix}card-foreground))`,\n },\n },\n },\n },\n },\n };\n },\n);\n\nexport default auiPlugin;\n"],"mappings":"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","names":["exports","plugin","exports","exports","module","plugin","defaultThemeCSS","shadcnExtrasCSS","baseComponentsCSS","threadCSS","modalCSS"]}
|
@@ -94,11 +94,11 @@ var require_plugin = __commonJS({
|
|
94
94
|
|
95
95
|
// src/tailwindcss/index.ts
|
96
96
|
var import_plugin = __toESM(require_plugin());
|
97
|
-
import baseComponentsCSS from "../../dist/styles/tailwindcss/base-components.css.json";
|
98
|
-
import threadCSS from "../../dist/styles/tailwindcss/thread.css.json";
|
99
|
-
import modalCSS from "../../dist/styles/tailwindcss/modal.css.json";
|
100
|
-
import defaultThemeCSS from "../../dist/styles/themes/default.css.json";
|
101
|
-
import shadcnExtrasCSS from "../../dist/styles/themes/shadcn-extras.css.json";
|
97
|
+
import baseComponentsCSS from "../../dist/styles/tailwindcss/base-components.css.json" with { type: "json" };
|
98
|
+
import threadCSS from "../../dist/styles/tailwindcss/thread.css.json" with { type: "json" };
|
99
|
+
import modalCSS from "../../dist/styles/tailwindcss/modal.css.json" with { type: "json" };
|
100
|
+
import defaultThemeCSS from "../../dist/styles/themes/default.css.json" with { type: "json" };
|
101
|
+
import shadcnExtrasCSS from "../../dist/styles/themes/shadcn-extras.css.json" with { type: "json" };
|
102
102
|
var auiPlugin = import_plugin.default.withOptions(
|
103
103
|
({ components = ["assistant-modal", "thread"], shadcn = false } = {}) => ({ addComponents }) => {
|
104
104
|
const assistantModal = components.includes("assistant-modal");
|
@@ -123,10 +123,7 @@ var auiPlugin = import_plugin.default.withOptions(
|
|
123
123
|
addComponents(modalCSS);
|
124
124
|
}
|
125
125
|
},
|
126
|
-
({
|
127
|
-
colors = {},
|
128
|
-
shadcn = false
|
129
|
-
} = {}) => {
|
126
|
+
({ colors = {}, shadcn = false } = {}) => {
|
130
127
|
const prefix = !shadcn ? "--aui-" : "--";
|
131
128
|
return {
|
132
129
|
safelist: [{ pattern: /^aui-/ }],
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../node_modules/.pnpm/tailwindcss@3.4.17/node_modules/tailwindcss/lib/util/createPlugin.js","../../../../node_modules/.pnpm/tailwindcss@3.4.17/node_modules/tailwindcss/lib/public/create-plugin.js","../../../../node_modules/.pnpm/tailwindcss@3.4.17/node_modules/tailwindcss/plugin.js","../../src/tailwindcss/index.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nfunction createPlugin(plugin, config) {\n return {\n handler: plugin,\n config\n };\n}\ncreatePlugin.withOptions = function(pluginFunction, configFunction = ()=>({})) {\n const optionsFunction = function(options) {\n return {\n __options: options,\n handler: pluginFunction(options),\n config: configFunction(options)\n };\n };\n optionsFunction.__isOptionsFunction = true;\n // Expose plugin dependencies so that `object-hash` returns a different\n // value if anything here changes, to ensure a rebuild is triggered.\n optionsFunction.__pluginFunction = pluginFunction;\n optionsFunction.__configFunction = configFunction;\n return optionsFunction;\n};\nconst _default = createPlugin;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _createPlugin = /*#__PURE__*/ _interop_require_default(require(\"../util/createPlugin\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nconst _default = _createPlugin.default;\n","let createPlugin = require('./lib/public/create-plugin')\nmodule.exports = (createPlugin.__esModule ? createPlugin : { default: createPlugin }).default\n","import plugin from \"tailwindcss/plugin.js\";\nimport baseComponentsCSS from \"../../dist/styles/tailwindcss/base-components.css.json\";\nimport threadCSS from \"../../dist/styles/tailwindcss/thread.css.json\";\nimport modalCSS from \"../../dist/styles/tailwindcss/modal.css.json\";\nimport defaultThemeCSS from \"../../dist/styles/themes/default.css.json\";\nimport shadcnExtrasCSS from \"../../dist/styles/themes/shadcn-extras.css.json\";\n\ntype AssistantTailwindPluginColors = {\n border: string;\n input: string;\n ring: string;\n background: string;\n foreground: string;\n primary: {\n DEFAULT: string;\n foreground: string;\n };\n secondary: {\n DEFAULT: string;\n foreground: string;\n };\n destructive: {\n DEFAULT: string;\n foreground: string;\n };\n muted: {\n DEFAULT: string;\n foreground: string;\n };\n accent: {\n DEFAULT: string;\n foreground: string;\n };\n popover: {\n DEFAULT: string;\n foreground: string;\n };\n card: {\n DEFAULT: string;\n foreground: string;\n };\n};\n\ntype AssisstantTailwindPluginOptions = {\n components?: (\"default-theme\" | \"base\" | \"thread\" | \"assistant-modal\")[];\n colors?: AssistantTailwindPluginColors;\n shadcn?: boolean;\n};\n\nconst auiPlugin = plugin.withOptions<AssisstantTailwindPluginOptions>(\n ({ components = [\"assistant-modal\", \"thread\"], shadcn = false } = {}) =>\n ({ addComponents }) => {\n const assistantModal = components.includes(\"assistant-modal\");\n const thread = assistantModal || components.includes(\"thread\");\n const base = thread || components.includes(\"base\");\n const defaultTheme = components.includes(\"default-theme\");\n\n if (defaultTheme && shadcn)\n throw new Error(\"default-theme cannot be used with shadcn\");\n\n if (defaultTheme || (base && !shadcn)) {\n addComponents(defaultThemeCSS);\n }\n if (!defaultTheme && base && shadcn) {\n addComponents(shadcnExtrasCSS);\n }\n\n if (base) {\n addComponents(baseComponentsCSS);\n }\n\n if (thread) {\n addComponents(threadCSS);\n }\n\n if (assistantModal) {\n addComponents(modalCSS);\n }\n },\n ({\n colors = {},\n shadcn = false,\n } = {}) => {\n const prefix = !shadcn ? \"--aui-\" : \"--\";\n return {\n safelist: [{ pattern: /^aui-/ }],\n theme: {\n extend: {\n maxWidth: {\n \"aui-thread\": \"var(--aui-thread-max-width)\",\n },\n colors: {\n aui: {\n border: colors.border ?? `hsl(var(${prefix}border))`,\n input: colors.input ?? `hsl(var(${prefix}input))`,\n ring: colors.ring ?? `hsl(var(${prefix}ring))`,\n background: colors.background ?? `hsl(var(${prefix}background))`,\n foreground: colors.foreground ?? `hsl(var(${prefix}foreground))`,\n primary: {\n DEFAULT:\n colors.primary?.DEFAULT ?? `hsl(var(${prefix}primary))`,\n foreground:\n colors.primary?.foreground ??\n `hsl(var(${prefix}primary-foreground))`,\n },\n secondary: {\n DEFAULT:\n colors.secondary?.DEFAULT ?? `hsl(var(${prefix}secondary))`,\n foreground:\n colors.secondary?.foreground ??\n `hsl(var(${prefix}secondary-foreground))`,\n },\n destructive: {\n DEFAULT:\n colors.destructive?.DEFAULT ??\n `hsl(var(${prefix}destructive))`,\n foreground: `hsl(var(${prefix}destructive-foreground))`,\n },\n muted: {\n DEFAULT: `hsl(var(${prefix}muted))`,\n foreground:\n colors.muted?.foreground ??\n `hsl(var(${prefix}muted-foreground))`,\n },\n accent: {\n DEFAULT: colors.accent?.DEFAULT ?? `hsl(var(${prefix}accent))`,\n foreground:\n colors.accent?.foreground ??\n `hsl(var(${prefix}accent-foreground))`,\n },\n popover: {\n DEFAULT:\n colors.popover?.DEFAULT ?? `hsl(var(${prefix}popover))`,\n foreground:\n colors.popover?.foreground ??\n `hsl(var(${prefix}popover-foreground))`,\n },\n card: {\n DEFAULT: colors.card?.DEFAULT ?? `hsl(var(${prefix}card))`,\n foreground:\n colors.card?.foreground ??\n `hsl(var(${prefix}card-foreground))`,\n },\n },\n },\n },\n },\n };\n },\n);\n\nexport default auiPlugin;\n"],"mappings":"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","names":["plugin","plugin"]}
|
1
|
+
{"version":3,"sources":["../../../../node_modules/.pnpm/tailwindcss@3.4.17/node_modules/tailwindcss/lib/util/createPlugin.js","../../../../node_modules/.pnpm/tailwindcss@3.4.17/node_modules/tailwindcss/lib/public/create-plugin.js","../../../../node_modules/.pnpm/tailwindcss@3.4.17/node_modules/tailwindcss/plugin.js","../../src/tailwindcss/index.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nfunction createPlugin(plugin, config) {\n return {\n handler: plugin,\n config\n };\n}\ncreatePlugin.withOptions = function(pluginFunction, configFunction = ()=>({})) {\n const optionsFunction = function(options) {\n return {\n __options: options,\n handler: pluginFunction(options),\n config: configFunction(options)\n };\n };\n optionsFunction.__isOptionsFunction = true;\n // Expose plugin dependencies so that `object-hash` returns a different\n // value if anything here changes, to ensure a rebuild is triggered.\n optionsFunction.__pluginFunction = pluginFunction;\n optionsFunction.__configFunction = configFunction;\n return optionsFunction;\n};\nconst _default = createPlugin;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _createPlugin = /*#__PURE__*/ _interop_require_default(require(\"../util/createPlugin\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nconst _default = _createPlugin.default;\n","let createPlugin = require('./lib/public/create-plugin')\nmodule.exports = (createPlugin.__esModule ? createPlugin : { default: createPlugin }).default\n","import plugin from \"tailwindcss/plugin.js\";\nimport baseComponentsCSS from \"../../dist/styles/tailwindcss/base-components.css.json\" with { type: \"json\" };\nimport threadCSS from \"../../dist/styles/tailwindcss/thread.css.json\" with { type: \"json\" };\nimport modalCSS from \"../../dist/styles/tailwindcss/modal.css.json\" with { type: \"json\" };\nimport defaultThemeCSS from \"../../dist/styles/themes/default.css.json\" with { type: \"json\" };\nimport shadcnExtrasCSS from \"../../dist/styles/themes/shadcn-extras.css.json\" with { type: \"json\" };\n\ntype AssistantTailwindPluginColors = {\n border: string;\n input: string;\n ring: string;\n background: string;\n foreground: string;\n primary: {\n DEFAULT: string;\n foreground: string;\n };\n secondary: {\n DEFAULT: string;\n foreground: string;\n };\n destructive: {\n DEFAULT: string;\n foreground: string;\n };\n muted: {\n DEFAULT: string;\n foreground: string;\n };\n accent: {\n DEFAULT: string;\n foreground: string;\n };\n popover: {\n DEFAULT: string;\n foreground: string;\n };\n card: {\n DEFAULT: string;\n foreground: string;\n };\n};\n\ntype AssisstantTailwindPluginOptions = {\n components?: (\"default-theme\" | \"base\" | \"thread\" | \"assistant-modal\")[];\n colors?: AssistantTailwindPluginColors;\n shadcn?: boolean;\n};\n\nconst auiPlugin = plugin.withOptions<AssisstantTailwindPluginOptions>(\n ({ components = [\"assistant-modal\", \"thread\"], shadcn = false } = {}) =>\n ({ addComponents }) => {\n const assistantModal = components.includes(\"assistant-modal\");\n const thread = assistantModal || components.includes(\"thread\");\n const base = thread || components.includes(\"base\");\n const defaultTheme = components.includes(\"default-theme\");\n\n if (defaultTheme && shadcn)\n throw new Error(\"default-theme cannot be used with shadcn\");\n\n if (defaultTheme || (base && !shadcn)) {\n addComponents(defaultThemeCSS);\n }\n if (!defaultTheme && base && shadcn) {\n addComponents(shadcnExtrasCSS);\n }\n\n if (base) {\n addComponents(baseComponentsCSS);\n }\n\n if (thread) {\n addComponents(threadCSS);\n }\n\n if (assistantModal) {\n addComponents(modalCSS);\n }\n },\n ({ colors = {}, shadcn = false } = {}) => {\n const prefix = !shadcn ? \"--aui-\" : \"--\";\n return {\n safelist: [{ pattern: /^aui-/ }],\n theme: {\n extend: {\n maxWidth: {\n \"aui-thread\": \"var(--aui-thread-max-width)\",\n },\n colors: {\n aui: {\n border: colors.border ?? `hsl(var(${prefix}border))`,\n input: colors.input ?? `hsl(var(${prefix}input))`,\n ring: colors.ring ?? `hsl(var(${prefix}ring))`,\n background: colors.background ?? `hsl(var(${prefix}background))`,\n foreground: colors.foreground ?? `hsl(var(${prefix}foreground))`,\n primary: {\n DEFAULT:\n colors.primary?.DEFAULT ?? `hsl(var(${prefix}primary))`,\n foreground:\n colors.primary?.foreground ??\n `hsl(var(${prefix}primary-foreground))`,\n },\n secondary: {\n DEFAULT:\n colors.secondary?.DEFAULT ?? `hsl(var(${prefix}secondary))`,\n foreground:\n colors.secondary?.foreground ??\n `hsl(var(${prefix}secondary-foreground))`,\n },\n destructive: {\n DEFAULT:\n colors.destructive?.DEFAULT ??\n `hsl(var(${prefix}destructive))`,\n foreground: `hsl(var(${prefix}destructive-foreground))`,\n },\n muted: {\n DEFAULT: `hsl(var(${prefix}muted))`,\n foreground:\n colors.muted?.foreground ??\n `hsl(var(${prefix}muted-foreground))`,\n },\n accent: {\n DEFAULT: colors.accent?.DEFAULT ?? `hsl(var(${prefix}accent))`,\n foreground:\n colors.accent?.foreground ??\n `hsl(var(${prefix}accent-foreground))`,\n },\n popover: {\n DEFAULT:\n colors.popover?.DEFAULT ?? `hsl(var(${prefix}popover))`,\n foreground:\n colors.popover?.foreground ??\n `hsl(var(${prefix}popover-foreground))`,\n },\n card: {\n DEFAULT: colors.card?.DEFAULT ?? `hsl(var(${prefix}card))`,\n foreground:\n colors.card?.foreground ??\n `hsl(var(${prefix}card-foreground))`,\n },\n },\n },\n },\n },\n };\n },\n);\n\nexport default auiPlugin;\n"],"mappings":"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","names":["plugin","plugin"]}
|