@assistant-ui/react 0.7.17 → 0.7.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/index.js +11 -11
  2. package/dist/index.js.map +1 -1
  3. package/dist/runtimes/local/LocalRuntimeCore.d.ts.map +1 -1
  4. package/dist/runtimes/local/LocalRuntimeCore.js +2 -4
  5. package/dist/runtimes/local/LocalRuntimeCore.js.map +1 -1
  6. package/dist/runtimes/local/LocalRuntimeCore.mjs +2 -4
  7. package/dist/runtimes/local/LocalRuntimeCore.mjs.map +1 -1
  8. package/dist/runtimes/local/LocalThreadListRuntimeCore.d.ts +1 -3
  9. package/dist/runtimes/local/LocalThreadListRuntimeCore.d.ts.map +1 -1
  10. package/dist/runtimes/local/LocalThreadListRuntimeCore.js +3 -4
  11. package/dist/runtimes/local/LocalThreadListRuntimeCore.js.map +1 -1
  12. package/dist/runtimes/local/LocalThreadListRuntimeCore.mjs +3 -4
  13. package/dist/runtimes/local/LocalThreadListRuntimeCore.mjs.map +1 -1
  14. package/dist/runtimes/local/useLocalRuntime.js +1 -1
  15. package/dist/runtimes/local/useLocalRuntime.js.map +1 -1
  16. package/dist/runtimes/local/useLocalRuntime.mjs +1 -1
  17. package/dist/runtimes/local/useLocalRuntime.mjs.map +1 -1
  18. package/dist/styles/index.css.map +1 -1
  19. package/dist/ui/assistant-message.d.ts.map +1 -1
  20. package/dist/ui/assistant-message.js +1 -0
  21. package/dist/ui/assistant-message.js.map +1 -1
  22. package/dist/ui/assistant-message.mjs +1 -0
  23. package/dist/ui/assistant-message.mjs.map +1 -1
  24. package/dist/ui/thread-config.d.ts +2 -1
  25. package/dist/ui/thread-config.d.ts.map +1 -1
  26. package/dist/ui/thread-config.js.map +1 -1
  27. package/dist/ui/thread-config.mjs.map +1 -1
  28. package/dist/ui/utils/withDefaults.d.ts +3 -2
  29. package/dist/ui/utils/withDefaults.d.ts.map +1 -1
  30. package/dist/ui/utils/withDefaults.js.map +1 -1
  31. package/dist/ui/utils/withDefaults.mjs +1 -3
  32. package/dist/ui/utils/withDefaults.mjs.map +1 -1
  33. package/package.json +9 -9
  34. package/src/runtimes/local/LocalRuntimeCore.tsx +2 -4
  35. package/src/runtimes/local/LocalThreadListRuntimeCore.tsx +3 -9
  36. package/src/runtimes/local/useLocalRuntime.tsx +1 -1
  37. package/src/ui/assistant-message.tsx +1 -0
  38. package/src/ui/thread-config.tsx +6 -1
  39. package/src/ui/utils/withDefaults.tsx +3 -7
package/dist/index.js CHANGED
@@ -29,19 +29,19 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
29
29
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
30
 
31
31
  // src/index.ts
32
- var src_exports = {};
33
- __export(src_exports, {
32
+ var index_exports = {};
33
+ __export(index_exports, {
34
34
  INTERNAL: () => INTERNAL
35
35
  });
36
- module.exports = __toCommonJS(src_exports);
37
- __reExport(src_exports, require("./api/index.js"), module.exports);
38
- __reExport(src_exports, require("./context/index.js"), module.exports);
39
- __reExport(src_exports, require("./model-config/index.js"), module.exports);
40
- __reExport(src_exports, require("./primitive-hooks/index.js"), module.exports);
41
- __reExport(src_exports, require("./primitives/index.js"), module.exports);
42
- __reExport(src_exports, require("./runtimes/index.js"), module.exports);
43
- __reExport(src_exports, require("./types/index.js"), module.exports);
44
- __reExport(src_exports, require("./ui/index.js"), module.exports);
36
+ module.exports = __toCommonJS(index_exports);
37
+ __reExport(index_exports, require("./api/index.js"), module.exports);
38
+ __reExport(index_exports, require("./context/index.js"), module.exports);
39
+ __reExport(index_exports, require("./model-config/index.js"), module.exports);
40
+ __reExport(index_exports, require("./primitive-hooks/index.js"), module.exports);
41
+ __reExport(index_exports, require("./primitives/index.js"), module.exports);
42
+ __reExport(index_exports, require("./runtimes/index.js"), module.exports);
43
+ __reExport(index_exports, require("./types/index.js"), module.exports);
44
+ __reExport(index_exports, require("./ui/index.js"), module.exports);
45
45
  var INTERNAL = __toESM(require("./internal.js"));
46
46
  // Annotate the CommonJS export names for ESM import in node:
47
47
  0 && (module.exports = {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from \"./api\";\nexport * from \"./context\";\nexport * from \"./model-config\";\nexport * from \"./primitive-hooks\";\nexport * from \"./primitives\";\nexport * from \"./runtimes\";\nexport * from \"./types\";\nexport * from \"./ui\";\n\nexport * as INTERNAL from \"./internal\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAc,2BAAd;AACA,wBAAc,+BADd;AAEA,wBAAc,oCAFd;AAGA,wBAAc,uCAHd;AAIA,wBAAc,kCAJd;AAKA,wBAAc,gCALd;AAMA,wBAAc,6BANd;AAOA,wBAAc,0BAPd;AASA,eAA0B;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from \"./api\";\nexport * from \"./context\";\nexport * from \"./model-config\";\nexport * from \"./primitive-hooks\";\nexport * from \"./primitives\";\nexport * from \"./runtimes\";\nexport * from \"./types\";\nexport * from \"./ui\";\n\nexport * as INTERNAL from \"./internal\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAAc,2BAAd;AACA,0BAAc,+BADd;AAEA,0BAAc,oCAFd;AAGA,0BAAc,uCAHd;AAIA,0BAAc,kCAJd;AAKA,0BAAc,gCALd;AAMA,0BAAc,6BANd;AAOA,0BAAc,0BAPd;AASA,eAA0B;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"LocalRuntimeCore.d.ts","sourceRoot":"","sources":["../../../src/runtimes/local/LocalRuntimeCore.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAe1E,qBAAa,gBAAiB,SAAQ,wBAAwB;IAC5D,SAAgB,UAAU,6BAAC;IAE3B,OAAO,CAAC,QAAQ,CAA0B;gBAGxC,OAAO,EAAE,uBAAuB,EAChC,eAAe,EAAE,SAAS,WAAW,EAAE,GAAG,SAAS;IAsB9C,KAAK,CAAC,EACX,eAAe,GAChB,GAAE;QACD,eAAe,CAAC,EAAE,SAAS,WAAW,EAAE,GAAG,SAAS,CAAC;KACjD;CAQP"}
1
+ {"version":3,"file":"LocalRuntimeCore.d.ts","sourceRoot":"","sources":["../../../src/runtimes/local/LocalRuntimeCore.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAe1E,qBAAa,gBAAiB,SAAQ,wBAAwB;IAC5D,SAAgB,UAAU,6BAAC;IAE3B,OAAO,CAAC,QAAQ,CAA0B;gBAGxC,OAAO,EAAE,uBAAuB,EAChC,eAAe,EAAE,SAAS,WAAW,EAAE,GAAG,SAAS;IAoB9C,KAAK,CAAC,EACX,eAAe,GAChB,GAAE;QACD,eAAe,CAAC,EAAE,SAAS,WAAW,EAAE,GAAG,SAAS,CAAC;KACjD;CAQP"}
@@ -42,13 +42,11 @@ var LocalRuntimeCore = class extends import_BaseAssistantRuntimeCore.BaseAssista
42
42
  constructor(options, initialMessages) {
43
43
  super();
44
44
  this._options = options;
45
- this.threadList = new import_LocalThreadListRuntimeCore.LocalThreadListRuntimeCore((data) => {
46
- const thread = new import_LocalThreadRuntimeCore.LocalThreadRuntimeCore(
45
+ this.threadList = new import_LocalThreadListRuntimeCore.LocalThreadListRuntimeCore(() => {
46
+ return new import_LocalThreadRuntimeCore.LocalThreadRuntimeCore(
47
47
  this._proxyConfigProvider,
48
48
  this._options
49
49
  );
50
- thread.import(data);
51
- return thread;
52
50
  });
53
51
  if (initialMessages) {
54
52
  this.threadList.getMainThreadRuntimeCore().import(getExportFromInitialMessages(initialMessages));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/runtimes/local/LocalRuntimeCore.tsx"],"sourcesContent":["import type { CoreMessage } from \"../../types/AssistantTypes\";\nimport { BaseAssistantRuntimeCore } from \"../core/BaseAssistantRuntimeCore\";\nimport { LocalThreadRuntimeCore } from \"./LocalThreadRuntimeCore\";\nimport { LocalRuntimeOptionsBase } from \"./LocalRuntimeOptions\";\nimport { fromCoreMessages } from \"../edge/converters/fromCoreMessage\";\nimport { LocalThreadListRuntimeCore } from \"./LocalThreadListRuntimeCore\";\nimport { ExportedMessageRepository } from \"../utils/MessageRepository\";\n\nconst getExportFromInitialMessages = (\n initialMessages: readonly CoreMessage[],\n): ExportedMessageRepository => {\n const messages = fromCoreMessages(initialMessages);\n return {\n messages: messages.map((m, idx) => ({\n parentId: messages[idx - 1]?.id ?? null,\n message: m,\n })),\n };\n};\n\nexport class LocalRuntimeCore extends BaseAssistantRuntimeCore {\n public readonly threadList;\n\n private _options: LocalRuntimeOptionsBase;\n\n constructor(\n options: LocalRuntimeOptionsBase,\n initialMessages: readonly CoreMessage[] | undefined,\n ) {\n super();\n\n this._options = options;\n\n this.threadList = new LocalThreadListRuntimeCore((data) => {\n const thread = new LocalThreadRuntimeCore(\n this._proxyConfigProvider,\n this._options,\n );\n thread.import(data);\n return thread;\n });\n\n if (initialMessages) {\n this.threadList\n .getMainThreadRuntimeCore()\n .import(getExportFromInitialMessages(initialMessages));\n }\n }\n\n public reset({\n initialMessages,\n }: {\n initialMessages?: readonly CoreMessage[] | undefined;\n } = {}) {\n this.threadList.switchToNewThread();\n if (!initialMessages) return;\n\n this.threadList\n .getMainThreadRuntimeCore()\n .import(getExportFromInitialMessages(initialMessages));\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sCAAyC;AACzC,oCAAuC;AAEvC,6BAAiC;AACjC,wCAA2C;AAG3C,IAAM,+BAA+B,CACnC,oBAC8B;AAC9B,QAAM,eAAW,yCAAiB,eAAe;AACjD,SAAO;AAAA,IACL,UAAU,SAAS,IAAI,CAAC,GAAG,SAAS;AAAA,MAClC,UAAU,SAAS,MAAM,CAAC,GAAG,MAAM;AAAA,MACnC,SAAS;AAAA,IACX,EAAE;AAAA,EACJ;AACF;AAEO,IAAM,mBAAN,cAA+B,yDAAyB;AAAA,EAC7C;AAAA,EAER;AAAA,EAER,YACE,SACA,iBACA;AACA,UAAM;AAEN,SAAK,WAAW;AAEhB,SAAK,aAAa,IAAI,6DAA2B,CAAC,SAAS;AACzD,YAAM,SAAS,IAAI;AAAA,QACjB,KAAK;AAAA,QACL,KAAK;AAAA,MACP;AACA,aAAO,OAAO,IAAI;AAClB,aAAO;AAAA,IACT,CAAC;AAED,QAAI,iBAAiB;AACnB,WAAK,WACF,yBAAyB,EACzB,OAAO,6BAA6B,eAAe,CAAC;AAAA,IACzD;AAAA,EACF;AAAA,EAEO,MAAM;AAAA,IACX;AAAA,EACF,IAEI,CAAC,GAAG;AACN,SAAK,WAAW,kBAAkB;AAClC,QAAI,CAAC,gBAAiB;AAEtB,SAAK,WACF,yBAAyB,EACzB,OAAO,6BAA6B,eAAe,CAAC;AAAA,EACzD;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/runtimes/local/LocalRuntimeCore.tsx"],"sourcesContent":["import type { CoreMessage } from \"../../types/AssistantTypes\";\nimport { BaseAssistantRuntimeCore } from \"../core/BaseAssistantRuntimeCore\";\nimport { LocalThreadRuntimeCore } from \"./LocalThreadRuntimeCore\";\nimport { LocalRuntimeOptionsBase } from \"./LocalRuntimeOptions\";\nimport { fromCoreMessages } from \"../edge/converters/fromCoreMessage\";\nimport { LocalThreadListRuntimeCore } from \"./LocalThreadListRuntimeCore\";\nimport { ExportedMessageRepository } from \"../utils/MessageRepository\";\n\nconst getExportFromInitialMessages = (\n initialMessages: readonly CoreMessage[],\n): ExportedMessageRepository => {\n const messages = fromCoreMessages(initialMessages);\n return {\n messages: messages.map((m, idx) => ({\n parentId: messages[idx - 1]?.id ?? null,\n message: m,\n })),\n };\n};\n\nexport class LocalRuntimeCore extends BaseAssistantRuntimeCore {\n public readonly threadList;\n\n private _options: LocalRuntimeOptionsBase;\n\n constructor(\n options: LocalRuntimeOptionsBase,\n initialMessages: readonly CoreMessage[] | undefined,\n ) {\n super();\n\n this._options = options;\n\n this.threadList = new LocalThreadListRuntimeCore(() => {\n return new LocalThreadRuntimeCore(\n this._proxyConfigProvider,\n this._options,\n );\n });\n\n if (initialMessages) {\n this.threadList\n .getMainThreadRuntimeCore()\n .import(getExportFromInitialMessages(initialMessages));\n }\n }\n\n public reset({\n initialMessages,\n }: {\n initialMessages?: readonly CoreMessage[] | undefined;\n } = {}) {\n this.threadList.switchToNewThread();\n if (!initialMessages) return;\n\n this.threadList\n .getMainThreadRuntimeCore()\n .import(getExportFromInitialMessages(initialMessages));\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sCAAyC;AACzC,oCAAuC;AAEvC,6BAAiC;AACjC,wCAA2C;AAG3C,IAAM,+BAA+B,CACnC,oBAC8B;AAC9B,QAAM,eAAW,yCAAiB,eAAe;AACjD,SAAO;AAAA,IACL,UAAU,SAAS,IAAI,CAAC,GAAG,SAAS;AAAA,MAClC,UAAU,SAAS,MAAM,CAAC,GAAG,MAAM;AAAA,MACnC,SAAS;AAAA,IACX,EAAE;AAAA,EACJ;AACF;AAEO,IAAM,mBAAN,cAA+B,yDAAyB;AAAA,EAC7C;AAAA,EAER;AAAA,EAER,YACE,SACA,iBACA;AACA,UAAM;AAEN,SAAK,WAAW;AAEhB,SAAK,aAAa,IAAI,6DAA2B,MAAM;AACrD,aAAO,IAAI;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AAAA,MACP;AAAA,IACF,CAAC;AAED,QAAI,iBAAiB;AACnB,WAAK,WACF,yBAAyB,EACzB,OAAO,6BAA6B,eAAe,CAAC;AAAA,IACzD;AAAA,EACF;AAAA,EAEO,MAAM;AAAA,IACX;AAAA,EACF,IAEI,CAAC,GAAG;AACN,SAAK,WAAW,kBAAkB;AAClC,QAAI,CAAC,gBAAiB;AAEtB,SAAK,WACF,yBAAyB,EACzB,OAAO,6BAA6B,eAAe,CAAC;AAAA,EACzD;AACF;","names":[]}
@@ -18,13 +18,11 @@ var LocalRuntimeCore = class extends BaseAssistantRuntimeCore {
18
18
  constructor(options, initialMessages) {
19
19
  super();
20
20
  this._options = options;
21
- this.threadList = new LocalThreadListRuntimeCore((data) => {
22
- const thread = new LocalThreadRuntimeCore(
21
+ this.threadList = new LocalThreadListRuntimeCore(() => {
22
+ return new LocalThreadRuntimeCore(
23
23
  this._proxyConfigProvider,
24
24
  this._options
25
25
  );
26
- thread.import(data);
27
- return thread;
28
26
  });
29
27
  if (initialMessages) {
30
28
  this.threadList.getMainThreadRuntimeCore().import(getExportFromInitialMessages(initialMessages));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/runtimes/local/LocalRuntimeCore.tsx"],"sourcesContent":["import type { CoreMessage } from \"../../types/AssistantTypes\";\nimport { BaseAssistantRuntimeCore } from \"../core/BaseAssistantRuntimeCore\";\nimport { LocalThreadRuntimeCore } from \"./LocalThreadRuntimeCore\";\nimport { LocalRuntimeOptionsBase } from \"./LocalRuntimeOptions\";\nimport { fromCoreMessages } from \"../edge/converters/fromCoreMessage\";\nimport { LocalThreadListRuntimeCore } from \"./LocalThreadListRuntimeCore\";\nimport { ExportedMessageRepository } from \"../utils/MessageRepository\";\n\nconst getExportFromInitialMessages = (\n initialMessages: readonly CoreMessage[],\n): ExportedMessageRepository => {\n const messages = fromCoreMessages(initialMessages);\n return {\n messages: messages.map((m, idx) => ({\n parentId: messages[idx - 1]?.id ?? null,\n message: m,\n })),\n };\n};\n\nexport class LocalRuntimeCore extends BaseAssistantRuntimeCore {\n public readonly threadList;\n\n private _options: LocalRuntimeOptionsBase;\n\n constructor(\n options: LocalRuntimeOptionsBase,\n initialMessages: readonly CoreMessage[] | undefined,\n ) {\n super();\n\n this._options = options;\n\n this.threadList = new LocalThreadListRuntimeCore((data) => {\n const thread = new LocalThreadRuntimeCore(\n this._proxyConfigProvider,\n this._options,\n );\n thread.import(data);\n return thread;\n });\n\n if (initialMessages) {\n this.threadList\n .getMainThreadRuntimeCore()\n .import(getExportFromInitialMessages(initialMessages));\n }\n }\n\n public reset({\n initialMessages,\n }: {\n initialMessages?: readonly CoreMessage[] | undefined;\n } = {}) {\n this.threadList.switchToNewThread();\n if (!initialMessages) return;\n\n this.threadList\n .getMainThreadRuntimeCore()\n .import(getExportFromInitialMessages(initialMessages));\n }\n}\n"],"mappings":";AACA,SAAS,gCAAgC;AACzC,SAAS,8BAA8B;AAEvC,SAAS,wBAAwB;AACjC,SAAS,kCAAkC;AAG3C,IAAM,+BAA+B,CACnC,oBAC8B;AAC9B,QAAM,WAAW,iBAAiB,eAAe;AACjD,SAAO;AAAA,IACL,UAAU,SAAS,IAAI,CAAC,GAAG,SAAS;AAAA,MAClC,UAAU,SAAS,MAAM,CAAC,GAAG,MAAM;AAAA,MACnC,SAAS;AAAA,IACX,EAAE;AAAA,EACJ;AACF;AAEO,IAAM,mBAAN,cAA+B,yBAAyB;AAAA,EAC7C;AAAA,EAER;AAAA,EAER,YACE,SACA,iBACA;AACA,UAAM;AAEN,SAAK,WAAW;AAEhB,SAAK,aAAa,IAAI,2BAA2B,CAAC,SAAS;AACzD,YAAM,SAAS,IAAI;AAAA,QACjB,KAAK;AAAA,QACL,KAAK;AAAA,MACP;AACA,aAAO,OAAO,IAAI;AAClB,aAAO;AAAA,IACT,CAAC;AAED,QAAI,iBAAiB;AACnB,WAAK,WACF,yBAAyB,EACzB,OAAO,6BAA6B,eAAe,CAAC;AAAA,IACzD;AAAA,EACF;AAAA,EAEO,MAAM;AAAA,IACX;AAAA,EACF,IAEI,CAAC,GAAG;AACN,SAAK,WAAW,kBAAkB;AAClC,QAAI,CAAC,gBAAiB;AAEtB,SAAK,WACF,yBAAyB,EACzB,OAAO,6BAA6B,eAAe,CAAC;AAAA,EACzD;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/runtimes/local/LocalRuntimeCore.tsx"],"sourcesContent":["import type { CoreMessage } from \"../../types/AssistantTypes\";\nimport { BaseAssistantRuntimeCore } from \"../core/BaseAssistantRuntimeCore\";\nimport { LocalThreadRuntimeCore } from \"./LocalThreadRuntimeCore\";\nimport { LocalRuntimeOptionsBase } from \"./LocalRuntimeOptions\";\nimport { fromCoreMessages } from \"../edge/converters/fromCoreMessage\";\nimport { LocalThreadListRuntimeCore } from \"./LocalThreadListRuntimeCore\";\nimport { ExportedMessageRepository } from \"../utils/MessageRepository\";\n\nconst getExportFromInitialMessages = (\n initialMessages: readonly CoreMessage[],\n): ExportedMessageRepository => {\n const messages = fromCoreMessages(initialMessages);\n return {\n messages: messages.map((m, idx) => ({\n parentId: messages[idx - 1]?.id ?? null,\n message: m,\n })),\n };\n};\n\nexport class LocalRuntimeCore extends BaseAssistantRuntimeCore {\n public readonly threadList;\n\n private _options: LocalRuntimeOptionsBase;\n\n constructor(\n options: LocalRuntimeOptionsBase,\n initialMessages: readonly CoreMessage[] | undefined,\n ) {\n super();\n\n this._options = options;\n\n this.threadList = new LocalThreadListRuntimeCore(() => {\n return new LocalThreadRuntimeCore(\n this._proxyConfigProvider,\n this._options,\n );\n });\n\n if (initialMessages) {\n this.threadList\n .getMainThreadRuntimeCore()\n .import(getExportFromInitialMessages(initialMessages));\n }\n }\n\n public reset({\n initialMessages,\n }: {\n initialMessages?: readonly CoreMessage[] | undefined;\n } = {}) {\n this.threadList.switchToNewThread();\n if (!initialMessages) return;\n\n this.threadList\n .getMainThreadRuntimeCore()\n .import(getExportFromInitialMessages(initialMessages));\n }\n}\n"],"mappings":";AACA,SAAS,gCAAgC;AACzC,SAAS,8BAA8B;AAEvC,SAAS,wBAAwB;AACjC,SAAS,kCAAkC;AAG3C,IAAM,+BAA+B,CACnC,oBAC8B;AAC9B,QAAM,WAAW,iBAAiB,eAAe;AACjD,SAAO;AAAA,IACL,UAAU,SAAS,IAAI,CAAC,GAAG,SAAS;AAAA,MAClC,UAAU,SAAS,MAAM,CAAC,GAAG,MAAM;AAAA,MACnC,SAAS;AAAA,IACX,EAAE;AAAA,EACJ;AACF;AAEO,IAAM,mBAAN,cAA+B,yBAAyB;AAAA,EAC7C;AAAA,EAER;AAAA,EAER,YACE,SACA,iBACA;AACA,UAAM;AAEN,SAAK,WAAW;AAEhB,SAAK,aAAa,IAAI,2BAA2B,MAAM;AACrD,aAAO,IAAI;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AAAA,MACP;AAAA,IACF,CAAC;AAED,QAAI,iBAAiB;AACnB,WAAK,WACF,yBAAyB,EACzB,OAAO,6BAA6B,eAAe,CAAC;AAAA,IACzD;AAAA,EACF;AAAA,EAEO,MAAM;AAAA,IACX;AAAA,EACF,IAEI,CAAC,GAAG;AACN,SAAK,WAAW,kBAAkB;AAClC,QAAI,CAAC,gBAAiB;AAEtB,SAAK,WACF,yBAAyB,EACzB,OAAO,6BAA6B,eAAe,CAAC;AAAA,EACzD;AACF;","names":[]}
@@ -1,6 +1,5 @@
1
1
  import type { Unsubscribe } from "../../types";
2
2
  import { ThreadListRuntimeCore } from "../core/ThreadListRuntimeCore";
3
- import { ExportedMessageRepository } from "../utils/MessageRepository";
4
3
  import { LocalThreadRuntimeCore } from "./LocalThreadRuntimeCore";
5
4
  export type ThreadListAdapter = {
6
5
  subscribe(callback: () => void): Unsubscribe;
@@ -10,9 +9,8 @@ export type LocalThreadData = {
10
9
  readonly state: "new" | "regular" | "archived";
11
10
  readonly threadId: string;
12
11
  readonly title?: string | undefined;
13
- dispose(): void;
14
12
  };
15
- export type LocalThreadFactory = (data: ExportedMessageRepository) => LocalThreadRuntimeCore;
13
+ export type LocalThreadFactory = () => LocalThreadRuntimeCore;
16
14
  export declare class LocalThreadListRuntimeCore implements ThreadListRuntimeCore {
17
15
  private _threadFactory;
18
16
  private _threadData;
@@ -1 +1 @@
1
- {"version":3,"file":"LocalThreadListRuntimeCore.d.ts","sourceRoot":"","sources":["../../../src/runtimes/local/LocalThreadListRuntimeCore.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAEvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,WAAW,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,UAAU,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEpC,OAAO,IAAI,IAAI,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,CAC/B,IAAI,EAAE,yBAAyB,KAC5B,sBAAsB,CAAC;AAE5B,qBAAa,0BAA2B,YAAW,qBAAqB;IAwB1D,OAAO,CAAC,cAAc;IAvBlC,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,kBAAkB,CAAyB;IACnD,OAAO,CAAC,YAAY,CAAqB;IAEzC,IAAW,WAAW,uBAErB;IAED,IAAW,SAAS,sBAEnB;IAED,IAAW,iBAAiB,sBAE3B;IAED,OAAO,CAAC,aAAa,CAAU;IAE/B,IAAW,YAAY,IAAI,MAAM,CAEhC;gBAEmB,cAAc,EAAE,kBAAkB;IAI/C,wBAAwB;IAOxB,WAAW,CAAC,QAAQ,EAAE,MAAM;IAItB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYrD,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;YA2B3B,QAAQ;IAyEf,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYzD,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUxC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS1C,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9C,OAAO,CAAC,cAAc,CAAyB;IAExC,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,WAAW;IAKnD,OAAO,CAAC,kBAAkB;CAG3B"}
1
+ {"version":3,"file":"LocalThreadListRuntimeCore.d.ts","sourceRoot":"","sources":["../../../src/runtimes/local/LocalThreadListRuntimeCore.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,WAAW,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,UAAU,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,MAAM,sBAAsB,CAAC;AAE9D,qBAAa,0BAA2B,YAAW,qBAAqB;IAwB1D,OAAO,CAAC,cAAc;IAvBlC,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,kBAAkB,CAAyB;IACnD,OAAO,CAAC,YAAY,CAAqB;IAEzC,IAAW,WAAW,uBAErB;IAED,IAAW,SAAS,sBAEnB;IAED,IAAW,iBAAiB,sBAE3B;IAED,OAAO,CAAC,aAAa,CAAU;IAE/B,IAAW,YAAY,IAAI,MAAM,CAEhC;gBAEmB,cAAc,EAAE,kBAAkB;IAI/C,wBAAwB;IAOxB,WAAW,CAAC,QAAQ,EAAE,MAAM;IAItB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYrD,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;YA2B3B,QAAQ;IAwEf,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYzD,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUxC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS1C,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9C,OAAO,CAAC,cAAc,CAAyB;IAExC,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,WAAW;IAKnD,OAAO,CAAC,kBAAkB;CAG3B"}
@@ -69,8 +69,9 @@ var LocalThreadListRuntimeCore = class {
69
69
  do {
70
70
  threadId = (0, import_idUtils.generateId)();
71
71
  } while (this._threadData.has(threadId));
72
- const runtime = this._threadFactory({ messages: [] });
72
+ const runtime = this._threadFactory();
73
73
  const dispose = runtime.unstable_on("initialize", () => {
74
+ dispose();
74
75
  const data = this._threadData.get(threadId);
75
76
  if (!data) throw new Error("Thread not found");
76
77
  this._stateOp(threadId, "regular");
@@ -78,8 +79,7 @@ var LocalThreadListRuntimeCore = class {
78
79
  this._threadData.set(threadId, {
79
80
  runtime,
80
81
  state: "new",
81
- threadId,
82
- dispose
82
+ threadId
83
83
  });
84
84
  this._newThreadId = threadId;
85
85
  }
@@ -117,7 +117,6 @@ var LocalThreadListRuntimeCore = class {
117
117
  break;
118
118
  case "deleted":
119
119
  this._threadData.delete(threadId);
120
- data.dispose();
121
120
  break;
122
121
  default: {
123
122
  const _exhaustiveCheck = newState;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/runtimes/local/LocalThreadListRuntimeCore.tsx"],"sourcesContent":["import type { Unsubscribe } from \"../../types\";\nimport { ThreadListRuntimeCore } from \"../core/ThreadListRuntimeCore\";\nimport { ExportedMessageRepository } from \"../utils/MessageRepository\";\nimport { generateId } from \"../../utils/idUtils\";\nimport { LocalThreadRuntimeCore } from \"./LocalThreadRuntimeCore\";\n\nexport type ThreadListAdapter = {\n subscribe(callback: () => void): Unsubscribe;\n};\n\nexport type LocalThreadData = {\n readonly runtime: LocalThreadRuntimeCore;\n readonly state: \"new\" | \"regular\" | \"archived\";\n readonly threadId: string;\n readonly title?: string | undefined;\n\n dispose(): void;\n};\n\nexport type LocalThreadFactory = (\n data: ExportedMessageRepository,\n) => LocalThreadRuntimeCore;\n\nexport class LocalThreadListRuntimeCore implements ThreadListRuntimeCore {\n private _threadData = new Map<string, LocalThreadData>();\n private _threadIds: readonly string[] = [];\n private _archivedThreadIds: readonly string[] = [];\n private _newThreadId: string | undefined;\n\n public get newThreadId() {\n return this._newThreadId;\n }\n\n public get threadIds() {\n return this._threadIds;\n }\n\n public get archivedThreadIds() {\n return this._archivedThreadIds;\n }\n\n private _mainThreadId!: string;\n\n public get mainThreadId(): string {\n return this._mainThreadId;\n }\n\n constructor(private _threadFactory: LocalThreadFactory) {\n this.switchToNewThread();\n }\n\n public getMainThreadRuntimeCore() {\n const result = this._threadData.get(this._mainThreadId)?.runtime;\n if (!result)\n throw new Error(\"Main thread not found. This is a bug in assistant-ui.\");\n return result;\n }\n\n public getItemById(threadId: string) {\n return this._threadData.get(threadId);\n }\n\n public async switchToThread(threadId: string): Promise<void> {\n if (this._mainThreadId === threadId) return;\n\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n\n if (data.state === \"archived\") await this.unarchive(threadId);\n\n this._mainThreadId = data.threadId;\n this._notifySubscribers();\n }\n\n public switchToNewThread(): Promise<void> {\n if (this._newThreadId === undefined) {\n let threadId: string;\n do {\n threadId = generateId();\n } while (this._threadData.has(threadId));\n\n const runtime = this._threadFactory({ messages: [] });\n const dispose = runtime.unstable_on(\"initialize\", () => {\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n\n this._stateOp(threadId, \"regular\");\n });\n this._threadData.set(threadId, {\n runtime,\n state: \"new\",\n threadId,\n dispose,\n });\n this._newThreadId = threadId;\n }\n\n this.switchToThread(this._newThreadId);\n return Promise.resolve();\n }\n\n private async _stateOp(\n threadId: string,\n newState: \"regular\" | \"archived\" | \"deleted\",\n ) {\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n\n const { state: lastState } = data;\n if (lastState === newState) return;\n\n // lastState\n switch (lastState) {\n case \"new\":\n this._newThreadId = undefined;\n break;\n case \"regular\":\n this._threadIds = this._threadIds.filter((t) => t !== threadId);\n break;\n case \"archived\":\n this._archivedThreadIds = this._archivedThreadIds.filter(\n (t) => t !== threadId,\n );\n break;\n\n default: {\n const _exhaustiveCheck: never = lastState;\n throw new Error(`Unsupported state: ${_exhaustiveCheck}`);\n }\n }\n\n // newState\n switch (newState) {\n case \"regular\":\n this._threadIds = [...this._threadIds, data.threadId];\n break;\n\n case \"archived\":\n this._archivedThreadIds = [...this._archivedThreadIds, data.threadId];\n break;\n\n case \"deleted\":\n this._threadData.delete(threadId);\n data.dispose();\n break;\n\n default: {\n const _exhaustiveCheck: never = newState;\n throw new Error(`Unsupported state: ${_exhaustiveCheck}`);\n }\n }\n\n if (newState !== \"deleted\") {\n this._threadData.set(threadId, {\n ...data,\n state: newState,\n });\n }\n\n if (\n threadId === this._mainThreadId &&\n (newState === \"archived\" || newState === \"deleted\")\n ) {\n const lastThreadId = this._threadIds[0];\n if (lastThreadId) {\n await this.switchToThread(lastThreadId);\n } else {\n await this.switchToNewThread();\n }\n } else {\n this._notifySubscribers();\n }\n }\n\n public rename(threadId: string, newTitle: string): Promise<void> {\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n\n this._threadData.set(threadId, {\n ...data,\n title: newTitle,\n });\n this._notifySubscribers();\n return Promise.resolve();\n }\n\n public archive(threadId: string): Promise<void> {\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n if (data.state !== \"regular\")\n throw new Error(\"Thread is not yet initialized or already archived\");\n\n this._stateOp(threadId, \"archived\");\n return Promise.resolve();\n }\n\n public unarchive(threadId: string): Promise<void> {\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n if (data.state !== \"archived\") throw new Error(\"Thread is not archived\");\n\n this._stateOp(threadId, \"regular\");\n return Promise.resolve();\n }\n\n public delete(threadId: string): Promise<void> {\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n if (data.state !== \"regular\" && data.state !== \"archived\")\n throw new Error(\"Thread is not yet initalized\");\n\n this._stateOp(threadId, \"deleted\");\n return Promise.resolve();\n }\n\n private _subscriptions = new Set<() => void>();\n\n public subscribe(callback: () => void): Unsubscribe {\n this._subscriptions.add(callback);\n return () => this._subscriptions.delete(callback);\n }\n\n private _notifySubscribers() {\n for (const callback of this._subscriptions) callback();\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/runtimes/local/LocalThreadListRuntimeCore.tsx"],"sourcesContent":["import type { Unsubscribe } from \"../../types\";\nimport { ThreadListRuntimeCore } from \"../core/ThreadListRuntimeCore\";\nimport { generateId } from \"../../utils/idUtils\";\nimport { LocalThreadRuntimeCore } from \"./LocalThreadRuntimeCore\";\n\nexport type ThreadListAdapter = {\n subscribe(callback: () => void): Unsubscribe;\n};\n\nexport type LocalThreadData = {\n readonly runtime: LocalThreadRuntimeCore;\n readonly state: \"new\" | \"regular\" | \"archived\";\n readonly threadId: string;\n readonly title?: string | undefined;\n};\n\nexport type LocalThreadFactory = () => LocalThreadRuntimeCore;\n\nexport class LocalThreadListRuntimeCore implements ThreadListRuntimeCore {\n private _threadData = new Map<string, LocalThreadData>();\n private _threadIds: readonly string[] = [];\n private _archivedThreadIds: readonly string[] = [];\n private _newThreadId: string | undefined;\n\n public get newThreadId() {\n return this._newThreadId;\n }\n\n public get threadIds() {\n return this._threadIds;\n }\n\n public get archivedThreadIds() {\n return this._archivedThreadIds;\n }\n\n private _mainThreadId!: string;\n\n public get mainThreadId(): string {\n return this._mainThreadId;\n }\n\n constructor(private _threadFactory: LocalThreadFactory) {\n this.switchToNewThread();\n }\n\n public getMainThreadRuntimeCore() {\n const result = this._threadData.get(this._mainThreadId)?.runtime;\n if (!result)\n throw new Error(\"Main thread not found. This is a bug in assistant-ui.\");\n return result;\n }\n\n public getItemById(threadId: string) {\n return this._threadData.get(threadId);\n }\n\n public async switchToThread(threadId: string): Promise<void> {\n if (this._mainThreadId === threadId) return;\n\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n\n if (data.state === \"archived\") await this.unarchive(threadId);\n\n this._mainThreadId = data.threadId;\n this._notifySubscribers();\n }\n\n public switchToNewThread(): Promise<void> {\n if (this._newThreadId === undefined) {\n let threadId: string;\n do {\n threadId = generateId();\n } while (this._threadData.has(threadId));\n\n const runtime = this._threadFactory();\n const dispose = runtime.unstable_on(\"initialize\", () => {\n dispose();\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n\n this._stateOp(threadId, \"regular\");\n });\n this._threadData.set(threadId, {\n runtime,\n state: \"new\",\n threadId,\n });\n this._newThreadId = threadId;\n }\n\n this.switchToThread(this._newThreadId);\n return Promise.resolve();\n }\n\n private async _stateOp(\n threadId: string,\n newState: \"regular\" | \"archived\" | \"deleted\",\n ) {\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n\n const { state: lastState } = data;\n if (lastState === newState) return;\n\n // lastState\n switch (lastState) {\n case \"new\":\n this._newThreadId = undefined;\n break;\n case \"regular\":\n this._threadIds = this._threadIds.filter((t) => t !== threadId);\n break;\n case \"archived\":\n this._archivedThreadIds = this._archivedThreadIds.filter(\n (t) => t !== threadId,\n );\n break;\n\n default: {\n const _exhaustiveCheck: never = lastState;\n throw new Error(`Unsupported state: ${_exhaustiveCheck}`);\n }\n }\n\n // newState\n switch (newState) {\n case \"regular\":\n this._threadIds = [...this._threadIds, data.threadId];\n break;\n\n case \"archived\":\n this._archivedThreadIds = [...this._archivedThreadIds, data.threadId];\n break;\n\n case \"deleted\":\n this._threadData.delete(threadId);\n break;\n\n default: {\n const _exhaustiveCheck: never = newState;\n throw new Error(`Unsupported state: ${_exhaustiveCheck}`);\n }\n }\n\n if (newState !== \"deleted\") {\n this._threadData.set(threadId, {\n ...data,\n state: newState,\n });\n }\n\n if (\n threadId === this._mainThreadId &&\n (newState === \"archived\" || newState === \"deleted\")\n ) {\n const lastThreadId = this._threadIds[0];\n if (lastThreadId) {\n await this.switchToThread(lastThreadId);\n } else {\n await this.switchToNewThread();\n }\n } else {\n this._notifySubscribers();\n }\n }\n\n public rename(threadId: string, newTitle: string): Promise<void> {\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n\n this._threadData.set(threadId, {\n ...data,\n title: newTitle,\n });\n this._notifySubscribers();\n return Promise.resolve();\n }\n\n public archive(threadId: string): Promise<void> {\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n if (data.state !== \"regular\")\n throw new Error(\"Thread is not yet initialized or already archived\");\n\n this._stateOp(threadId, \"archived\");\n return Promise.resolve();\n }\n\n public unarchive(threadId: string): Promise<void> {\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n if (data.state !== \"archived\") throw new Error(\"Thread is not archived\");\n\n this._stateOp(threadId, \"regular\");\n return Promise.resolve();\n }\n\n public delete(threadId: string): Promise<void> {\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n if (data.state !== \"regular\" && data.state !== \"archived\")\n throw new Error(\"Thread is not yet initalized\");\n\n this._stateOp(threadId, \"deleted\");\n return Promise.resolve();\n }\n\n private _subscriptions = new Set<() => void>();\n\n public subscribe(callback: () => void): Unsubscribe {\n this._subscriptions.add(callback);\n return () => this._subscriptions.delete(callback);\n }\n\n private _notifySubscribers() {\n for (const callback of this._subscriptions) callback();\n }\n}\n"],"mappings":"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","names":[]}
@@ -45,8 +45,9 @@ var LocalThreadListRuntimeCore = class {
45
45
  do {
46
46
  threadId = generateId();
47
47
  } while (this._threadData.has(threadId));
48
- const runtime = this._threadFactory({ messages: [] });
48
+ const runtime = this._threadFactory();
49
49
  const dispose = runtime.unstable_on("initialize", () => {
50
+ dispose();
50
51
  const data = this._threadData.get(threadId);
51
52
  if (!data) throw new Error("Thread not found");
52
53
  this._stateOp(threadId, "regular");
@@ -54,8 +55,7 @@ var LocalThreadListRuntimeCore = class {
54
55
  this._threadData.set(threadId, {
55
56
  runtime,
56
57
  state: "new",
57
- threadId,
58
- dispose
58
+ threadId
59
59
  });
60
60
  this._newThreadId = threadId;
61
61
  }
@@ -93,7 +93,6 @@ var LocalThreadListRuntimeCore = class {
93
93
  break;
94
94
  case "deleted":
95
95
  this._threadData.delete(threadId);
96
- data.dispose();
97
96
  break;
98
97
  default: {
99
98
  const _exhaustiveCheck = newState;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/runtimes/local/LocalThreadListRuntimeCore.tsx"],"sourcesContent":["import type { Unsubscribe } from \"../../types\";\nimport { ThreadListRuntimeCore } from \"../core/ThreadListRuntimeCore\";\nimport { ExportedMessageRepository } from \"../utils/MessageRepository\";\nimport { generateId } from \"../../utils/idUtils\";\nimport { LocalThreadRuntimeCore } from \"./LocalThreadRuntimeCore\";\n\nexport type ThreadListAdapter = {\n subscribe(callback: () => void): Unsubscribe;\n};\n\nexport type LocalThreadData = {\n readonly runtime: LocalThreadRuntimeCore;\n readonly state: \"new\" | \"regular\" | \"archived\";\n readonly threadId: string;\n readonly title?: string | undefined;\n\n dispose(): void;\n};\n\nexport type LocalThreadFactory = (\n data: ExportedMessageRepository,\n) => LocalThreadRuntimeCore;\n\nexport class LocalThreadListRuntimeCore implements ThreadListRuntimeCore {\n private _threadData = new Map<string, LocalThreadData>();\n private _threadIds: readonly string[] = [];\n private _archivedThreadIds: readonly string[] = [];\n private _newThreadId: string | undefined;\n\n public get newThreadId() {\n return this._newThreadId;\n }\n\n public get threadIds() {\n return this._threadIds;\n }\n\n public get archivedThreadIds() {\n return this._archivedThreadIds;\n }\n\n private _mainThreadId!: string;\n\n public get mainThreadId(): string {\n return this._mainThreadId;\n }\n\n constructor(private _threadFactory: LocalThreadFactory) {\n this.switchToNewThread();\n }\n\n public getMainThreadRuntimeCore() {\n const result = this._threadData.get(this._mainThreadId)?.runtime;\n if (!result)\n throw new Error(\"Main thread not found. This is a bug in assistant-ui.\");\n return result;\n }\n\n public getItemById(threadId: string) {\n return this._threadData.get(threadId);\n }\n\n public async switchToThread(threadId: string): Promise<void> {\n if (this._mainThreadId === threadId) return;\n\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n\n if (data.state === \"archived\") await this.unarchive(threadId);\n\n this._mainThreadId = data.threadId;\n this._notifySubscribers();\n }\n\n public switchToNewThread(): Promise<void> {\n if (this._newThreadId === undefined) {\n let threadId: string;\n do {\n threadId = generateId();\n } while (this._threadData.has(threadId));\n\n const runtime = this._threadFactory({ messages: [] });\n const dispose = runtime.unstable_on(\"initialize\", () => {\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n\n this._stateOp(threadId, \"regular\");\n });\n this._threadData.set(threadId, {\n runtime,\n state: \"new\",\n threadId,\n dispose,\n });\n this._newThreadId = threadId;\n }\n\n this.switchToThread(this._newThreadId);\n return Promise.resolve();\n }\n\n private async _stateOp(\n threadId: string,\n newState: \"regular\" | \"archived\" | \"deleted\",\n ) {\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n\n const { state: lastState } = data;\n if (lastState === newState) return;\n\n // lastState\n switch (lastState) {\n case \"new\":\n this._newThreadId = undefined;\n break;\n case \"regular\":\n this._threadIds = this._threadIds.filter((t) => t !== threadId);\n break;\n case \"archived\":\n this._archivedThreadIds = this._archivedThreadIds.filter(\n (t) => t !== threadId,\n );\n break;\n\n default: {\n const _exhaustiveCheck: never = lastState;\n throw new Error(`Unsupported state: ${_exhaustiveCheck}`);\n }\n }\n\n // newState\n switch (newState) {\n case \"regular\":\n this._threadIds = [...this._threadIds, data.threadId];\n break;\n\n case \"archived\":\n this._archivedThreadIds = [...this._archivedThreadIds, data.threadId];\n break;\n\n case \"deleted\":\n this._threadData.delete(threadId);\n data.dispose();\n break;\n\n default: {\n const _exhaustiveCheck: never = newState;\n throw new Error(`Unsupported state: ${_exhaustiveCheck}`);\n }\n }\n\n if (newState !== \"deleted\") {\n this._threadData.set(threadId, {\n ...data,\n state: newState,\n });\n }\n\n if (\n threadId === this._mainThreadId &&\n (newState === \"archived\" || newState === \"deleted\")\n ) {\n const lastThreadId = this._threadIds[0];\n if (lastThreadId) {\n await this.switchToThread(lastThreadId);\n } else {\n await this.switchToNewThread();\n }\n } else {\n this._notifySubscribers();\n }\n }\n\n public rename(threadId: string, newTitle: string): Promise<void> {\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n\n this._threadData.set(threadId, {\n ...data,\n title: newTitle,\n });\n this._notifySubscribers();\n return Promise.resolve();\n }\n\n public archive(threadId: string): Promise<void> {\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n if (data.state !== \"regular\")\n throw new Error(\"Thread is not yet initialized or already archived\");\n\n this._stateOp(threadId, \"archived\");\n return Promise.resolve();\n }\n\n public unarchive(threadId: string): Promise<void> {\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n if (data.state !== \"archived\") throw new Error(\"Thread is not archived\");\n\n this._stateOp(threadId, \"regular\");\n return Promise.resolve();\n }\n\n public delete(threadId: string): Promise<void> {\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n if (data.state !== \"regular\" && data.state !== \"archived\")\n throw new Error(\"Thread is not yet initalized\");\n\n this._stateOp(threadId, \"deleted\");\n return Promise.resolve();\n }\n\n private _subscriptions = new Set<() => void>();\n\n public subscribe(callback: () => void): Unsubscribe {\n this._subscriptions.add(callback);\n return () => this._subscriptions.delete(callback);\n }\n\n private _notifySubscribers() {\n for (const callback of this._subscriptions) callback();\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/runtimes/local/LocalThreadListRuntimeCore.tsx"],"sourcesContent":["import type { Unsubscribe } from \"../../types\";\nimport { ThreadListRuntimeCore } from \"../core/ThreadListRuntimeCore\";\nimport { generateId } from \"../../utils/idUtils\";\nimport { LocalThreadRuntimeCore } from \"./LocalThreadRuntimeCore\";\n\nexport type ThreadListAdapter = {\n subscribe(callback: () => void): Unsubscribe;\n};\n\nexport type LocalThreadData = {\n readonly runtime: LocalThreadRuntimeCore;\n readonly state: \"new\" | \"regular\" | \"archived\";\n readonly threadId: string;\n readonly title?: string | undefined;\n};\n\nexport type LocalThreadFactory = () => LocalThreadRuntimeCore;\n\nexport class LocalThreadListRuntimeCore implements ThreadListRuntimeCore {\n private _threadData = new Map<string, LocalThreadData>();\n private _threadIds: readonly string[] = [];\n private _archivedThreadIds: readonly string[] = [];\n private _newThreadId: string | undefined;\n\n public get newThreadId() {\n return this._newThreadId;\n }\n\n public get threadIds() {\n return this._threadIds;\n }\n\n public get archivedThreadIds() {\n return this._archivedThreadIds;\n }\n\n private _mainThreadId!: string;\n\n public get mainThreadId(): string {\n return this._mainThreadId;\n }\n\n constructor(private _threadFactory: LocalThreadFactory) {\n this.switchToNewThread();\n }\n\n public getMainThreadRuntimeCore() {\n const result = this._threadData.get(this._mainThreadId)?.runtime;\n if (!result)\n throw new Error(\"Main thread not found. This is a bug in assistant-ui.\");\n return result;\n }\n\n public getItemById(threadId: string) {\n return this._threadData.get(threadId);\n }\n\n public async switchToThread(threadId: string): Promise<void> {\n if (this._mainThreadId === threadId) return;\n\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n\n if (data.state === \"archived\") await this.unarchive(threadId);\n\n this._mainThreadId = data.threadId;\n this._notifySubscribers();\n }\n\n public switchToNewThread(): Promise<void> {\n if (this._newThreadId === undefined) {\n let threadId: string;\n do {\n threadId = generateId();\n } while (this._threadData.has(threadId));\n\n const runtime = this._threadFactory();\n const dispose = runtime.unstable_on(\"initialize\", () => {\n dispose();\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n\n this._stateOp(threadId, \"regular\");\n });\n this._threadData.set(threadId, {\n runtime,\n state: \"new\",\n threadId,\n });\n this._newThreadId = threadId;\n }\n\n this.switchToThread(this._newThreadId);\n return Promise.resolve();\n }\n\n private async _stateOp(\n threadId: string,\n newState: \"regular\" | \"archived\" | \"deleted\",\n ) {\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n\n const { state: lastState } = data;\n if (lastState === newState) return;\n\n // lastState\n switch (lastState) {\n case \"new\":\n this._newThreadId = undefined;\n break;\n case \"regular\":\n this._threadIds = this._threadIds.filter((t) => t !== threadId);\n break;\n case \"archived\":\n this._archivedThreadIds = this._archivedThreadIds.filter(\n (t) => t !== threadId,\n );\n break;\n\n default: {\n const _exhaustiveCheck: never = lastState;\n throw new Error(`Unsupported state: ${_exhaustiveCheck}`);\n }\n }\n\n // newState\n switch (newState) {\n case \"regular\":\n this._threadIds = [...this._threadIds, data.threadId];\n break;\n\n case \"archived\":\n this._archivedThreadIds = [...this._archivedThreadIds, data.threadId];\n break;\n\n case \"deleted\":\n this._threadData.delete(threadId);\n break;\n\n default: {\n const _exhaustiveCheck: never = newState;\n throw new Error(`Unsupported state: ${_exhaustiveCheck}`);\n }\n }\n\n if (newState !== \"deleted\") {\n this._threadData.set(threadId, {\n ...data,\n state: newState,\n });\n }\n\n if (\n threadId === this._mainThreadId &&\n (newState === \"archived\" || newState === \"deleted\")\n ) {\n const lastThreadId = this._threadIds[0];\n if (lastThreadId) {\n await this.switchToThread(lastThreadId);\n } else {\n await this.switchToNewThread();\n }\n } else {\n this._notifySubscribers();\n }\n }\n\n public rename(threadId: string, newTitle: string): Promise<void> {\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n\n this._threadData.set(threadId, {\n ...data,\n title: newTitle,\n });\n this._notifySubscribers();\n return Promise.resolve();\n }\n\n public archive(threadId: string): Promise<void> {\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n if (data.state !== \"regular\")\n throw new Error(\"Thread is not yet initialized or already archived\");\n\n this._stateOp(threadId, \"archived\");\n return Promise.resolve();\n }\n\n public unarchive(threadId: string): Promise<void> {\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n if (data.state !== \"archived\") throw new Error(\"Thread is not archived\");\n\n this._stateOp(threadId, \"regular\");\n return Promise.resolve();\n }\n\n public delete(threadId: string): Promise<void> {\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n if (data.state !== \"regular\" && data.state !== \"archived\")\n throw new Error(\"Thread is not yet initalized\");\n\n this._stateOp(threadId, \"deleted\");\n return Promise.resolve();\n }\n\n private _subscriptions = new Set<() => void>();\n\n public subscribe(callback: () => void): Unsubscribe {\n this._subscriptions.add(callback);\n return () => this._subscriptions.delete(callback);\n }\n\n private _notifySubscribers() {\n for (const callback of this._subscriptions) callback();\n }\n}\n"],"mappings":"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","names":[]}
@@ -51,7 +51,7 @@ var useLocalRuntime = (adapter, { initialMessages, ...options } = {}) => {
51
51
  const [runtime] = (0, import_react.useState)(() => new import_LocalRuntimeCore.LocalRuntimeCore(opt, initialMessages));
52
52
  (0, import_react.useEffect)(() => {
53
53
  runtime.threadList.getMainThreadRuntimeCore().__internal_setOptions(opt);
54
- });
54
+ }, [runtime, opt]);
55
55
  return (0, import_react.useMemo)(() => LocalRuntimeImpl.create(runtime), [runtime]);
56
56
  };
57
57
  // Annotate the CommonJS export names for ESM import in node:
@@ -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 {\n AssistantRuntime,\n AssistantRuntimeImpl,\n} from \"../../api/AssistantRuntime\";\nimport { ThreadRuntimeImpl } from \"../../internal\";\n\nexport type LocalRuntime = AssistantRuntime & {\n reset: (options?: Parameters<LocalRuntimeCore[\"reset\"]>[0]) => void;\n};\n\nclass LocalRuntimeImpl extends AssistantRuntimeImpl implements LocalRuntime {\n private constructor(private core: LocalRuntimeCore) {\n super(core, ThreadRuntimeImpl);\n }\n\n public reset(options?: Parameters<LocalRuntimeCore[\"reset\"]>[0]) {\n this.core.reset(options);\n }\n\n public static override create(_core: LocalRuntimeCore): LocalRuntime {\n return new LocalRuntimeImpl(_core);\n }\n}\n\nexport const useLocalRuntime = (\n adapter: ChatModelAdapter,\n { initialMessages, ...options }: LocalRuntimeOptions = {},\n) => {\n const opt = {\n ...options,\n adapters: {\n ...options.adapters,\n chatModel: adapter,\n },\n };\n\n const [runtime] = useState(() => new LocalRuntimeCore(opt, initialMessages));\n\n useEffect(() => {\n runtime.threadList.getMainThreadRuntimeCore().__internal_setOptions(opt);\n });\n\n return useMemo(() => LocalRuntimeImpl.create(runtime), [runtime]);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAA6C;AAE7C,8BAAiC;AAEjC,8BAGO;AACP,sBAAkC;AAMlC,IAAM,mBAAN,MAAM,0BAAyB,6CAA6C;AAAA,EAClE,YAAoB,MAAwB;AAClD,UAAM,MAAM,iCAAiB;AADH;AAAA,EAE5B;AAAA,EAEO,MAAM,SAAoD;AAC/D,SAAK,KAAK,MAAM,OAAO;AAAA,EACzB;AAAA,EAEA,OAAuB,OAAO,OAAuC;AACnE,WAAO,IAAI,kBAAiB,KAAK;AAAA,EACnC;AACF;AAEO,IAAM,kBAAkB,CAC7B,SACA,EAAE,iBAAiB,GAAG,QAAQ,IAAyB,CAAC,MACrD;AACH,QAAM,MAAM;AAAA,IACV,GAAG;AAAA,IACH,UAAU;AAAA,MACR,GAAG,QAAQ;AAAA,MACX,WAAW;AAAA,IACb;AAAA,EACF;AAEA,QAAM,CAAC,OAAO,QAAI,uBAAS,MAAM,IAAI,yCAAiB,KAAK,eAAe,CAAC;AAE3E,8BAAU,MAAM;AACd,YAAQ,WAAW,yBAAyB,EAAE,sBAAsB,GAAG;AAAA,EACzE,CAAC;AAED,aAAO,sBAAQ,MAAM,iBAAiB,OAAO,OAAO,GAAG,CAAC,OAAO,CAAC;AAClE;","names":[]}
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 {\n AssistantRuntime,\n AssistantRuntimeImpl,\n} from \"../../api/AssistantRuntime\";\nimport { ThreadRuntimeImpl } from \"../../internal\";\n\nexport type LocalRuntime = AssistantRuntime & {\n reset: (options?: Parameters<LocalRuntimeCore[\"reset\"]>[0]) => void;\n};\n\nclass LocalRuntimeImpl extends AssistantRuntimeImpl implements LocalRuntime {\n private constructor(private core: LocalRuntimeCore) {\n super(core, ThreadRuntimeImpl);\n }\n\n public reset(options?: Parameters<LocalRuntimeCore[\"reset\"]>[0]) {\n this.core.reset(options);\n }\n\n public static override create(_core: LocalRuntimeCore): LocalRuntime {\n return new LocalRuntimeImpl(_core);\n }\n}\n\nexport const useLocalRuntime = (\n adapter: ChatModelAdapter,\n { initialMessages, ...options }: LocalRuntimeOptions = {},\n) => {\n const opt = {\n ...options,\n adapters: {\n ...options.adapters,\n chatModel: adapter,\n },\n };\n\n const [runtime] = useState(() => new LocalRuntimeCore(opt, initialMessages));\n\n useEffect(() => {\n runtime.threadList.getMainThreadRuntimeCore().__internal_setOptions(opt);\n }, [runtime, opt]);\n\n return useMemo(() => LocalRuntimeImpl.create(runtime), [runtime]);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAA6C;AAE7C,8BAAiC;AAEjC,8BAGO;AACP,sBAAkC;AAMlC,IAAM,mBAAN,MAAM,0BAAyB,6CAA6C;AAAA,EAClE,YAAoB,MAAwB;AAClD,UAAM,MAAM,iCAAiB;AADH;AAAA,EAE5B;AAAA,EAEO,MAAM,SAAoD;AAC/D,SAAK,KAAK,MAAM,OAAO;AAAA,EACzB;AAAA,EAEA,OAAuB,OAAO,OAAuC;AACnE,WAAO,IAAI,kBAAiB,KAAK;AAAA,EACnC;AACF;AAEO,IAAM,kBAAkB,CAC7B,SACA,EAAE,iBAAiB,GAAG,QAAQ,IAAyB,CAAC,MACrD;AACH,QAAM,MAAM;AAAA,IACV,GAAG;AAAA,IACH,UAAU;AAAA,MACR,GAAG,QAAQ;AAAA,MACX,WAAW;AAAA,IACb;AAAA,EACF;AAEA,QAAM,CAAC,OAAO,QAAI,uBAAS,MAAM,IAAI,yCAAiB,KAAK,eAAe,CAAC;AAE3E,8BAAU,MAAM;AACd,YAAQ,WAAW,yBAAyB,EAAE,sBAAsB,GAAG;AAAA,EACzE,GAAG,CAAC,SAAS,GAAG,CAAC;AAEjB,aAAO,sBAAQ,MAAM,iBAAiB,OAAO,OAAO,GAAG,CAAC,OAAO,CAAC;AAClE;","names":[]}
@@ -30,7 +30,7 @@ var useLocalRuntime = (adapter, { initialMessages, ...options } = {}) => {
30
30
  const [runtime] = useState(() => new LocalRuntimeCore(opt, initialMessages));
31
31
  useEffect(() => {
32
32
  runtime.threadList.getMainThreadRuntimeCore().__internal_setOptions(opt);
33
- });
33
+ }, [runtime, opt]);
34
34
  return useMemo(() => LocalRuntimeImpl.create(runtime), [runtime]);
35
35
  };
36
36
  export {
@@ -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 {\n AssistantRuntime,\n AssistantRuntimeImpl,\n} from \"../../api/AssistantRuntime\";\nimport { ThreadRuntimeImpl } from \"../../internal\";\n\nexport type LocalRuntime = AssistantRuntime & {\n reset: (options?: Parameters<LocalRuntimeCore[\"reset\"]>[0]) => void;\n};\n\nclass LocalRuntimeImpl extends AssistantRuntimeImpl implements LocalRuntime {\n private constructor(private core: LocalRuntimeCore) {\n super(core, ThreadRuntimeImpl);\n }\n\n public reset(options?: Parameters<LocalRuntimeCore[\"reset\"]>[0]) {\n this.core.reset(options);\n }\n\n public static override create(_core: LocalRuntimeCore): LocalRuntime {\n return new LocalRuntimeImpl(_core);\n }\n}\n\nexport const useLocalRuntime = (\n adapter: ChatModelAdapter,\n { initialMessages, ...options }: LocalRuntimeOptions = {},\n) => {\n const opt = {\n ...options,\n adapters: {\n ...options.adapters,\n chatModel: adapter,\n },\n };\n\n const [runtime] = useState(() => new LocalRuntimeCore(opt, initialMessages));\n\n useEffect(() => {\n runtime.threadList.getMainThreadRuntimeCore().__internal_setOptions(opt);\n });\n\n return useMemo(() => LocalRuntimeImpl.create(runtime), [runtime]);\n};\n"],"mappings":";;;AAEA,SAAS,WAAW,SAAS,gBAAgB;AAE7C,SAAS,wBAAwB;AAEjC;AAAA,EAEE;AAAA,OACK;AACP,SAAS,yBAAyB;AAMlC,IAAM,mBAAN,MAAM,0BAAyB,qBAA6C;AAAA,EAClE,YAAoB,MAAwB;AAClD,UAAM,MAAM,iBAAiB;AADH;AAAA,EAE5B;AAAA,EAEO,MAAM,SAAoD;AAC/D,SAAK,KAAK,MAAM,OAAO;AAAA,EACzB;AAAA,EAEA,OAAuB,OAAO,OAAuC;AACnE,WAAO,IAAI,kBAAiB,KAAK;AAAA,EACnC;AACF;AAEO,IAAM,kBAAkB,CAC7B,SACA,EAAE,iBAAiB,GAAG,QAAQ,IAAyB,CAAC,MACrD;AACH,QAAM,MAAM;AAAA,IACV,GAAG;AAAA,IACH,UAAU;AAAA,MACR,GAAG,QAAQ;AAAA,MACX,WAAW;AAAA,IACb;AAAA,EACF;AAEA,QAAM,CAAC,OAAO,IAAI,SAAS,MAAM,IAAI,iBAAiB,KAAK,eAAe,CAAC;AAE3E,YAAU,MAAM;AACd,YAAQ,WAAW,yBAAyB,EAAE,sBAAsB,GAAG;AAAA,EACzE,CAAC;AAED,SAAO,QAAQ,MAAM,iBAAiB,OAAO,OAAO,GAAG,CAAC,OAAO,CAAC;AAClE;","names":[]}
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 {\n AssistantRuntime,\n AssistantRuntimeImpl,\n} from \"../../api/AssistantRuntime\";\nimport { ThreadRuntimeImpl } from \"../../internal\";\n\nexport type LocalRuntime = AssistantRuntime & {\n reset: (options?: Parameters<LocalRuntimeCore[\"reset\"]>[0]) => void;\n};\n\nclass LocalRuntimeImpl extends AssistantRuntimeImpl implements LocalRuntime {\n private constructor(private core: LocalRuntimeCore) {\n super(core, ThreadRuntimeImpl);\n }\n\n public reset(options?: Parameters<LocalRuntimeCore[\"reset\"]>[0]) {\n this.core.reset(options);\n }\n\n public static override create(_core: LocalRuntimeCore): LocalRuntime {\n return new LocalRuntimeImpl(_core);\n }\n}\n\nexport const useLocalRuntime = (\n adapter: ChatModelAdapter,\n { initialMessages, ...options }: LocalRuntimeOptions = {},\n) => {\n const opt = {\n ...options,\n adapters: {\n ...options.adapters,\n chatModel: adapter,\n },\n };\n\n const [runtime] = useState(() => new LocalRuntimeCore(opt, initialMessages));\n\n useEffect(() => {\n runtime.threadList.getMainThreadRuntimeCore().__internal_setOptions(opt);\n }, [runtime, opt]);\n\n return useMemo(() => LocalRuntimeImpl.create(runtime), [runtime]);\n};\n"],"mappings":";;;AAEA,SAAS,WAAW,SAAS,gBAAgB;AAE7C,SAAS,wBAAwB;AAEjC;AAAA,EAEE;AAAA,OACK;AACP,SAAS,yBAAyB;AAMlC,IAAM,mBAAN,MAAM,0BAAyB,qBAA6C;AAAA,EAClE,YAAoB,MAAwB;AAClD,UAAM,MAAM,iBAAiB;AADH;AAAA,EAE5B;AAAA,EAEO,MAAM,SAAoD;AAC/D,SAAK,KAAK,MAAM,OAAO;AAAA,EACzB;AAAA,EAEA,OAAuB,OAAO,OAAuC;AACnE,WAAO,IAAI,kBAAiB,KAAK;AAAA,EACnC;AACF;AAEO,IAAM,kBAAkB,CAC7B,SACA,EAAE,iBAAiB,GAAG,QAAQ,IAAyB,CAAC,MACrD;AACH,QAAM,MAAM;AAAA,IACV,GAAG;AAAA,IACH,UAAU;AAAA,MACR,GAAG,QAAQ;AAAA,MACX,WAAW;AAAA,IACb;AAAA,EACF;AAEA,QAAM,CAAC,OAAO,IAAI,SAAS,MAAM,IAAI,iBAAiB,KAAK,eAAe,CAAC;AAE3E,YAAU,MAAM;AACd,YAAQ,WAAW,yBAAyB,EAAE,sBAAsB,GAAG;AAAA,EACzE,GAAG,CAAC,SAAS,GAAG,CAAC;AAEjB,SAAO,QAAQ,MAAM,iBAAiB,OAAO,OAAO,GAAG,CAAC,OAAO,CAAC;AAClE;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/styles/base.css","../../src/styles/tailwindcss/base-components.css","../../src/styles/tailwindcss/thread.css","../../src/styles/themes/default.css"],"sourcesContent":[":where(.aui-root) *, :where(.aui-root) ::before, :where(.aui-root) ::after {\n --aui-border-spacing-x: 0;\n --aui-border-spacing-y: 0;\n --aui-translate-x: 0;\n --aui-translate-y: 0;\n --aui-rotate: 0;\n --aui-skew-x: 0;\n --aui-skew-y: 0;\n --aui-scale-x: 1;\n --aui-scale-y: 1;\n --aui-ring-inset: ;\n --aui-ring-offset-width: 0px;\n --aui-ring-offset-color: #fff;\n --aui-ring-color: rgb(59 130 246 / 0.5);\n --aui-ring-offset-shadow: 0 0 #0000;\n --aui-ring-shadow: 0 0 #0000;\n --aui-shadow: 0 0 #0000;\n --aui-shadow-colored: 0 0 #0000;\n --aui-blur: ;\n --aui-brightness: ;\n --aui-contrast: ;\n --aui-grayscale: ;\n --aui-hue-rotate: ;\n --aui-invert: ;\n --aui-saturate: ;\n --aui-sepia: ;\n --aui-drop-shadow: ;\n --aui-backdrop-blur: ;\n --aui-backdrop-brightness: ;\n --aui-backdrop-contrast: ;\n --aui-backdrop-grayscale: ;\n --aui-backdrop-hue-rotate: ;\n --aui-backdrop-invert: ;\n --aui-backdrop-opacity: ;\n --aui-backdrop-saturate: ;\n --aui-backdrop-sepia: ;\n --aui-contain-size: ;\n --aui-contain-layout: ;\n --aui-contain-paint: ;\n --aui-contain-style: ;\n}\n :where(.aui-root) ::backdrop {\n --aui-border-spacing-x: 0;\n --aui-border-spacing-y: 0;\n --aui-translate-x: 0;\n --aui-translate-y: 0;\n --aui-rotate: 0;\n --aui-skew-x: 0;\n --aui-skew-y: 0;\n --aui-scale-x: 1;\n --aui-scale-y: 1;\n --aui-ring-inset: ;\n --aui-ring-offset-width: 0px;\n --aui-ring-offset-color: #fff;\n --aui-ring-color: rgb(59 130 246 / 0.5);\n --aui-ring-offset-shadow: 0 0 #0000;\n --aui-ring-shadow: 0 0 #0000;\n --aui-shadow: 0 0 #0000;\n --aui-shadow-colored: 0 0 #0000;\n --aui-blur: ;\n --aui-brightness: ;\n --aui-contrast: ;\n --aui-grayscale: ;\n --aui-hue-rotate: ;\n --aui-invert: ;\n --aui-saturate: ;\n --aui-sepia: ;\n --aui-drop-shadow: ;\n --aui-backdrop-blur: ;\n --aui-backdrop-brightness: ;\n --aui-backdrop-contrast: ;\n --aui-backdrop-grayscale: ;\n --aui-backdrop-hue-rotate: ;\n --aui-backdrop-invert: ;\n --aui-backdrop-opacity: ;\n --aui-backdrop-saturate: ;\n --aui-backdrop-sepia: ;\n --aui-contain-size: ;\n --aui-contain-layout: ;\n --aui-contain-paint: ;\n --aui-contain-style: ;\n}\n /*\n1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\n2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)\n*/\n :where(.aui-root) *,\n:where(.aui-root) ::before,\n:where(.aui-root) ::after {\n box-sizing: border-box; /* 1 */\n border-width: 0; /* 2 */\n border-style: solid; /* 2 */\n border-color: #e5e7eb; /* 2 */\n}\n /*\n! tailwindcss v3.4.16 | MIT License | https://tailwindcss.com\n*/\n :where(.aui-root) ::before,\n:where(.aui-root) ::after {\n --aui-content: '';\n}\n /*\n1. Use a consistent sensible line-height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n3. Use a more readable tab size.\n4. Use the user's configured `sans` font-family by default.\n5. Use the user's configured `sans` font-feature-settings by default.\n6. Use the user's configured `sans` font-variation-settings by default.\n7. Disable tap highlights on iOS\n*/\n :where(.aui-root) html,\n:where(.aui-root) :host {\n line-height: 1.5; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n -moz-tab-size: 4; /* 3 */\n -o-tab-size: 4;\n tab-size: 4; /* 3 */\n font-family: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"; /* 4 */\n font-feature-settings: normal; /* 5 */\n font-variation-settings: normal; /* 6 */\n -webkit-tap-highlight-color: transparent; /* 7 */\n}\n /*\n1. Remove the margin in all browsers.\n2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.\n*/\n :where(.aui-root) body {\n margin: 0; /* 1 */\n line-height: inherit; /* 2 */\n}\n /*\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n3. Ensure horizontal rules are visible by default.\n*/\n :where(.aui-root) hr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n border-top-width: 1px; /* 3 */\n}\n /*\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n :where(.aui-root) abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n /*\nRemove the default font size and weight for headings.\n*/\n :where(.aui-root) h1,\n:where(.aui-root) h2,\n:where(.aui-root) h3,\n:where(.aui-root) h4,\n:where(.aui-root) h5,\n:where(.aui-root) h6 {\n font-size: inherit;\n font-weight: inherit;\n}\n /*\nReset links to optimize for opt-in styling instead of opt-out.\n*/\n :where(.aui-root) a {\n color: inherit;\n text-decoration: inherit;\n}\n /*\nAdd the correct font weight in Edge and Safari.\n*/\n :where(.aui-root) b,\n:where(.aui-root) strong {\n font-weight: bolder;\n}\n /*\n1. Use the user's configured `mono` font-family by default.\n2. Use the user's configured `mono` font-feature-settings by default.\n3. Use the user's configured `mono` font-variation-settings by default.\n4. Correct the odd `em` font sizing in all browsers.\n*/\n :where(.aui-root) code,\n:where(.aui-root) kbd,\n:where(.aui-root) samp,\n:where(.aui-root) pre {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace; /* 1 */\n font-feature-settings: normal; /* 2 */\n font-variation-settings: normal; /* 3 */\n font-size: 1em; /* 4 */\n}\n /*\nAdd the correct font size in all browsers.\n*/\n :where(.aui-root) small {\n font-size: 80%;\n}\n /*\nPrevent `sub` and `sup` elements from affecting the line height in all browsers.\n*/\n :where(.aui-root) sub,\n:where(.aui-root) sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n :where(.aui-root) sub {\n bottom: -0.25em;\n}\n :where(.aui-root) sup {\n top: -0.5em;\n}\n /*\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n3. Remove gaps between table borders by default.\n*/\n :where(.aui-root) table {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n border-collapse: collapse; /* 3 */\n}\n /*\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n3. Remove default padding in all browsers.\n*/\n :where(.aui-root) button,\n:where(.aui-root) input,\n:where(.aui-root) optgroup,\n:where(.aui-root) select,\n:where(.aui-root) textarea {\n font-family: inherit; /* 1 */\n font-feature-settings: inherit; /* 1 */\n font-variation-settings: inherit; /* 1 */\n font-size: 100%; /* 1 */\n font-weight: inherit; /* 1 */\n line-height: inherit; /* 1 */\n letter-spacing: inherit; /* 1 */\n color: inherit; /* 1 */\n margin: 0; /* 2 */\n padding: 0; /* 3 */\n}\n /*\nRemove the inheritance of text transform in Edge and Firefox.\n*/\n :where(.aui-root) button,\n:where(.aui-root) select {\n text-transform: none;\n}\n /*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Remove default button styles.\n*/\n :where(.aui-root) button,\n:where(.aui-root) input:where([type='button']),\n:where(.aui-root) input:where([type='reset']),\n:where(.aui-root) input:where([type='submit']) {\n -webkit-appearance: button; /* 1 */\n background-color: transparent; /* 2 */\n background-image: none; /* 2 */\n}\n /*\nUse the modern Firefox focus style for all focusable elements.\n*/\n :where(.aui-root) :-moz-focusring {\n outline: auto;\n}\n /*\nRemove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\n*/\n :where(.aui-root) :-moz-ui-invalid {\n box-shadow: none;\n}\n /*\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n :where(.aui-root) progress {\n vertical-align: baseline;\n}\n /*\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n :where(.aui-root) ::-webkit-inner-spin-button,\n:where(.aui-root) ::-webkit-outer-spin-button {\n height: auto;\n}\n /*\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n :where(.aui-root) [type='search'] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n /*\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n :where(.aui-root) ::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n /*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to `inherit` in Safari.\n*/\n :where(.aui-root) ::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n /*\nAdd the correct display in Chrome and Safari.\n*/\n :where(.aui-root) summary {\n display: list-item;\n}\n /*\nRemoves the default spacing and border for appropriate elements.\n*/\n :where(.aui-root) blockquote,\n:where(.aui-root) dl,\n:where(.aui-root) dd,\n:where(.aui-root) h1,\n:where(.aui-root) h2,\n:where(.aui-root) h3,\n:where(.aui-root) h4,\n:where(.aui-root) h5,\n:where(.aui-root) h6,\n:where(.aui-root) hr,\n:where(.aui-root) figure,\n:where(.aui-root) p,\n:where(.aui-root) pre {\n margin: 0;\n}\n :where(.aui-root) fieldset {\n margin: 0;\n padding: 0;\n}\n :where(.aui-root) legend {\n padding: 0;\n}\n :where(.aui-root) ol,\n:where(.aui-root) ul,\n:where(.aui-root) menu {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n /*\nReset default styling for dialogs.\n*/\n :where(.aui-root) dialog {\n padding: 0;\n}\n /*\nPrevent resizing textareas horizontally by default.\n*/\n :where(.aui-root) textarea {\n resize: vertical;\n}\n /*\n1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\n2. Set the default placeholder color to the user's configured gray 400 color.\n*/\n :where(.aui-root) input::-moz-placeholder, :where(.aui-root) textarea::-moz-placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n :where(.aui-root) input::placeholder,\n:where(.aui-root) textarea::placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n /*\nSet the default cursor for buttons.\n*/\n :where(.aui-root) button,\n:where(.aui-root) [role=\"button\"] {\n cursor: pointer;\n}\n /*\nMake sure disabled buttons don't get the pointer cursor.\n*/\n :where(.aui-root) :disabled {\n cursor: default;\n}\n /*\n1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)\n2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\n This can trigger a poorly considered lint error in some tools but is included by design.\n*/\n :where(.aui-root) img,\n:where(.aui-root) svg,\n:where(.aui-root) video,\n:where(.aui-root) canvas,\n:where(.aui-root) audio,\n:where(.aui-root) iframe,\n:where(.aui-root) embed,\n:where(.aui-root) object {\n display: block; /* 1 */\n vertical-align: middle; /* 2 */\n}\n /*\nConstrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\n*/\n :where(.aui-root) img,\n:where(.aui-root) video {\n max-width: 100%;\n height: auto;\n}\n /* Make elements with the HTML hidden attribute stay hidden by default */\n :where(.aui-root) [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none;\n}\n\n@keyframes aui-enter {\n from {\n opacity: var(--aui-enter-opacity, 1);\n transform: translate3d(\n var(--aui-enter-translate-x, 0),\n var(--aui-enter-translate-y, 0),\n 0\n )\n scale3d(\n var(--aui-enter-scale, 1),\n var(--aui-enter-scale, 1),\n var(--aui-enter-scale, 1)\n )\n rotate(var(--aui-enter-rotate, 0));\n }\n}\n\n@keyframes aui-exit {\n to {\n opacity: var(--aui-exit-opacity, 1);\n transform: translate3d(\n var(--aui-exit-translate-x, 0),\n var(--aui-exit-translate-y, 0),\n 0\n )\n scale3d(\n var(--aui-exit-scale, 1),\n var(--aui-exit-scale, 1),\n var(--aui-exit-scale, 1)\n )\n rotate(var(--aui-exit-rotate, 0));\n }\n}\n",".aui-root {\n\n color: hsl(var(--aui-foreground))\n}\n\n.aui-root * {\n\n border-color: hsl(var(--aui-border))\n}\n\n/* shadcn-ui/button */\n.aui-button {\n\n display: inline-flex;\n\n align-items: center;\n\n justify-content: center;\n\n white-space: nowrap;\n\n border-radius: calc(var(--aui-radius) - 2px);\n\n font-size: 0.875rem;\n\n line-height: 1.25rem;\n\n font-weight: 500;\n\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n\n transition-duration: 150ms\n}\n.aui-button:focus-visible {\n\n outline: 2px solid transparent;\n\n outline-offset: 2px;\n\n --aui-ring-offset-shadow: var(--aui-ring-inset) 0 0 0 var(--aui-ring-offset-width) var(--aui-ring-offset-color);\n\n --aui-ring-shadow: var(--aui-ring-inset) 0 0 0 calc(1px + var(--aui-ring-offset-width)) var(--aui-ring-color);\n\n box-shadow: var(--aui-ring-offset-shadow), var(--aui-ring-shadow), var(--aui-shadow, 0 0 #0000);\n\n --aui-ring-color: hsl(var(--aui-ring))\n}\n.aui-button:disabled {\n\n pointer-events: none;\n\n opacity: 0.5\n}\n\n.aui-button-primary {\n\n background-color: hsl(var(--aui-primary));\n\n color: hsl(var(--aui-primary-foreground));\n\n --aui-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n\n --aui-shadow-colored: 0 1px 3px 0 var(--aui-shadow-color), 0 1px 2px -1px var(--aui-shadow-color);\n\n box-shadow: var(--aui-ring-offset-shadow, 0 0 #0000), var(--aui-ring-shadow, 0 0 #0000), var(--aui-shadow)\n}\n\n.aui-button-primary:hover {\n\n background-color: hsl(var(--aui-primary) / 0.9)\n}\n\n.aui-button-outline {\n\n border-width: 1px;\n\n border-color: hsl(var(--aui-input));\n\n background-color: hsl(var(--aui-background));\n\n --aui-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n\n --aui-shadow-colored: 0 1px 2px 0 var(--aui-shadow-color);\n\n box-shadow: var(--aui-ring-offset-shadow, 0 0 #0000), var(--aui-ring-shadow, 0 0 #0000), var(--aui-shadow)\n}\n\n.aui-button-outline:hover {\n\n background-color: hsl(var(--aui-accent));\n\n color: hsl(var(--aui-accent-foreground))\n}\n\n.aui-button-ghost:hover {\n\n background-color: hsl(var(--aui-accent));\n\n color: hsl(var(--aui-accent-foreground))\n}\n\n.aui-button-medium {\n\n height: 2.25rem;\n\n padding-left: 1rem;\n\n padding-right: 1rem;\n\n padding-top: 0.5rem;\n\n padding-bottom: 0.5rem\n}\n\n/** tooltip icon button */\n.aui-button-icon {\n\n width: 1.5rem;\n\n height: 1.5rem;\n\n padding: 0.25rem\n}\n\n.aui-sr-only {\n\n position: absolute;\n\n width: 1px;\n\n height: 1px;\n\n padding: 0;\n\n margin: -1px;\n\n overflow: hidden;\n\n clip: rect(0, 0, 0, 0);\n\n white-space: nowrap;\n\n border-width: 0\n}\n\n/* shadcn-ui/avatar */\n\n.aui-avatar-root {\n\n position: relative;\n\n display: flex;\n\n height: 2.5rem;\n\n width: 2.5rem;\n\n flex-shrink: 0;\n\n overflow: hidden;\n\n border-radius: 9999px\n}\n\n.aui-avatar-image {\n\n aspect-ratio: 1 / 1;\n\n height: 100%;\n\n width: 100%;\n\n -o-object-fit: cover;\n\n object-fit: cover\n}\n\n.aui-avatar-fallback {\n\n display: flex;\n\n height: 100%;\n\n width: 100%;\n\n align-items: center;\n\n justify-content: center;\n\n border-radius: 9999px;\n\n background-color: hsl(var(--aui-muted))\n}\n\n/* shadcn-ui/tooltip */\n\n.aui-tooltip-content {\n\n z-index: 50;\n\n overflow: hidden;\n\n border-radius: calc(var(--aui-radius) - 2px);\n\n border-width: 1px;\n\n background-color: hsl(var(--aui-popover));\n\n padding-left: 0.75rem;\n\n padding-right: 0.75rem;\n\n padding-top: 0.375rem;\n\n padding-bottom: 0.375rem;\n\n font-size: 0.875rem;\n\n line-height: 1.25rem;\n\n color: hsl(var(--aui-popover-foreground));\n\n --aui-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n\n --aui-shadow-colored: 0 4px 6px -1px var(--aui-shadow-color), 0 2px 4px -2px var(--aui-shadow-color);\n\n box-shadow: var(--aui-ring-offset-shadow, 0 0 #0000), var(--aui-ring-shadow, 0 0 #0000), var(--aui-shadow);\n\n animation-name: aui-enter;\n\n animation-duration: 150ms;\n\n --aui-enter-opacity: initial;\n\n --aui-enter-scale: initial;\n\n --aui-enter-rotate: initial;\n\n --aui-enter-translate-x: initial;\n\n --aui-enter-translate-y: initial;\n\n --aui-enter-opacity: 0;\n\n --aui-enter-scale: .95\n}\n\n.aui-tooltip-content[data-state=\"closed\"] {\n\n animation-name: aui-exit;\n\n animation-duration: 150ms;\n\n --aui-exit-opacity: initial;\n\n --aui-exit-scale: initial;\n\n --aui-exit-rotate: initial;\n\n --aui-exit-translate-x: initial;\n\n --aui-exit-translate-y: initial;\n\n --aui-exit-opacity: 0;\n\n --aui-exit-scale: .95\n}\n\n.aui-tooltip-content[data-side=\"bottom\"] {\n\n --aui-enter-translate-y: -0.5rem\n}\n\n.aui-tooltip-content[data-side=\"left\"] {\n\n --aui-enter-translate-x: 0.5rem\n}\n\n.aui-tooltip-content[data-side=\"right\"] {\n\n --aui-enter-translate-x: -0.5rem\n}\n\n.aui-tooltip-content[data-side=\"top\"] {\n\n --aui-enter-translate-y: 0.5rem\n}\n\n/* shadcn-ui/dialog */\n\n.aui-dialog-overlay {\n\n position: fixed;\n\n inset: 0px;\n\n z-index: 50;\n\n background-color: rgb(0 0 0 / 0.8)\n}\n\n.aui-dialog-overlay[data-state=\"open\"] {\n\n animation-name: aui-enter;\n\n animation-duration: 150ms;\n\n --aui-enter-opacity: initial;\n\n --aui-enter-scale: initial;\n\n --aui-enter-rotate: initial;\n\n --aui-enter-translate-x: initial;\n\n --aui-enter-translate-y: initial\n}\n\n.aui-dialog-overlay[data-state=\"closed\"] {\n\n animation-name: aui-exit;\n\n animation-duration: 150ms;\n\n --aui-exit-opacity: initial;\n\n --aui-exit-scale: initial;\n\n --aui-exit-rotate: initial;\n\n --aui-exit-translate-x: initial;\n\n --aui-exit-translate-y: initial;\n\n --aui-exit-opacity: 0\n}\n\n.aui-dialog-overlay[data-state=\"open\"] {\n\n --aui-enter-opacity: 0\n}\n\n.aui-dialog-content {\n\n position: fixed;\n\n left: 50%;\n\n top: 50%;\n\n z-index: 50\n}\n\n.aui-dialog-content[data-state=\"open\"] {\n\n animation-name: aui-enter;\n\n animation-duration: 150ms;\n\n --aui-enter-opacity: initial;\n\n --aui-enter-scale: initial;\n\n --aui-enter-rotate: initial;\n\n --aui-enter-translate-x: initial;\n\n --aui-enter-translate-y: initial\n}\n\n.aui-dialog-content[data-state=\"closed\"] {\n\n animation-name: aui-exit;\n\n animation-duration: 150ms;\n\n --aui-exit-opacity: initial;\n\n --aui-exit-scale: initial;\n\n --aui-exit-rotate: initial;\n\n --aui-exit-translate-x: initial;\n\n --aui-exit-translate-y: initial;\n\n --aui-exit-opacity: 0\n}\n\n.aui-dialog-content[data-state=\"open\"] {\n\n --aui-enter-opacity: 0\n}\n\n.aui-dialog-content[data-state=\"closed\"] {\n\n --aui-exit-scale: .95\n}\n\n.aui-dialog-content[data-state=\"open\"] {\n\n --aui-enter-scale: .95\n}\n\n.aui-dialog-content[data-state=\"closed\"] {\n\n --aui-exit-translate-x: -50%;\n\n --aui-exit-translate-y: -48%\n}\n\n.aui-dialog-content[data-state=\"open\"] {\n\n --aui-enter-translate-x: -50%;\n\n --aui-enter-translate-y: -48%\n}\n\n.aui-dialog-content {\n\n display: grid;\n\n --aui-translate-x: -50%;\n\n --aui-translate-y: -50%;\n\n transform: translate(var(--aui-translate-x), var(--aui-translate-y)) rotate(var(--aui-rotate)) skewX(var(--aui-skew-x)) skewY(var(--aui-skew-y)) scaleX(var(--aui-scale-x)) scaleY(var(--aui-scale-y));\n\n --aui-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n\n --aui-shadow-colored: 0 10px 15px -3px var(--aui-shadow-color), 0 4px 6px -4px var(--aui-shadow-color);\n\n box-shadow: var(--aui-ring-offset-shadow, 0 0 #0000), var(--aui-ring-shadow, 0 0 #0000), var(--aui-shadow);\n\n transition-duration: 200ms;\n\n animation-duration: 200ms\n /* @apply w-full bg-background max-w-lg gap-4 border p-6 sm:rounded-lg; */\n}\n","/* thread */\n.aui-thread-root {\n box-sizing: border-box;\n height: 100%;\n background-color: hsl(var(--aui-background))\n}\n.aui-thread-root>.aui-thread-viewport {\n background-color: inherit\n}\n\n.aui-thread-viewport {\n display: flex;\n height: 100%;\n flex-direction: column;\n align-items: center;\n overflow-y: scroll;\n scroll-behavior: smooth;\n background-color: hsl(var(--aui-background));\n padding-left: 1rem;\n padding-right: 1rem;\n padding-top: 2rem\n}\n\n.aui-thread-viewport-footer {\n position: sticky;\n bottom: 0px;\n margin-top: 0.75rem;\n display: flex;\n width: 100%;\n max-width: 42rem;\n flex-direction: column;\n align-items: center;\n justify-content: flex-end;\n border-top-left-radius: var(--aui-radius);\n border-top-right-radius: var(--aui-radius);\n background-color: inherit;\n padding-bottom: 1rem\n}\n\n.aui-thread-scroll-to-bottom {\n position: absolute;\n top: -2rem;\n border-radius: 9999px\n}\n\n.aui-thread-scroll-to-bottom:disabled {\n visibility: hidden\n}\n\n.aui-thread-followup-suggestions {\n display: flex;\n min-height: 2rem;\n align-items: center;\n justify-content: center;\n gap: 0.5rem\n}\n\n.aui-thread-followup-suggestion {\n border-radius: 9999px;\n border-width: 1px;\n background-color: hsl(var(--aui-background));\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n transition-timing-function: cubic-bezier(0.4, 0, 1, 1);\n animation-timing-function: cubic-bezier(0.4, 0, 1, 1)\n}\n\n.aui-thread-followup-suggestion:hover {\n background-color: hsl(var(--aui-muted) / 0.8)\n}\n\n/* thread welcome */\n\n.aui-thread-welcome-root {\n display: flex;\n width: 100%;\n max-width: 42rem;\n flex-grow: 1;\n flex-direction: column\n}\n\n.aui-thread-welcome-center {\n display: flex;\n width: 100%;\n flex-grow: 1;\n flex-direction: column;\n align-items: center;\n justify-content: center\n}\n\n.aui-thread-welcome-message {\n margin-top: 1rem;\n font-weight: 500\n}\n\n.aui-thread-welcome-suggestion-container {\n margin-top: 0.75rem;\n display: flex;\n width: 100%;\n align-items: stretch;\n justify-content: center;\n gap: 1rem\n}\n\n.aui-thread-welcome-suggestion {\n display: flex;\n max-width: 24rem;\n flex-grow: 1;\n flex-basis: 0px;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n border-radius: var(--aui-radius);\n border-width: 1px;\n padding: 0.75rem;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n transition-timing-function: cubic-bezier(0.4, 0, 1, 1);\n animation-timing-function: cubic-bezier(0.4, 0, 1, 1)\n}\n\n.aui-thread-welcome-suggestion:hover {\n background-color: hsl(var(--aui-muted) / 0.8)\n}\n\n.aui-thread-welcome-suggestion-text {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n text-overflow: ellipsis;\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 600\n}\n\n/* thread composer */\n\n.aui-composer-root {\n display: flex;\n width: 100%;\n flex-wrap: wrap;\n align-items: flex-end;\n border-radius: var(--aui-radius);\n border-width: 1px;\n background-color: inherit;\n padding-left: 0.625rem;\n padding-right: 0.625rem;\n --aui-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --aui-shadow-colored: 0 1px 2px 0 var(--aui-shadow-color);\n box-shadow: var(--aui-ring-offset-shadow, 0 0 #0000), var(--aui-ring-shadow, 0 0 #0000), var(--aui-shadow);\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n transition-timing-function: cubic-bezier(0.4, 0, 1, 1);\n animation-timing-function: cubic-bezier(0.4, 0, 1, 1)\n}\n\n.aui-composer-root:focus-within {\n border-color: hsl(var(--aui-ring) / 0.2)\n}\n\n.aui-composer-input {\n max-height: 10rem;\n flex-grow: 1;\n resize: none;\n border-style: none;\n background-color: transparent;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n padding-top: 1rem;\n padding-bottom: 1rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n outline: 2px solid transparent;\n outline-offset: 2px\n}\n\n.aui-composer-input::-moz-placeholder {\n color: hsl(var(--aui-muted-foreground))\n}\n\n.aui-composer-input::placeholder {\n color: hsl(var(--aui-muted-foreground))\n}\n\n.aui-composer-input:focus {\n --aui-ring-offset-shadow: var(--aui-ring-inset) 0 0 0 var(--aui-ring-offset-width) var(--aui-ring-offset-color);\n --aui-ring-shadow: var(--aui-ring-inset) 0 0 0 calc(0px + var(--aui-ring-offset-width)) var(--aui-ring-color);\n box-shadow: var(--aui-ring-offset-shadow), var(--aui-ring-shadow), var(--aui-shadow, 0 0 #0000)\n}\n\n.aui-composer-input:disabled {\n cursor: not-allowed\n}\n\n.aui-composer-send,\n.aui-composer-cancel,\n.aui-composer-attach {\n margin-top: 0.625rem;\n margin-bottom: 0.625rem;\n width: 2rem;\n height: 2rem;\n padding: 0.5rem;\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n transition-timing-function: cubic-bezier(0.4, 0, 1, 1);\n animation-timing-function: cubic-bezier(0.4, 0, 1, 1)\n}\n\n.aui-composer-attachments {\n display: flex;\n width: 100%;\n flex-direction: row;\n gap: 0.75rem;\n padding-left: 2.5rem;\n padding-right: 2.5rem\n}\n\n/* attachment */\n\n.aui-attachment-root {\n position: relative;\n margin-top: 0.75rem;\n display: flex;\n height: 3rem;\n width: 10rem;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n border-radius: var(--aui-radius);\n border-width: 1px;\n padding: 0.25rem\n}\n\n.aui-attachment-preview-trigger {\n cursor: pointer;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms\n}\n\n.aui-attachment-preview-trigger:hover {\n background-color: hsl(var(--aui-accent) / 0.5)\n}\n\n.aui-attachment-thumb {\n display: flex;\n width: 2.5rem;\n height: 2.5rem;\n align-items: center;\n justify-content: center;\n border-radius: 0.25rem;\n border-width: 1px;\n background-color: hsl(var(--aui-muted));\n font-size: 0.875rem;\n line-height: 1.25rem\n}\n\n.aui-attachment-text {\n flex-grow: 1;\n flex-basis: 0px\n}\n\n.aui-attachment-name {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n text-overflow: ellipsis;\n font-size: 0.75rem;\n line-height: 1rem;\n font-weight: 700;\n color: hsl(var(--aui-muted-foreground))\n}\n\n.aui-attachment-type {\n font-size: 0.75rem;\n line-height: 1rem;\n color: hsl(var(--aui-muted-foreground))\n}\n\n.aui-attachment-remove {\n position: absolute;\n right: -0.75rem;\n top: -0.75rem;\n width: 1.5rem;\n height: 1.5rem;\n color: hsl(var(--aui-muted-foreground))\n}\n\n.aui-attachment-remove>svg {\n width: 1rem;\n height: 1rem;\n border-radius: 9999px;\n background-color: hsl(var(--aui-background))\n}\n\n/* user message */\n\n.aui-user-message-root {\n display: grid;\n grid-auto-rows: auto;\n grid-template-columns: minmax(72px,1fr) auto;\n row-gap: 0.5rem\n}\n\n.aui-user-message-root>* {\n grid-column-start: 2\n}\n\n.aui-user-message-root {\n width: 100%;\n max-width: 42rem;\n padding-top: 1rem;\n padding-bottom: 1rem\n}\n\n:where(.aui-user-message-root) > .aui-user-action-bar-root {\n grid-column-start: 1;\n grid-row-start: 2;\n margin-right: 0.75rem;\n margin-top: 0.625rem\n}\n\n:where(.aui-user-message-root) > .aui-user-message-attachments {\n grid-column: 1 / -1;\n grid-column-start: 1;\n grid-row-start: 1;\n justify-content: flex-end\n}\n\n:where(.aui-user-message-root) > .aui-user-message-content {\n grid-column-start: 2;\n grid-row-start: 2\n}\n\n:where(.aui-user-message-root) > .aui-branch-picker-root {\n grid-column: 1 / -1;\n grid-column-start: 1;\n grid-row-start: 3;\n margin-right: -0.25rem;\n justify-content: flex-end\n}\n\n.aui-user-message-content {\n max-width: 36rem;\n overflow-wrap: break-word;\n border-radius: 1.5rem;\n background-color: hsl(var(--aui-muted));\n padding-left: 1.25rem;\n padding-right: 1.25rem;\n padding-top: 0.625rem;\n padding-bottom: 0.625rem;\n color: hsl(var(--aui-foreground))\n}\n\n.aui-user-message-attachments {\n display: flex;\n width: 100%;\n flex-direction: row;\n gap: 0.75rem\n}\n\n/* user action bar */\n\n.aui-user-action-bar-root {\n display: flex;\n flex-direction: column;\n align-items: flex-end\n}\n\n/* edit composer */\n\n.aui-edit-composer-root {\n margin-top: 1rem;\n margin-bottom: 1rem;\n display: flex;\n width: 100%;\n max-width: 42rem;\n flex-direction: column;\n gap: 0.5rem;\n border-radius: 0.75rem;\n background-color: hsl(var(--aui-muted))\n}\n\n.aui-edit-composer-input {\n display: flex;\n height: 2rem;\n width: 100%;\n resize: none;\n background-color: transparent;\n padding: 1rem;\n padding-bottom: 0px;\n color: hsl(var(--aui-foreground));\n outline: 2px solid transparent;\n outline-offset: 2px\n}\n\n.aui-edit-composer-footer {\n margin-left: 0.75rem;\n margin-right: 0.75rem;\n margin-bottom: 0.75rem;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n align-self: flex-end\n}\n\n/* assistant message */\n\n.aui-assistant-message-root {\n display: grid;\n grid-template-columns: auto auto 1fr;\n grid-template-rows: auto 1fr;\n position: relative;\n width: 100%;\n max-width: 42rem;\n padding-top: 1rem;\n padding-bottom: 1rem\n}\n\n:where(.aui-assistant-message-root) > .aui-avatar-root {\n grid-column-start: 1;\n grid-row: 1 / -1;\n grid-row-start: 1;\n margin-right: 1rem\n}\n\n:where(.aui-assistant-message-root) > .aui-branch-picker-root {\n grid-column-start: 2;\n grid-row-start: 2;\n margin-left: -0.5rem;\n margin-right: 0.5rem\n}\n\n:where(.aui-assistant-message-root) > .aui-assistant-action-bar-root {\n grid-column-start: 3;\n grid-row-start: 2;\n margin-left: -0.25rem\n}\n\n:where(.aui-assistant-message-root) > .aui-assistant-message-content {\n grid-column: span 2 / span 2;\n grid-column-start: 2;\n grid-row-start: 1;\n margin-top: 0.375rem;\n margin-bottom: 0.375rem\n}\n\n.aui-assistant-message-content {\n max-width: 36rem;\n overflow-wrap: break-word;\n line-height: 1.75rem;\n color: hsl(var(--aui-foreground))\n}\n\n/* assistant action bar */\n\n.aui-assistant-action-bar-root {\n display: flex;\n gap: 0.25rem;\n color: hsl(var(--aui-muted-foreground))\n}\n\n:where(.aui-assistant-action-bar-root)[data-floating] {\n position: absolute;\n border-radius: calc(var(--aui-radius) - 2px);\n border-width: 1px;\n background-color: hsl(var(--aui-background));\n padding: 0.25rem;\n --aui-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --aui-shadow-colored: 0 1px 2px 0 var(--aui-shadow-color);\n box-shadow: var(--aui-ring-offset-shadow, 0 0 #0000), var(--aui-ring-shadow, 0 0 #0000), var(--aui-shadow)\n}\n\n:where(.aui-assistant-action-bar-feedback-positive)[data-submitted] {\n --aui-text-opacity: 1;\n color: rgb(22 163 74 / var(--aui-text-opacity, 1))\n}\n\n:where(.aui-assistant-action-bar-feedback-positive)[data-submitted]:hover {\n --aui-text-opacity: 1;\n color: rgb(21 128 61 / var(--aui-text-opacity, 1))\n}\n\n@media (prefers-color-scheme: dark) {\n :where(.aui-assistant-action-bar-feedback-positive)[data-submitted] {\n --aui-text-opacity: 1;\n color: rgb(34 197 94 / var(--aui-text-opacity, 1))\n }\n :where(.aui-assistant-action-bar-feedback-positive)[data-submitted]:hover {\n --aui-text-opacity: 1;\n color: rgb(74 222 128 / var(--aui-text-opacity, 1))\n }\n}\n\n:where(.aui-assistant-action-bar-feedback-negative)[data-submitted] {\n --aui-text-opacity: 1;\n color: rgb(220 38 38 / var(--aui-text-opacity, 1))\n}\n\n:where(.aui-assistant-action-bar-feedback-negative)[data-submitted]:hover {\n --aui-text-opacity: 1;\n color: rgb(185 28 28 / var(--aui-text-opacity, 1))\n}\n\n@media (prefers-color-scheme: dark) {\n :where(.aui-assistant-action-bar-feedback-negative)[data-submitted] {\n --aui-text-opacity: 1;\n color: rgb(239 68 68 / var(--aui-text-opacity, 1))\n }\n :where(.aui-assistant-action-bar-feedback-negative)[data-submitted]:hover {\n --aui-text-opacity: 1;\n color: rgb(248 113 113 / var(--aui-text-opacity, 1))\n }\n}\n\n/* branch picker */\n\n.aui-branch-picker-root {\n display: inline-flex;\n align-items: center;\n font-size: 0.75rem;\n line-height: 1rem;\n color: hsl(var(--aui-muted-foreground))\n}\n\n.aui-branch-picker-state {\n font-weight: 500\n}\n\n/* text */\n\n.aui-text {\n white-space: pre-line\n}\n\n@keyframes aui-pulse {\n 50% {\n opacity: .5\n }\n}\n\n.aui-text-running::after {\n animation: aui-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n font-family: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --aui-content: '\\25CF';\n content: var(--aui-content)\n}\n\n.aui-text-running:where([dir=\"ltr\"], [dir=\"ltr\"] *)::after {\n margin-left: 0.25rem\n}\n\n.aui-text-running:where([dir=\"rtl\"], [dir=\"rtl\"] *)::after {\n margin-right: 0.25rem\n}\n\n/* thread-list */\n\n.aui-thread-list-root {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: 0.375rem\n}\n\n.aui-thread-list-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n border-radius: var(--aui-radius);\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms\n}\n\n.aui-thread-list-item:hover {\n background-color: hsl(var(--aui-muted))\n}\n\n.aui-thread-list-item:focus-visible {\n background-color: hsl(var(--aui-muted));\n outline: 2px solid transparent;\n outline-offset: 2px;\n --aui-ring-offset-shadow: var(--aui-ring-inset) 0 0 0 var(--aui-ring-offset-width) var(--aui-ring-offset-color);\n --aui-ring-shadow: var(--aui-ring-inset) 0 0 0 calc(2px + var(--aui-ring-offset-width)) var(--aui-ring-color);\n box-shadow: var(--aui-ring-offset-shadow), var(--aui-ring-shadow), var(--aui-shadow, 0 0 #0000);\n --aui-ring-color: hsl(var(--aui-ring))\n}\n\n.aui-thread-list-item[data-active] {\n background-color: hsl(var(--aui-muted))\n}\n\n.aui-thread-list-new {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: 0.25rem;\n border-radius: var(--aui-radius);\n padding-left: 0.625rem;\n padding-right: 0.625rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n text-align: start\n}\n\n.aui-thread-list-new:hover {\n background-color: hsl(var(--aui-muted))\n}\n\n.aui-thread-list-new[data-active] {\n background-color: hsl(var(--aui-muted))\n}\n\n.aui-thread-list-new > .lucide-plus {\n width: 1.25rem;\n height: 1.25rem\n}\n\n.aui-thread-list-item-trigger {\n flex-grow: 1;\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n text-align: start\n}\n\n.aui-thread-list-item-title {\n font-size: 0.875rem;\n line-height: 1.25rem\n}\n\n.aui-thread-list-item-archive {\n margin-left: auto;\n margin-right: 0.75rem;\n width: 1rem;\n height: 1rem;\n padding: 0px;\n color: hsl(var(--aui-foreground))\n}\n\n.aui-thread-list-item-archive:hover {\n color: hsl(var(--aui-primary))\n}\n",":root {\n --aui-background: 0 0% 100%;\n --aui-foreground: 240 10% 3.9%;\n\n --aui-card: 0 0% 100%;\n --aui-card-foreground: 240 10% 3.9%;\n\n --aui-popover: 0 0% 100%;\n --aui-popover-foreground: 240 10% 3.9%;\n\n --aui-primary: 240 5.9% 10%;\n --aui-primary-foreground: 0 0% 98%;\n\n --aui-secondary: 240 4.8% 95.9%;\n --aui-secondary-foreground: 240 5.9% 10%;\n\n --aui-muted: 240 4.8% 95.9%;\n --aui-muted-foreground: 240 3.8% 46.1%;\n\n --aui-accent: 240 4.8% 95.9%;\n --aui-accent-foreground: 240 5.9% 10%;\n\n --aui-destructive: 0 84.2% 60.2%;\n --aui-destructive-foreground: 0 0% 98%;\n\n --aui-border: 240 5.9% 90%;\n --aui-input: 240 5.9% 90%;\n --aui-ring: 240 10% 3.9%;\n\n --aui-radius: 0.5rem;\n}\n\n.dark {\n --aui-background: 0 0% 7%;\n --aui-foreground: 0 0% 98%;\n\n --aui-card: 240 10% 3.9%;\n --aui-card-foreground: 0 0% 98%;\n\n --aui-popover: 240 10% 3.9%;\n --aui-popover-foreground: 0 0% 98%;\n\n --aui-primary: 0 0% 98%;\n --aui-primary-foreground: 240 5.9% 10%;\n\n --aui-secondary: 240 3.7% 15.9%;\n --aui-secondary-foreground: 0 0% 98%;\n\n --aui-muted: 240 3.7% 15.9%;\n --aui-muted-foreground: 240 5% 64.9%;\n\n --aui-accent: 240 3.7% 15.9%;\n --aui-accent-foreground: 0 0% 98%;\n\n --aui-destructive: 0 62.8% 30.6%;\n --aui-destructive-foreground: 0 0% 98%;\n\n --aui-border: 240 3.7% 15.9%;\n --aui-input: 240 3.7% 15.9%;\n --aui-ring: 240 4.9% 83.9%;\n}\n"],"mappings":";AAAA,OAAO,CAAC,UAAU;AAAG,OAAO,CAApB,UAA+B;AAAU,OAAO,CAAhD,UAA2D;AACjE,0BAAwB;AACxB,0BAAwB;AACxB,qBAAmB;AACnB,qBAAmB;AACnB,gBAAc;AACd,gBAAc;AACd,gBAAc;AACd,iBAAe;AACf,iBAAe;AACf;AACA,2BAAyB;AACzB,2BAAyB;AACzB,oBAAkB,IAAI,GAAG,IAAI,IAAI,EAAE;AACnC,4BAA0B,EAAE,EAAE;AAC9B,qBAAmB,EAAE,EAAE;AACvB,gBAAc,EAAE,EAAE;AAClB,wBAAsB,EAAE,EAAE;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF;AACE,OAAO,CAzCD,UAyCY;AAClB,0BAAwB;AACxB,0BAAwB;AACxB,qBAAmB;AACnB,qBAAmB;AACnB,gBAAc;AACd,gBAAc;AACd,gBAAc;AACd,iBAAe;AACf,iBAAe;AACf;AACA,2BAAyB;AACzB,2BAAyB;AACzB,oBAAkB,IAAI,GAAG,IAAI,IAAI,EAAE;AACnC,4BAA0B,EAAE,EAAE;AAC9B,qBAAmB,EAAE,EAAE;AACvB,gBAAc,EAAE,EAAE;AAClB,wBAAsB,EAAE,EAAE;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF;AAKE,OAAO,CAtFD,UAsFY;AACpB,OAAO,CAvFC,UAuFU;AAClB,OAAO,CAxFC,UAwFU;AAChB,cAAY;AACZ,gBAAc;AACd,gBAAc;AACd,gBAAc;AAChB;AAIE,OAAO,CAjGD,UAiGY;AACpB,OAAO,CAlGC,UAkGU;AAChB,iBAAe;AACjB;AAUE,OAAO,CA9GD,UA8GY;AACpB,OAAO,CA/GC,UA+GU;AAChB,eAAa;AACb,4BAA0B;AAC1B,iBAAe;AACf,eAAa;AACV,YAAU;AACb;AAAA,IAAa,aAAa;AAAA,IAAE,SAAS;AAAA,IAAE,UAAU;AAAA,IAAE,mBAAmB;AAAA,IAAE,gBAAgB;AAAA,IAAE,iBAAiB;AAAA,IAAE;AAC7G,yBAAuB;AACvB,2BAAyB;AACzB,+BAA6B;AAC/B;AAKE,OAAO,CA9HD,UA8HY;AAClB,UAAQ;AACR,eAAa;AACf;AAME,OAAO,CAvID,UAuIY;AAClB,UAAQ;AACR,SAAO;AACP,oBAAkB;AACpB;AAIE,OAAO,CA/ID,UA+IY,IAAI,OAAO,CAAC;AAC9B,2BAAyB,UAAU;AAC3B,mBAAiB,UAAU;AACrC;AAIE,OAAO,CAtJD,UAsJY;AACpB,OAAO,CAvJC,UAuJU;AAClB,OAAO,CAxJC,UAwJU;AAClB,OAAO,CAzJC,UAyJU;AAClB,OAAO,CA1JC,UA0JU;AAClB,OAAO,CA3JC,UA2JU;AAChB,aAAW;AACX,eAAa;AACf;AAIE,OAAO,CAlKD,UAkKY;AAClB,SAAO;AACP,mBAAiB;AACnB;AAIE,OAAO,CAzKD,UAyKY;AACpB,OAAO,CA1KC,UA0KU;AAChB,eAAa;AACf;AAOE,OAAO,CAnLD,UAmLY;AACpB,OAAO,CApLC,UAoLU;AAClB,OAAO,CArLC,UAqLU;AAClB,OAAO,CAtLC,UAsLU;AAChB;AAAA,IAAa,YAAY;AAAA,IAAE,cAAc;AAAA,IAAE,KAAK;AAAA,IAAE,MAAM;AAAA,IAAE,QAAQ;AAAA,IAAE,iBAAiB;AAAA,IAAE,aAAa;AAAA,IAAE;AACtG,yBAAuB;AACvB,2BAAyB;AACzB,aAAW;AACb;AAIE,OAAO,CA/LD,UA+LY;AAClB,aAAW;AACb;AAIE,OAAO,CArMD,UAqMY;AACpB,OAAO,CAtMC,UAsMU;AAChB,aAAW;AACX,eAAa;AACb,YAAU;AACV,kBAAgB;AAClB;AACE,OAAO,CA5MD,UA4MY;AAClB,UAAQ;AACV;AACE,OAAO,CA/MD,UA+MY;AAClB,OAAK;AACP;AAME,OAAO,CAvND,UAuNY;AAClB,eAAa;AACb,gBAAc;AACd,mBAAiB;AACnB;AAME,OAAO,CAjOD,UAiOY;AACpB,OAAO,CAlOC,UAkOU;AAClB,OAAO,CAnOC,UAmOU;AAClB,OAAO,CApOC,UAoOU;AAClB,OAAO,CArOC,UAqOU;AAChB,eAAa;AACb,yBAAuB;AACvB,2BAAyB;AACzB,aAAW;AACX,eAAa;AACb,eAAa;AACb,kBAAgB;AAChB,SAAO;AACP,UAAQ;AACR,WAAS;AACX;AAIE,OAAO,CApPD,UAoPY;AACpB,OAAO,CArPC,UAqPU;AAChB,kBAAgB;AAClB;AAKE,OAAO,CA5PD,UA4PY;AACpB,OAAO,CA7PC,UA6PU,KAAK,OAAO,CAAC;AAC/B,OAAO,CA9PC,UA8PU,KAAK,OAAO,CAAC;AAC/B,OAAO,CA/PC,UA+PU,KAAK,OAAO,CAAC;AAC7B,sBAAoB;AACpB,oBAAkB;AAClB,oBAAkB;AACpB;AAIE,OAAO,CAvQD,UAuQY;AAClB,WAAS;AACX;AAIE,OAAO,CA7QD,UA6QY;AAClB,cAAY;AACd;AAIE,OAAO,CAnRD,UAmRY;AAClB,kBAAgB;AAClB;AAIE,OAAO,CAzRD,UAyRY;AACpB,OAAO,CA1RC,UA0RU;AAChB,UAAQ;AACV;AAKE,OAAO,CAjSD,UAiSY,CAAC;AACnB,sBAAoB;AACpB,kBAAgB;AAClB;AAIE,OAAO,CAxSD,UAwSY;AAClB,sBAAoB;AACtB;AAKE,OAAO,CA/SD,UA+SY;AAClB,sBAAoB;AACpB,QAAM;AACR;AAIE,OAAO,CAtTD,UAsTY;AAClB,WAAS;AACX;AAIE,OAAO,CA5TD,UA4TY;AACpB,OAAO,CA7TC,UA6TU;AAClB,OAAO,CA9TC,UA8TU;AAClB,OAAO,CA/TC,UA+TU;AAClB,OAAO,CAhUC,UAgUU;AAClB,OAAO,CAjUC,UAiUU;AAClB,OAAO,CAlUC,UAkUU;AAClB,OAAO,CAnUC,UAmUU;AAClB,OAAO,CApUC,UAoUU;AAClB,OAAO,CArUC,UAqUU;AAClB,OAAO,CAtUC,UAsUU;AAClB,OAAO,CAvUC,UAuUU;AAClB,OAAO,CAxUC,UAwUU;AAChB,UAAQ;AACV;AACE,OAAO,CA3UD,UA2UY;AAClB,UAAQ;AACR,WAAS;AACX;AACE,OAAO,CA/UD,UA+UY;AAClB,WAAS;AACX;AACE,OAAO,CAlVD,UAkVY;AACpB,OAAO,CAnVC,UAmVU;AAClB,OAAO,CApVC,UAoVU;AAChB,cAAY;AACZ,UAAQ;AACR,WAAS;AACX;AAIE,OAAO,CA5VD,UA4VY;AAClB,WAAS;AACX;AAIE,OAAO,CAlWD,UAkWY;AAClB,UAAQ;AACV;AAKE,OAAO,CAzWD,UAyWY,KAAK;AAAoB,OAAO,CAzW5C,UAyWuD,QAAQ;AACrE,WAAS;AACT,SAAO;AACT;AACE,OAAO,CA7WD,UA6WY,KAAK;AACzB,OAAO,CA9WC,UA8WU,QAAQ;AACxB,WAAS;AACT,SAAO;AACT;AAIE,OAAO,CArXD,UAqXY;AACpB,OAAO,CAtXC,UAsXU,CAAC;AACjB,UAAQ;AACV;AAIE,OAAO,CA5XD,UA4XY;AAClB,UAAQ;AACV;AAME,OAAO,CApYD,UAoYY;AACpB,OAAO,CArYC,UAqYU;AAClB,OAAO,CAtYC,UAsYU;AAClB,OAAO,CAvYC,UAuYU;AAClB,OAAO,CAxYC,UAwYU;AAClB,OAAO,CAzYC,UAyYU;AAClB,OAAO,CA1YC,UA0YU;AAClB,OAAO,CA3YC,UA2YU;AAChB,WAAS;AACT,kBAAgB;AAClB;AAIE,OAAO,CAlZD,UAkZY;AACpB,OAAO,CAnZC,UAmZU;AAChB,aAAW;AACX,UAAQ;AACV;AAEE,OAAO,CAxZD,UAwZY,CAAC,OAAO,OAAO,KAAK,CAAC;AACvC,WAAS;AACX;AAEA,WAAW;AACT;AACE,aAAS,IAAI,mBAAmB,EAAE;AAClC,eAAW,YACP,IAAI,uBAAuB,EAAE,EAAE,EAC/B,IAAI,uBAAuB,EAAE,EAAE,EAC/B,GAEF,QACE,IAAI,iBAAiB,EAAE,EAAE,EACzB,IAAI,iBAAiB,EAAE,EAAE,EACzB,IAAI,iBAAiB,EAAE,IAEzB,OAAO,IAAI,kBAAkB,EAAE;AACnC;AACF;AAEA,WAAW;AACT;AACE,aAAS,IAAI,kBAAkB,EAAE;AACjC,eAAW,YACP,IAAI,sBAAsB,EAAE,EAAE,EAC9B,IAAI,sBAAsB,EAAE,EAAE,EAC9B,GAEF,QACE,IAAI,gBAAgB,EAAE,EAAE,EACxB,IAAI,gBAAgB,EAAE,EAAE,EACxB,IAAI,gBAAgB,EAAE,IAExB,OAAO,IAAI,iBAAiB,EAAE;AAClC;AACF;;;AC5bA,CAAC;AAEC,SAAO,IAAI,IAAI;AACjB;AAEA,CALC,SAKS;AAER,gBAAc,IAAI,IAAI;AACxB;AAGA,CAAC;AAEC,WAAS;AAET,eAAa;AAEb,mBAAiB;AAEjB,eAAa;AAEb,iBAAe,KAAK,IAAI,cAAc,EAAE;AAExC,aAAW;AAEX,eAAa;AAEb,eAAa;AAEb;AAAA,IAAqB,KAAK;AAAA,IAAE,gBAAgB;AAAA,IAAE,YAAY;AAAA,IAAE,qBAAqB;AAAA,IAAE,IAAI;AAAA,IAAE;AAEzF,8BAA4B,aAAa,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;AAEtD,uBAAqB;AACvB;AACA,CAxBC,UAwBU;AAET,WAAS,IAAI,MAAM;AAEnB,kBAAgB;AAEhB,4BAA0B,IAAI,kBAAkB,EAAE,EAAE,EAAE,IAAI,yBAAyB,IAAI;AAEvF,qBAAmB,IAAI,kBAAkB,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE,IAAI,0BAA0B,IAAI;AAE5F;AAAA,IAAY,IAAI,yBAAyB;AAAA,IAAE,IAAI,kBAAkB;AAAA,IAAE,IAAI,YAAY,EAAE,EAAE,EAAE;AAEzF,oBAAkB,IAAI,IAAI;AAC5B;AACA,CAtCC,UAsCU;AAET,kBAAgB;AAEhB,WAAS;AACX;AAEA,CAAC;AAEC,oBAAkB,IAAI,IAAI;AAE1B,SAAO,IAAI,IAAI;AAEf,gBAAc,EAAE,IAAI,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,IAAI,EAAE,EAAE,EAAE,EAAE;AAEvE,wBAAsB,EAAE,IAAI,IAAI,EAAE,IAAI,mBAAmB,EAAE,EAAE,IAAI,IAAI,KAAK,IAAI;AAE9E;AAAA,IAAY,IAAI,wBAAwB,EAAE,EAAE,EAAE,MAAM;AAAA,IAAE,IAAI,iBAAiB,EAAE,EAAE,EAAE,MAAM;AAAA,IAAE,IAAI;AAC/F;AAEA,CAbC,kBAakB;AAEjB,oBAAkB,IAAI,IAAI,eAAe,EAAE;AAC7C;AAEA,CAAC;AAEC,gBAAc;AAEd,gBAAc,IAAI,IAAI;AAEtB,oBAAkB,IAAI,IAAI;AAE1B,gBAAc,EAAE,IAAI,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;AAEtC,wBAAsB,EAAE,IAAI,IAAI,EAAE,IAAI;AAEtC;AAAA,IAAY,IAAI,wBAAwB,EAAE,EAAE,EAAE,MAAM;AAAA,IAAE,IAAI,iBAAiB,EAAE,EAAE,EAAE,MAAM;AAAA,IAAE,IAAI;AAC/F;AAEA,CAfC,kBAekB;AAEjB,oBAAkB,IAAI,IAAI;AAE1B,SAAO,IAAI,IAAI;AACjB;AAEA,CAAC,gBAAgB;AAEf,oBAAkB,IAAI,IAAI;AAE1B,SAAO,IAAI,IAAI;AACjB;AAEA,CAAC;AAEC,UAAQ;AAER,gBAAc;AAEd,iBAAe;AAEf,eAAa;AAEb,kBAAgB;AAClB;AAGA,CAAC;AAEC,SAAO;AAEP,UAAQ;AAER,WAAS;AACX;AAEA,CAAC;AAEC,YAAU;AAEV,SAAO;AAEP,UAAQ;AAER,WAAS;AAET,UAAQ;AAER,YAAU;AAEV,QAAM,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAEpB,eAAa;AAEb,gBAAc;AAChB;AAIA,CAAC;AAEC,YAAU;AAEV,WAAS;AAET,UAAQ;AAER,SAAO;AAEP,eAAa;AAEb,YAAU;AAEV,iBAAe;AACjB;AAEA,CAAC;AAEC,gBAAc,EAAE,EAAE;AAElB,UAAQ;AAER,SAAO;AAEP,iBAAe;AAEZ,cAAY;AACjB;AAEA,CAAC;AAEC,WAAS;AAET,UAAQ;AAER,SAAO;AAEP,eAAa;AAEb,mBAAiB;AAEjB,iBAAe;AAEf,oBAAkB,IAAI,IAAI;AAC5B;AAIA,CAAC;AAEC,WAAS;AAET,YAAU;AAEV,iBAAe,KAAK,IAAI,cAAc,EAAE;AAExC,gBAAc;AAEd,oBAAkB,IAAI,IAAI;AAE1B,gBAAc;AAEd,iBAAe;AAEf,eAAa;AAEb,kBAAgB;AAEhB,aAAW;AAEX,eAAa;AAEb,SAAO,IAAI,IAAI;AAEf,gBAAc,EAAE,IAAI,IAAI,KAAK,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,IAAI,EAAE,EAAE,EAAE,EAAE;AAE1E,wBAAsB,EAAE,IAAI,IAAI,KAAK,IAAI,mBAAmB,EAAE,EAAE,IAAI,IAAI,KAAK,IAAI;AAEjF;AAAA,IAAY,IAAI,wBAAwB,EAAE,EAAE,EAAE,MAAM;AAAA,IAAE,IAAI,iBAAiB,EAAE,EAAE,EAAE,MAAM;AAAA,IAAE,IAAI;AAE7F,kBAAgB;AAEhB,sBAAoB;AAEpB,uBAAqB;AAErB,qBAAmB;AAEnB,sBAAoB;AAEpB,2BAAyB;AAEzB,2BAAyB;AAEzB,uBAAqB;AAErB,qBAAmB;AACrB;AAEA,CAnDC,mBAmDmB,CAAC;AAEnB,kBAAgB;AAEhB,sBAAoB;AAEpB,sBAAoB;AAEpB,oBAAkB;AAElB,qBAAmB;AAEnB,0BAAwB;AAExB,0BAAwB;AAExB,sBAAoB;AAEpB,oBAAkB;AACpB;AAEA,CAxEC,mBAwEmB,CAAC;AAEnB,2BAAyB;AAC3B;AAEA,CA7EC,mBA6EmB,CAAC;AAEnB,2BAAyB;AAC3B;AAEA,CAlFC,mBAkFmB,CAAC;AAEnB,2BAAyB;AAC3B;AAEA,CAvFC,mBAuFmB,CAAC;AAEnB,2BAAyB;AAC3B;AAIA,CAAC;AAEC,YAAU;AAEV,SAAO;AAEP,WAAS;AAET,oBAAkB,IAAI,EAAE,EAAE,EAAE,EAAE;AAChC;AAEA,CAXC,kBAWkB,CAAC;AAElB,kBAAgB;AAEhB,sBAAoB;AAEpB,uBAAqB;AAErB,qBAAmB;AAEnB,sBAAoB;AAEpB,2BAAyB;AAEzB,2BAAyB;AAC3B;AAEA,CA5BC,kBA4BkB,CAAC;AAElB,kBAAgB;AAEhB,sBAAoB;AAEpB,sBAAoB;AAEpB,oBAAkB;AAElB,qBAAmB;AAEnB,0BAAwB;AAExB,0BAAwB;AAExB,sBAAoB;AACtB;AAEA,CA/CC,kBA+CkB,CAAC;AAElB,uBAAqB;AACvB;AAEA,CAAC;AAEC,YAAU;AAEV,QAAM;AAEN,OAAK;AAEL,WAAS;AACX;AAEA,CAXC,kBAWkB,CAAC;AAElB,kBAAgB;AAEhB,sBAAoB;AAEpB,uBAAqB;AAErB,qBAAmB;AAEnB,sBAAoB;AAEpB,2BAAyB;AAEzB,2BAAyB;AAC3B;AAEA,CA5BC,kBA4BkB,CAAC;AAElB,kBAAgB;AAEhB,sBAAoB;AAEpB,sBAAoB;AAEpB,oBAAkB;AAElB,qBAAmB;AAEnB,0BAAwB;AAExB,0BAAwB;AAExB,sBAAoB;AACtB;AAEA,CA/CC,kBA+CkB,CAAC;AAElB,uBAAqB;AACvB;AAEA,CApDC,kBAoDkB,CAAC;AAElB,oBAAkB;AACpB;AAEA,CAzDC,kBAyDkB,CAAC;AAElB,qBAAmB;AACrB;AAEA,CA9DC,kBA8DkB,CAAC;AAElB,0BAAwB;AAExB,0BAAwB;AAC1B;AAEA,CArEC,kBAqEkB,CAAC;AAElB,2BAAyB;AAEzB,2BAAyB;AAC3B;AAEA,CA5EC;AA8EC,WAAS;AAET,qBAAmB;AAEnB,qBAAmB;AAEnB,aAAW,UAAU,IAAI,kBAAkB,EAAE,IAAI,oBAAoB,OAAO,IAAI,eAAe,MAAM,IAAI,eAAe,MAAM,IAAI,eAAe,OAAO,IAAI,gBAAgB,OAAO,IAAI;AAEvL,gBAAc,EAAE,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,IAAI,EAAE,EAAE,EAAE,EAAE;AAE5E,wBAAsB,EAAE,KAAK,KAAK,KAAK,IAAI,mBAAmB,EAAE,EAAE,IAAI,IAAI,KAAK,IAAI;AAEnF;AAAA,IAAY,IAAI,wBAAwB,EAAE,EAAE,EAAE,MAAM;AAAA,IAAE,IAAI,iBAAiB,EAAE,EAAE,EAAE,MAAM;AAAA,IAAE,IAAI;AAE7F,uBAAqB;AAErB,sBAAoB;AAEtB;;;ACvbA,CAAC;AACG,cAAY;AACZ,UAAQ;AACR,oBAAkB,IAAI,IAAI;AAC9B;AACA,CALC,gBAKe,EAAC,CAAC;AACd,oBAAkB;AACtB;AAEA,CAJkB;AAKd,WAAS;AACT,UAAQ;AACR,kBAAgB;AAChB,eAAa;AACb,cAAY;AACZ,mBAAiB;AACjB,oBAAkB,IAAI,IAAI;AAC1B,gBAAc;AACd,iBAAe;AACf,eAAa;AACjB;AAEA,CAAC;AACG,YAAU;AACV,UAAQ;AACR,cAAY;AACZ,WAAS;AACT,SAAO;AACP,aAAW;AACX,kBAAgB;AAChB,eAAa;AACb,mBAAiB;AACjB,0BAAwB,IAAI;AAC5B,2BAAyB,IAAI;AAC7B,oBAAkB;AAClB,kBAAgB;AACpB;AAEA,CAAC;AACG,YAAU;AACV,OAAK;AACL,iBAAe;AACnB;AAEA,CANC,2BAM2B;AACxB,cAAY;AAChB;AAEA,CAAC;AACG,WAAS;AACT,cAAY;AACZ,eAAa;AACb,mBAAiB;AACjB,OAAK;AACT;AAEA,CAAC;AACG,iBAAe;AACf,gBAAc;AACd,oBAAkB,IAAI,IAAI;AAC1B,gBAAc;AACd,iBAAe;AACf,eAAa;AACb,kBAAgB;AAChB,aAAW;AACX,eAAa;AACb;AAAA,IAAqB,KAAK;AAAA,IAAE,gBAAgB;AAAA,IAAE,YAAY;AAAA,IAAE,qBAAqB;AAAA,IAAE,IAAI;AAAA,IAAE;AACzF,8BAA4B,aAAa,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;AACtD,uBAAqB;AACrB,8BAA4B,aAAa,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;AACpD,6BAA2B,aAAa,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;AACvD;AAEA,CAjBC,8BAiB8B;AAC3B,oBAAkB,IAAI,IAAI,aAAa,EAAE;AAC7C;AAIA,CAAC;AACG,WAAS;AACT,SAAO;AACP,aAAW;AACX,aAAW;AACX,kBAAgB;AACpB;AAEA,CAAC;AACG,WAAS;AACT,SAAO;AACP,aAAW;AACX,kBAAgB;AAChB,eAAa;AACb,mBAAiB;AACrB;AAEA,CAAC;AACG,cAAY;AACZ,eAAa;AACjB;AAEA,CAAC;AACG,cAAY;AACZ,WAAS;AACT,SAAO;AACP,eAAa;AACb,mBAAiB;AACjB,OAAK;AACT;AAEA,CAAC;AACG,WAAS;AACT,aAAW;AACX,aAAW;AACX,cAAY;AACZ,kBAAgB;AAChB,eAAa;AACb,mBAAiB;AACjB,iBAAe,IAAI;AACnB,gBAAc;AACd,WAAS;AACT;AAAA,IAAqB,KAAK;AAAA,IAAE,gBAAgB;AAAA,IAAE,YAAY;AAAA,IAAE,qBAAqB;AAAA,IAAE,IAAI;AAAA,IAAE;AACzF,8BAA4B,aAAa,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;AACtD,uBAAqB;AACrB,8BAA4B,aAAa,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;AACpD,6BAA2B,aAAa,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;AACvD;AAEA,CAlBC,6BAkB6B;AAC1B,oBAAkB,IAAI,IAAI,aAAa,EAAE;AAC7C;AAEA,CAAC;AACG,YAAU;AACV,WAAS;AACT,sBAAoB;AACpB,sBAAoB;AACpB,iBAAe;AACf,aAAW;AACX,eAAa;AACb,eAAa;AACjB;AAIA,CAAC;AACG,WAAS;AACT,SAAO;AACP,aAAW;AACX,eAAa;AACb,iBAAe,IAAI;AACnB,gBAAc;AACd,oBAAkB;AAClB,gBAAc;AACd,iBAAe;AACf,gBAAc,EAAE,IAAI,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;AACtC,wBAAsB,EAAE,IAAI,IAAI,EAAE,IAAI;AACtC;AAAA,IAAY,IAAI,wBAAwB,EAAE,EAAE,EAAE,MAAM;AAAA,IAAE,IAAI,iBAAiB,EAAE,EAAE,EAAE,MAAM;AAAA,IAAE,IAAI;AAC7F;AAAA,IAAqB,KAAK;AAAA,IAAE,gBAAgB;AAAA,IAAE,YAAY;AAAA,IAAE,qBAAqB;AAAA,IAAE,IAAI;AAAA,IAAE;AACzF,8BAA4B,aAAa,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;AACtD,uBAAqB;AACrB,8BAA4B,aAAa,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;AACpD,6BAA2B,aAAa,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;AACvD;AAEA,CApBC,iBAoBiB;AACd,gBAAc,IAAI,IAAI,YAAY,EAAE;AACxC;AAEA,CAAC;AACG,cAAY;AACZ,aAAW;AACX,UAAQ;AACR,gBAAc;AACd,oBAAkB;AAClB,gBAAc;AACd,iBAAe;AACf,eAAa;AACb,kBAAgB;AAChB,aAAW;AACX,eAAa;AACb,WAAS,IAAI,MAAM;AACnB,kBAAgB;AACpB;AAEA,CAhBC,kBAgBkB;AACf,SAAO,IAAI,IAAI;AACnB;AAEA,CApBC,kBAoBkB;AACf,SAAO,IAAI,IAAI;AACnB;AAEA,CAxBC,kBAwBkB;AACf,4BAA0B,IAAI,kBAAkB,EAAE,EAAE,EAAE,IAAI,yBAAyB,IAAI;AACvF,qBAAmB,IAAI,kBAAkB,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE,IAAI,0BAA0B,IAAI;AAC5F;AAAA,IAAY,IAAI,yBAAyB;AAAA,IAAE,IAAI,kBAAkB;AAAA,IAAE,IAAI,YAAY,EAAE,EAAE,EAAE;AAC7F;AAEA,CA9BC,kBA8BkB;AACf,UAAQ;AACZ;AAEA,CAAC;AACD,CAAC;AACD,CAAC;AACG,cAAY;AACZ,iBAAe;AACf,SAAO;AACP,UAAQ;AACR,WAAS;AACT,uBAAqB;AACrB,8BAA4B,aAAa,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;AACtD,uBAAqB;AACrB,8BAA4B,aAAa,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;AACpD,6BAA2B,aAAa,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;AACvD;AAEA,CAAC;AACG,WAAS;AACT,SAAO;AACP,kBAAgB;AAChB,OAAK;AACL,gBAAc;AACd,iBAAe;AACnB;AAIA,CAAC;AACG,YAAU;AACV,cAAY;AACZ,WAAS;AACT,UAAQ;AACR,SAAO;AACP,eAAa;AACb,mBAAiB;AACjB,OAAK;AACL,iBAAe,IAAI;AACnB,gBAAc;AACd,WAAS;AACb;AAEA,CAAC;AACG,UAAQ;AACR;AAAA,IAAqB,KAAK;AAAA,IAAE,gBAAgB;AAAA,IAAE,YAAY;AAAA,IAAE,qBAAqB;AAAA,IAAE,IAAI;AAAA,IAAE;AACzF,8BAA4B,aAAa,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;AACtD,uBAAqB;AACzB;AAEA,CAPC,8BAO8B;AAC3B,oBAAkB,IAAI,IAAI,cAAc,EAAE;AAC9C;AAEA,CAAC;AACG,WAAS;AACT,SAAO;AACP,UAAQ;AACR,eAAa;AACb,mBAAiB;AACjB,iBAAe;AACf,gBAAc;AACd,oBAAkB,IAAI,IAAI;AAC1B,aAAW;AACX,eAAa;AACjB;AAEA,CAAC;AACG,aAAW;AACX,cAAY;AAChB;AAEA,CAAC;AACG,YAAU;AACV,WAAS;AACT,sBAAoB;AACpB,sBAAoB;AACpB,iBAAe;AACf,aAAW;AACX,eAAa;AACb,eAAa;AACb,SAAO,IAAI,IAAI;AACnB;AAEA,CAAC;AACG,aAAW;AACX,eAAa;AACb,SAAO,IAAI,IAAI;AACnB;AAEA,CAAC;AACG,YAAU;AACV,SAAO;AACP,OAAK;AACL,SAAO;AACP,UAAQ;AACR,SAAO,IAAI,IAAI;AACnB;AAEA,CATC,sBASqB,EAAC;AACnB,SAAO;AACP,UAAQ;AACR,iBAAe;AACf,oBAAkB,IAAI,IAAI;AAC9B;AAIA,CAAC;AACG,WAAS;AACT,kBAAgB;AAChB,yBAAuB,OAAO,IAAI,EAAC,KAAK;AACxC,WAAS;AACb;AAEA,CAPC,sBAOqB,EAAC;AACnB,qBAAmB;AACvB;AAEA,CAXC;AAYG,SAAO;AACP,aAAW;AACX,eAAa;AACb,kBAAgB;AACpB;AAEA,OAAO,CAlBN,uBAkB8B,EAAE,CAAC;AAC9B,qBAAmB;AACnB,kBAAgB;AAChB,gBAAc;AACd,cAAY;AAChB;AAEA,OAAO,CAzBN,uBAyB8B,EAAE,CAAC;AAC9B,eAAa,EAAE,EAAE;AACjB,qBAAmB;AACnB,kBAAgB;AAChB,mBAAiB;AACrB;AAEA,OAAO,CAhCN,uBAgC8B,EAAE,CAAC;AAC9B,qBAAmB;AACnB,kBAAgB;AACpB;AAEA,OAAO,CArCN,uBAqC8B,EAAE,CAAC;AAC9B,eAAa,EAAE,EAAE;AACjB,qBAAmB;AACnB,kBAAgB;AAChB,gBAAc;AACd,mBAAiB;AACrB;AAEA,CAbkC;AAc9B,aAAW;AACX,iBAAe;AACf,iBAAe;AACf,oBAAkB,IAAI,IAAI;AAC1B,gBAAc;AACd,iBAAe;AACf,eAAa;AACb,kBAAgB;AAChB,SAAO,IAAI,IAAI;AACnB;AAEA,CAhCkC;AAiC9B,WAAS;AACT,SAAO;AACP,kBAAgB;AAChB,OAAK;AACT;AAIA,CAhDkC;AAiD9B,WAAS;AACT,kBAAgB;AAChB,eAAa;AACjB;AAIA,CAAC;AACG,cAAY;AACZ,iBAAe;AACf,WAAS;AACT,SAAO;AACP,aAAW;AACX,kBAAgB;AAChB,OAAK;AACL,iBAAe;AACf,oBAAkB,IAAI,IAAI;AAC9B;AAEA,CAAC;AACG,WAAS;AACT,UAAQ;AACR,SAAO;AACP,UAAQ;AACR,oBAAkB;AAClB,WAAS;AACT,kBAAgB;AAChB,SAAO,IAAI,IAAI;AACf,WAAS,IAAI,MAAM;AACnB,kBAAgB;AACpB;AAEA,CAAC;AACG,eAAa;AACb,gBAAc;AACd,iBAAe;AACf,WAAS;AACT,eAAa;AACb,mBAAiB;AACjB,OAAK;AACL,cAAY;AAChB;AAIA,CAAC;AACG,WAAS;AACT,yBAAuB,KAAK,KAAK;AACjC,sBAAoB,KAAK;AACzB,YAAU;AACV,SAAO;AACP,aAAW;AACX,eAAa;AACb,kBAAgB;AACpB;AAEA,OAAO,CAXN,4BAWmC,EAAE,CAAC;AACnC,qBAAmB;AACnB,YAAU,EAAE,EAAE;AACd,kBAAgB;AAChB,gBAAc;AAClB;AAEA,OAAO,CAlBN,4BAkBmC,EAAE,CA7FJ;AA8F9B,qBAAmB;AACnB,kBAAgB;AAChB,eAAa;AACb,gBAAc;AAClB;AAEA,OAAO,CAzBN,4BAyBmC,EAAE,CAAC;AACnC,qBAAmB;AACnB,kBAAgB;AAChB,eAAa;AACjB;AAEA,OAAO,CA/BN,4BA+BmC,EAAE,CAAC;AACnC,eAAa,KAAK,EAAE,EAAE,KAAK;AAC3B,qBAAmB;AACnB,kBAAgB;AAChB,cAAY;AACZ,iBAAe;AACnB;AAEA,CARuC;AASnC,aAAW;AACX,iBAAe;AACf,eAAa;AACb,SAAO,IAAI,IAAI;AACnB;AAIA,CAvBuC;AAwBnC,WAAS;AACT,OAAK;AACL,SAAO,IAAI,IAAI;AACnB;AAEA,OAAO,CA7BgC,8BA6BD,CAAC;AACnC,YAAU;AACV,iBAAe,KAAK,IAAI,cAAc,EAAE;AACxC,gBAAc;AACd,oBAAkB,IAAI,IAAI;AAC1B,WAAS;AACT,gBAAc,EAAE,IAAI,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;AACtC,wBAAsB,EAAE,IAAI,IAAI,EAAE,IAAI;AACtC;AAAA,IAAY,IAAI,wBAAwB,EAAE,EAAE,EAAE,MAAM;AAAA,IAAE,IAAI,iBAAiB,EAAE,EAAE,EAAE,MAAM;AAAA,IAAE,IAAI;AACjG;AAEA,OAAO,CAAC,2CAA2C,CAAC;AAChD,sBAAoB;AACpB,SAAO,IAAI,GAAG,IAAI,GAAG,EAAE,IAAI,kBAAkB,EAAE;AACnD;AAEA,OAAO,CALC,2CAK2C,CAAC,eAAe;AAC/D,sBAAoB;AACpB,SAAO,IAAI,GAAG,IAAI,GAAG,EAAE,IAAI,kBAAkB,EAAE;AACnD;AAEA,OAAO,CAAC,oBAAoB,EAAE;AAC1B,SAAO,CAXH,2CAW+C,CAAC;AAChD,wBAAoB;AACpB,WAAO,IAAI,GAAG,IAAI,GAAG,EAAE,IAAI,kBAAkB,EAAE;AACnD;AACA,SAAO,CAfH,2CAe+C,CAAC,eAAe;AAC/D,wBAAoB;AACpB,WAAO,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,kBAAkB,EAAE;AACpD;AACJ;AAEA,OAAO,CAAC,2CAA2C,CAAC;AAChD,sBAAoB;AACpB,SAAO,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,kBAAkB,EAAE;AACnD;AAEA,OAAO,CALC,2CAK2C,CAAC,eAAe;AAC/D,sBAAoB;AACpB,SAAO,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,kBAAkB,EAAE;AACnD;AAEA,OAAO,CAAC,oBAAoB,EAAE;AAC1B,SAAO,CAXH,2CAW+C,CAAC;AAChD,wBAAoB;AACpB,WAAO,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,kBAAkB,EAAE;AACnD;AACA,SAAO,CAfH,2CAe+C,CAAC,eAAe;AAC/D,wBAAoB;AACpB,WAAO,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,kBAAkB,EAAE;AACrD;AACJ;AAIA,CAxLkC;AAyL9B,WAAS;AACT,eAAa;AACb,aAAW;AACX,eAAa;AACb,SAAO,IAAI,IAAI;AACnB;AAEA,CAAC;AACG,eAAa;AACjB;AAIA,CAAC;AACG,eAAa;AACjB;AAEA,WAAW;AACP;AACI,aAAS;AACb;AACJ;AAEA,CAAC,gBAAgB;AACb,aAAW,UAAU,GAAG,aAAa,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG;AACrD;AAAA,IAAa,aAAa;AAAA,IAAE,SAAS;AAAA,IAAE,UAAU;AAAA,IAAE,mBAAmB;AAAA,IAAE,gBAAgB;AAAA,IAAE,iBAAiB;AAAA,IAAE;AAC7G,iBAAe;AACf,WAAS,IAAI;AACjB;AAEA,CAPC,gBAOgB,OAAO,CAAC,UAAY,CAAC,SAAW,EAAE;AAC/C,eAAa;AACjB;AAEA,CAXC,gBAWgB,OAAO,CAAC,UAAY,CAAC,SAAW,EAAE;AAC/C,gBAAc;AAClB;AAIA,CAAC;AACG,WAAS;AACT,kBAAgB;AAChB,eAAa;AACb,OAAK;AACT;AAEA,CAAC;AACG,WAAS;AACT,eAAa;AACb,OAAK;AACL,iBAAe,IAAI;AACnB,uBAAqB;AACrB,8BAA4B,aAAa,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;AACtD,uBAAqB;AACzB;AAEA,CAVC,oBAUoB;AACjB,oBAAkB,IAAI,IAAI;AAC9B;AAEA,CAdC,oBAcoB;AACjB,oBAAkB,IAAI,IAAI;AAC1B,WAAS,IAAI,MAAM;AACnB,kBAAgB;AAChB,4BAA0B,IAAI,kBAAkB,EAAE,EAAE,EAAE,IAAI,yBAAyB,IAAI;AACvF,qBAAmB,IAAI,kBAAkB,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE,IAAI,0BAA0B,IAAI;AAC5F;AAAA,IAAY,IAAI,yBAAyB;AAAA,IAAE,IAAI,kBAAkB;AAAA,IAAE,IAAI,YAAY,EAAE,EAAE,EAAE;AACzF,oBAAkB,IAAI,IAAI;AAC9B;AAEA,CAxBC,oBAwBoB,CAAC;AAClB,oBAAkB,IAAI,IAAI;AAC9B;AAEA,CAAC;AACG,WAAS;AACT,eAAa;AACb,mBAAiB;AACjB,OAAK;AACL,iBAAe,IAAI;AACnB,gBAAc;AACd,iBAAe;AACf,eAAa;AACb,kBAAgB;AAChB,cAAY;AAChB;AAEA,CAbC,mBAamB;AAChB,oBAAkB,IAAI,IAAI;AAC9B;AAEA,CAjBC,mBAiBmB,CAAC;AACjB,oBAAkB,IAAI,IAAI;AAC9B;AAEA,CArBC,oBAqBoB,EAAE,CAAC;AACpB,SAAO;AACP,UAAQ;AACZ;AAEA,CAAC;AACG,aAAW;AACX,gBAAc;AACd,iBAAe;AACf,eAAa;AACb,kBAAgB;AAChB,cAAY;AAChB;AAEA,CAAC;AACG,aAAW;AACX,eAAa;AACjB;AAEA,CAAC;AACG,eAAa;AACb,gBAAc;AACd,SAAO;AACP,UAAQ;AACR,WAAS;AACT,SAAO,IAAI,IAAI;AACnB;AAEA,CATC,4BAS4B;AACzB,SAAO,IAAI,IAAI;AACnB;;;ACjpBA;AACE,oBAAkB,EAAE,GAAG;AACvB,oBAAkB,IAAI,IAAI;AAE1B,cAAY,EAAE,GAAG;AACjB,yBAAuB,IAAI,IAAI;AAE/B,iBAAe,EAAE,GAAG;AACpB,4BAA0B,IAAI,IAAI;AAElC,iBAAe,IAAI,KAAK;AACxB,4BAA0B,EAAE,GAAG;AAE/B,mBAAiB,IAAI,KAAK;AAC1B,8BAA4B,IAAI,KAAK;AAErC,eAAa,IAAI,KAAK;AACtB,0BAAwB,IAAI,KAAK;AAEjC,gBAAc,IAAI,KAAK;AACvB,2BAAyB,IAAI,KAAK;AAElC,qBAAmB,EAAE,MAAM;AAC3B,gCAA8B,EAAE,GAAG;AAEnC,gBAAc,IAAI,KAAK;AACvB,eAAa,IAAI,KAAK;AACtB,cAAY,IAAI,IAAI;AAEpB,gBAAc;AAChB;AAEA,CAAC;AACC,oBAAkB,EAAE,GAAG;AACvB,oBAAkB,EAAE,GAAG;AAEvB,cAAY,IAAI,IAAI;AACpB,yBAAuB,EAAE,GAAG;AAE5B,iBAAe,IAAI,IAAI;AACvB,4BAA0B,EAAE,GAAG;AAE/B,iBAAe,EAAE,GAAG;AACpB,4BAA0B,IAAI,KAAK;AAEnC,mBAAiB,IAAI,KAAK;AAC1B,8BAA4B,EAAE,GAAG;AAEjC,eAAa,IAAI,KAAK;AACtB,0BAAwB,IAAI,GAAG;AAE/B,gBAAc,IAAI,KAAK;AACvB,2BAAyB,EAAE,GAAG;AAE9B,qBAAmB,EAAE,MAAM;AAC3B,gCAA8B,EAAE,GAAG;AAEnC,gBAAc,IAAI,KAAK;AACvB,eAAa,IAAI,KAAK;AACtB,cAAY,IAAI,KAAK;AACvB;","names":[]}
1
+ {"version":3,"sources":["../../src/styles/base.css","../../src/styles/tailwindcss/base-components.css","../../src/styles/tailwindcss/thread.css","../../src/styles/themes/default.css"],"sourcesContent":[":where(.aui-root) *, :where(.aui-root) ::before, :where(.aui-root) ::after {\n --aui-border-spacing-x: 0;\n --aui-border-spacing-y: 0;\n --aui-translate-x: 0;\n --aui-translate-y: 0;\n --aui-rotate: 0;\n --aui-skew-x: 0;\n --aui-skew-y: 0;\n --aui-scale-x: 1;\n --aui-scale-y: 1;\n --aui-ring-inset: ;\n --aui-ring-offset-width: 0px;\n --aui-ring-offset-color: #fff;\n --aui-ring-color: rgb(59 130 246 / 0.5);\n --aui-ring-offset-shadow: 0 0 #0000;\n --aui-ring-shadow: 0 0 #0000;\n --aui-shadow: 0 0 #0000;\n --aui-shadow-colored: 0 0 #0000;\n --aui-blur: ;\n --aui-brightness: ;\n --aui-contrast: ;\n --aui-grayscale: ;\n --aui-hue-rotate: ;\n --aui-invert: ;\n --aui-saturate: ;\n --aui-sepia: ;\n --aui-drop-shadow: ;\n --aui-backdrop-blur: ;\n --aui-backdrop-brightness: ;\n --aui-backdrop-contrast: ;\n --aui-backdrop-grayscale: ;\n --aui-backdrop-hue-rotate: ;\n --aui-backdrop-invert: ;\n --aui-backdrop-opacity: ;\n --aui-backdrop-saturate: ;\n --aui-backdrop-sepia: ;\n --aui-contain-size: ;\n --aui-contain-layout: ;\n --aui-contain-paint: ;\n --aui-contain-style: ;\n}\n :where(.aui-root) ::backdrop {\n --aui-border-spacing-x: 0;\n --aui-border-spacing-y: 0;\n --aui-translate-x: 0;\n --aui-translate-y: 0;\n --aui-rotate: 0;\n --aui-skew-x: 0;\n --aui-skew-y: 0;\n --aui-scale-x: 1;\n --aui-scale-y: 1;\n --aui-ring-inset: ;\n --aui-ring-offset-width: 0px;\n --aui-ring-offset-color: #fff;\n --aui-ring-color: rgb(59 130 246 / 0.5);\n --aui-ring-offset-shadow: 0 0 #0000;\n --aui-ring-shadow: 0 0 #0000;\n --aui-shadow: 0 0 #0000;\n --aui-shadow-colored: 0 0 #0000;\n --aui-blur: ;\n --aui-brightness: ;\n --aui-contrast: ;\n --aui-grayscale: ;\n --aui-hue-rotate: ;\n --aui-invert: ;\n --aui-saturate: ;\n --aui-sepia: ;\n --aui-drop-shadow: ;\n --aui-backdrop-blur: ;\n --aui-backdrop-brightness: ;\n --aui-backdrop-contrast: ;\n --aui-backdrop-grayscale: ;\n --aui-backdrop-hue-rotate: ;\n --aui-backdrop-invert: ;\n --aui-backdrop-opacity: ;\n --aui-backdrop-saturate: ;\n --aui-backdrop-sepia: ;\n --aui-contain-size: ;\n --aui-contain-layout: ;\n --aui-contain-paint: ;\n --aui-contain-style: ;\n}\n /*\n1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\n2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)\n*/\n :where(.aui-root) *,\n:where(.aui-root) ::before,\n:where(.aui-root) ::after {\n box-sizing: border-box; /* 1 */\n border-width: 0; /* 2 */\n border-style: solid; /* 2 */\n border-color: #e5e7eb; /* 2 */\n}\n /*\n! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com\n*/\n :where(.aui-root) ::before,\n:where(.aui-root) ::after {\n --aui-content: '';\n}\n /*\n1. Use a consistent sensible line-height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n3. Use a more readable tab size.\n4. Use the user's configured `sans` font-family by default.\n5. Use the user's configured `sans` font-feature-settings by default.\n6. Use the user's configured `sans` font-variation-settings by default.\n7. Disable tap highlights on iOS\n*/\n :where(.aui-root) html,\n:where(.aui-root) :host {\n line-height: 1.5; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n -moz-tab-size: 4; /* 3 */\n -o-tab-size: 4;\n tab-size: 4; /* 3 */\n font-family: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"; /* 4 */\n font-feature-settings: normal; /* 5 */\n font-variation-settings: normal; /* 6 */\n -webkit-tap-highlight-color: transparent; /* 7 */\n}\n /*\n1. Remove the margin in all browsers.\n2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.\n*/\n :where(.aui-root) body {\n margin: 0; /* 1 */\n line-height: inherit; /* 2 */\n}\n /*\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n3. Ensure horizontal rules are visible by default.\n*/\n :where(.aui-root) hr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n border-top-width: 1px; /* 3 */\n}\n /*\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n :where(.aui-root) abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n /*\nRemove the default font size and weight for headings.\n*/\n :where(.aui-root) h1,\n:where(.aui-root) h2,\n:where(.aui-root) h3,\n:where(.aui-root) h4,\n:where(.aui-root) h5,\n:where(.aui-root) h6 {\n font-size: inherit;\n font-weight: inherit;\n}\n /*\nReset links to optimize for opt-in styling instead of opt-out.\n*/\n :where(.aui-root) a {\n color: inherit;\n text-decoration: inherit;\n}\n /*\nAdd the correct font weight in Edge and Safari.\n*/\n :where(.aui-root) b,\n:where(.aui-root) strong {\n font-weight: bolder;\n}\n /*\n1. Use the user's configured `mono` font-family by default.\n2. Use the user's configured `mono` font-feature-settings by default.\n3. Use the user's configured `mono` font-variation-settings by default.\n4. Correct the odd `em` font sizing in all browsers.\n*/\n :where(.aui-root) code,\n:where(.aui-root) kbd,\n:where(.aui-root) samp,\n:where(.aui-root) pre {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace; /* 1 */\n font-feature-settings: normal; /* 2 */\n font-variation-settings: normal; /* 3 */\n font-size: 1em; /* 4 */\n}\n /*\nAdd the correct font size in all browsers.\n*/\n :where(.aui-root) small {\n font-size: 80%;\n}\n /*\nPrevent `sub` and `sup` elements from affecting the line height in all browsers.\n*/\n :where(.aui-root) sub,\n:where(.aui-root) sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n :where(.aui-root) sub {\n bottom: -0.25em;\n}\n :where(.aui-root) sup {\n top: -0.5em;\n}\n /*\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n3. Remove gaps between table borders by default.\n*/\n :where(.aui-root) table {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n border-collapse: collapse; /* 3 */\n}\n /*\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n3. Remove default padding in all browsers.\n*/\n :where(.aui-root) button,\n:where(.aui-root) input,\n:where(.aui-root) optgroup,\n:where(.aui-root) select,\n:where(.aui-root) textarea {\n font-family: inherit; /* 1 */\n font-feature-settings: inherit; /* 1 */\n font-variation-settings: inherit; /* 1 */\n font-size: 100%; /* 1 */\n font-weight: inherit; /* 1 */\n line-height: inherit; /* 1 */\n letter-spacing: inherit; /* 1 */\n color: inherit; /* 1 */\n margin: 0; /* 2 */\n padding: 0; /* 3 */\n}\n /*\nRemove the inheritance of text transform in Edge and Firefox.\n*/\n :where(.aui-root) button,\n:where(.aui-root) select {\n text-transform: none;\n}\n /*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Remove default button styles.\n*/\n :where(.aui-root) button,\n:where(.aui-root) input:where([type='button']),\n:where(.aui-root) input:where([type='reset']),\n:where(.aui-root) input:where([type='submit']) {\n -webkit-appearance: button; /* 1 */\n background-color: transparent; /* 2 */\n background-image: none; /* 2 */\n}\n /*\nUse the modern Firefox focus style for all focusable elements.\n*/\n :where(.aui-root) :-moz-focusring {\n outline: auto;\n}\n /*\nRemove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\n*/\n :where(.aui-root) :-moz-ui-invalid {\n box-shadow: none;\n}\n /*\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n :where(.aui-root) progress {\n vertical-align: baseline;\n}\n /*\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n :where(.aui-root) ::-webkit-inner-spin-button,\n:where(.aui-root) ::-webkit-outer-spin-button {\n height: auto;\n}\n /*\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n :where(.aui-root) [type='search'] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n /*\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n :where(.aui-root) ::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n /*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to `inherit` in Safari.\n*/\n :where(.aui-root) ::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n /*\nAdd the correct display in Chrome and Safari.\n*/\n :where(.aui-root) summary {\n display: list-item;\n}\n /*\nRemoves the default spacing and border for appropriate elements.\n*/\n :where(.aui-root) blockquote,\n:where(.aui-root) dl,\n:where(.aui-root) dd,\n:where(.aui-root) h1,\n:where(.aui-root) h2,\n:where(.aui-root) h3,\n:where(.aui-root) h4,\n:where(.aui-root) h5,\n:where(.aui-root) h6,\n:where(.aui-root) hr,\n:where(.aui-root) figure,\n:where(.aui-root) p,\n:where(.aui-root) pre {\n margin: 0;\n}\n :where(.aui-root) fieldset {\n margin: 0;\n padding: 0;\n}\n :where(.aui-root) legend {\n padding: 0;\n}\n :where(.aui-root) ol,\n:where(.aui-root) ul,\n:where(.aui-root) menu {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n /*\nReset default styling for dialogs.\n*/\n :where(.aui-root) dialog {\n padding: 0;\n}\n /*\nPrevent resizing textareas horizontally by default.\n*/\n :where(.aui-root) textarea {\n resize: vertical;\n}\n /*\n1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\n2. Set the default placeholder color to the user's configured gray 400 color.\n*/\n :where(.aui-root) input::-moz-placeholder, :where(.aui-root) textarea::-moz-placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n :where(.aui-root) input::placeholder,\n:where(.aui-root) textarea::placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n /*\nSet the default cursor for buttons.\n*/\n :where(.aui-root) button,\n:where(.aui-root) [role=\"button\"] {\n cursor: pointer;\n}\n /*\nMake sure disabled buttons don't get the pointer cursor.\n*/\n :where(.aui-root) :disabled {\n cursor: default;\n}\n /*\n1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)\n2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\n This can trigger a poorly considered lint error in some tools but is included by design.\n*/\n :where(.aui-root) img,\n:where(.aui-root) svg,\n:where(.aui-root) video,\n:where(.aui-root) canvas,\n:where(.aui-root) audio,\n:where(.aui-root) iframe,\n:where(.aui-root) embed,\n:where(.aui-root) object {\n display: block; /* 1 */\n vertical-align: middle; /* 2 */\n}\n /*\nConstrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\n*/\n :where(.aui-root) img,\n:where(.aui-root) video {\n max-width: 100%;\n height: auto;\n}\n /* Make elements with the HTML hidden attribute stay hidden by default */\n :where(.aui-root) [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none;\n}\n\n@keyframes aui-enter {\n from {\n opacity: var(--aui-enter-opacity, 1);\n transform: translate3d(\n var(--aui-enter-translate-x, 0),\n var(--aui-enter-translate-y, 0),\n 0\n )\n scale3d(\n var(--aui-enter-scale, 1),\n var(--aui-enter-scale, 1),\n var(--aui-enter-scale, 1)\n )\n rotate(var(--aui-enter-rotate, 0));\n }\n}\n\n@keyframes aui-exit {\n to {\n opacity: var(--aui-exit-opacity, 1);\n transform: translate3d(\n var(--aui-exit-translate-x, 0),\n var(--aui-exit-translate-y, 0),\n 0\n )\n scale3d(\n var(--aui-exit-scale, 1),\n var(--aui-exit-scale, 1),\n var(--aui-exit-scale, 1)\n )\n rotate(var(--aui-exit-rotate, 0));\n }\n}\n",".aui-root {\n\n color: hsl(var(--aui-foreground))\n}\n\n.aui-root * {\n\n border-color: hsl(var(--aui-border))\n}\n\n/* shadcn-ui/button */\n.aui-button {\n\n display: inline-flex;\n\n align-items: center;\n\n justify-content: center;\n\n white-space: nowrap;\n\n border-radius: calc(var(--aui-radius) - 2px);\n\n font-size: 0.875rem;\n\n line-height: 1.25rem;\n\n font-weight: 500;\n\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n\n transition-duration: 150ms\n}\n.aui-button:focus-visible {\n\n outline: 2px solid transparent;\n\n outline-offset: 2px;\n\n --aui-ring-offset-shadow: var(--aui-ring-inset) 0 0 0 var(--aui-ring-offset-width) var(--aui-ring-offset-color);\n\n --aui-ring-shadow: var(--aui-ring-inset) 0 0 0 calc(1px + var(--aui-ring-offset-width)) var(--aui-ring-color);\n\n box-shadow: var(--aui-ring-offset-shadow), var(--aui-ring-shadow), var(--aui-shadow, 0 0 #0000);\n\n --aui-ring-color: hsl(var(--aui-ring))\n}\n.aui-button:disabled {\n\n pointer-events: none;\n\n opacity: 0.5\n}\n\n.aui-button-primary {\n\n background-color: hsl(var(--aui-primary));\n\n color: hsl(var(--aui-primary-foreground));\n\n --aui-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n\n --aui-shadow-colored: 0 1px 3px 0 var(--aui-shadow-color), 0 1px 2px -1px var(--aui-shadow-color);\n\n box-shadow: var(--aui-ring-offset-shadow, 0 0 #0000), var(--aui-ring-shadow, 0 0 #0000), var(--aui-shadow)\n}\n\n.aui-button-primary:hover {\n\n background-color: hsl(var(--aui-primary) / 0.9)\n}\n\n.aui-button-outline {\n\n border-width: 1px;\n\n border-color: hsl(var(--aui-input));\n\n background-color: hsl(var(--aui-background));\n\n --aui-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n\n --aui-shadow-colored: 0 1px 2px 0 var(--aui-shadow-color);\n\n box-shadow: var(--aui-ring-offset-shadow, 0 0 #0000), var(--aui-ring-shadow, 0 0 #0000), var(--aui-shadow)\n}\n\n.aui-button-outline:hover {\n\n background-color: hsl(var(--aui-accent));\n\n color: hsl(var(--aui-accent-foreground))\n}\n\n.aui-button-ghost:hover {\n\n background-color: hsl(var(--aui-accent));\n\n color: hsl(var(--aui-accent-foreground))\n}\n\n.aui-button-medium {\n\n height: 2.25rem;\n\n padding-left: 1rem;\n\n padding-right: 1rem;\n\n padding-top: 0.5rem;\n\n padding-bottom: 0.5rem\n}\n\n/** tooltip icon button */\n.aui-button-icon {\n\n width: 1.5rem;\n\n height: 1.5rem;\n\n padding: 0.25rem\n}\n\n.aui-sr-only {\n\n position: absolute;\n\n width: 1px;\n\n height: 1px;\n\n padding: 0;\n\n margin: -1px;\n\n overflow: hidden;\n\n clip: rect(0, 0, 0, 0);\n\n white-space: nowrap;\n\n border-width: 0\n}\n\n/* shadcn-ui/avatar */\n\n.aui-avatar-root {\n\n position: relative;\n\n display: flex;\n\n height: 2.5rem;\n\n width: 2.5rem;\n\n flex-shrink: 0;\n\n overflow: hidden;\n\n border-radius: 9999px\n}\n\n.aui-avatar-image {\n\n aspect-ratio: 1 / 1;\n\n height: 100%;\n\n width: 100%;\n\n -o-object-fit: cover;\n\n object-fit: cover\n}\n\n.aui-avatar-fallback {\n\n display: flex;\n\n height: 100%;\n\n width: 100%;\n\n align-items: center;\n\n justify-content: center;\n\n border-radius: 9999px;\n\n background-color: hsl(var(--aui-muted))\n}\n\n/* shadcn-ui/tooltip */\n\n.aui-tooltip-content {\n\n z-index: 50;\n\n overflow: hidden;\n\n border-radius: calc(var(--aui-radius) - 2px);\n\n border-width: 1px;\n\n background-color: hsl(var(--aui-popover));\n\n padding-left: 0.75rem;\n\n padding-right: 0.75rem;\n\n padding-top: 0.375rem;\n\n padding-bottom: 0.375rem;\n\n font-size: 0.875rem;\n\n line-height: 1.25rem;\n\n color: hsl(var(--aui-popover-foreground));\n\n --aui-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n\n --aui-shadow-colored: 0 4px 6px -1px var(--aui-shadow-color), 0 2px 4px -2px var(--aui-shadow-color);\n\n box-shadow: var(--aui-ring-offset-shadow, 0 0 #0000), var(--aui-ring-shadow, 0 0 #0000), var(--aui-shadow);\n\n animation-name: aui-enter;\n\n animation-duration: 150ms;\n\n --aui-enter-opacity: initial;\n\n --aui-enter-scale: initial;\n\n --aui-enter-rotate: initial;\n\n --aui-enter-translate-x: initial;\n\n --aui-enter-translate-y: initial;\n\n --aui-enter-opacity: 0;\n\n --aui-enter-scale: .95\n}\n\n.aui-tooltip-content[data-state=\"closed\"] {\n\n animation-name: aui-exit;\n\n animation-duration: 150ms;\n\n --aui-exit-opacity: initial;\n\n --aui-exit-scale: initial;\n\n --aui-exit-rotate: initial;\n\n --aui-exit-translate-x: initial;\n\n --aui-exit-translate-y: initial;\n\n --aui-exit-opacity: 0;\n\n --aui-exit-scale: .95\n}\n\n.aui-tooltip-content[data-side=\"bottom\"] {\n\n --aui-enter-translate-y: -0.5rem\n}\n\n.aui-tooltip-content[data-side=\"left\"] {\n\n --aui-enter-translate-x: 0.5rem\n}\n\n.aui-tooltip-content[data-side=\"right\"] {\n\n --aui-enter-translate-x: -0.5rem\n}\n\n.aui-tooltip-content[data-side=\"top\"] {\n\n --aui-enter-translate-y: 0.5rem\n}\n\n/* shadcn-ui/dialog */\n\n.aui-dialog-overlay {\n\n position: fixed;\n\n inset: 0px;\n\n z-index: 50;\n\n background-color: rgb(0 0 0 / 0.8)\n}\n\n.aui-dialog-overlay[data-state=\"open\"] {\n\n animation-name: aui-enter;\n\n animation-duration: 150ms;\n\n --aui-enter-opacity: initial;\n\n --aui-enter-scale: initial;\n\n --aui-enter-rotate: initial;\n\n --aui-enter-translate-x: initial;\n\n --aui-enter-translate-y: initial\n}\n\n.aui-dialog-overlay[data-state=\"closed\"] {\n\n animation-name: aui-exit;\n\n animation-duration: 150ms;\n\n --aui-exit-opacity: initial;\n\n --aui-exit-scale: initial;\n\n --aui-exit-rotate: initial;\n\n --aui-exit-translate-x: initial;\n\n --aui-exit-translate-y: initial;\n\n --aui-exit-opacity: 0\n}\n\n.aui-dialog-overlay[data-state=\"open\"] {\n\n --aui-enter-opacity: 0\n}\n\n.aui-dialog-content {\n\n position: fixed;\n\n left: 50%;\n\n top: 50%;\n\n z-index: 50\n}\n\n.aui-dialog-content[data-state=\"open\"] {\n\n animation-name: aui-enter;\n\n animation-duration: 150ms;\n\n --aui-enter-opacity: initial;\n\n --aui-enter-scale: initial;\n\n --aui-enter-rotate: initial;\n\n --aui-enter-translate-x: initial;\n\n --aui-enter-translate-y: initial\n}\n\n.aui-dialog-content[data-state=\"closed\"] {\n\n animation-name: aui-exit;\n\n animation-duration: 150ms;\n\n --aui-exit-opacity: initial;\n\n --aui-exit-scale: initial;\n\n --aui-exit-rotate: initial;\n\n --aui-exit-translate-x: initial;\n\n --aui-exit-translate-y: initial;\n\n --aui-exit-opacity: 0\n}\n\n.aui-dialog-content[data-state=\"open\"] {\n\n --aui-enter-opacity: 0\n}\n\n.aui-dialog-content[data-state=\"closed\"] {\n\n --aui-exit-scale: .95\n}\n\n.aui-dialog-content[data-state=\"open\"] {\n\n --aui-enter-scale: .95\n}\n\n.aui-dialog-content[data-state=\"closed\"] {\n\n --aui-exit-translate-x: -50%;\n\n --aui-exit-translate-y: -48%\n}\n\n.aui-dialog-content[data-state=\"open\"] {\n\n --aui-enter-translate-x: -50%;\n\n --aui-enter-translate-y: -48%\n}\n\n.aui-dialog-content {\n\n display: grid;\n\n --aui-translate-x: -50%;\n\n --aui-translate-y: -50%;\n\n transform: translate(var(--aui-translate-x), var(--aui-translate-y)) rotate(var(--aui-rotate)) skewX(var(--aui-skew-x)) skewY(var(--aui-skew-y)) scaleX(var(--aui-scale-x)) scaleY(var(--aui-scale-y));\n\n --aui-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n\n --aui-shadow-colored: 0 10px 15px -3px var(--aui-shadow-color), 0 4px 6px -4px var(--aui-shadow-color);\n\n box-shadow: var(--aui-ring-offset-shadow, 0 0 #0000), var(--aui-ring-shadow, 0 0 #0000), var(--aui-shadow);\n\n transition-duration: 200ms;\n\n animation-duration: 200ms\n /* @apply w-full bg-background max-w-lg gap-4 border p-6 sm:rounded-lg; */\n}\n","/* thread */\n.aui-thread-root {\n box-sizing: border-box;\n height: 100%;\n background-color: hsl(var(--aui-background))\n}\n.aui-thread-root>.aui-thread-viewport {\n background-color: inherit\n}\n\n.aui-thread-viewport {\n display: flex;\n height: 100%;\n flex-direction: column;\n align-items: center;\n overflow-y: scroll;\n scroll-behavior: smooth;\n background-color: hsl(var(--aui-background));\n padding-left: 1rem;\n padding-right: 1rem;\n padding-top: 2rem\n}\n\n.aui-thread-viewport-footer {\n position: sticky;\n bottom: 0px;\n margin-top: 0.75rem;\n display: flex;\n width: 100%;\n max-width: 42rem;\n flex-direction: column;\n align-items: center;\n justify-content: flex-end;\n border-top-left-radius: var(--aui-radius);\n border-top-right-radius: var(--aui-radius);\n background-color: inherit;\n padding-bottom: 1rem\n}\n\n.aui-thread-scroll-to-bottom {\n position: absolute;\n top: -2rem;\n border-radius: 9999px\n}\n\n.aui-thread-scroll-to-bottom:disabled {\n visibility: hidden\n}\n\n.aui-thread-followup-suggestions {\n display: flex;\n min-height: 2rem;\n align-items: center;\n justify-content: center;\n gap: 0.5rem\n}\n\n.aui-thread-followup-suggestion {\n border-radius: 9999px;\n border-width: 1px;\n background-color: hsl(var(--aui-background));\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n transition-timing-function: cubic-bezier(0.4, 0, 1, 1);\n animation-timing-function: cubic-bezier(0.4, 0, 1, 1)\n}\n\n.aui-thread-followup-suggestion:hover {\n background-color: hsl(var(--aui-muted) / 0.8)\n}\n\n/* thread welcome */\n\n.aui-thread-welcome-root {\n display: flex;\n width: 100%;\n max-width: 42rem;\n flex-grow: 1;\n flex-direction: column\n}\n\n.aui-thread-welcome-center {\n display: flex;\n width: 100%;\n flex-grow: 1;\n flex-direction: column;\n align-items: center;\n justify-content: center\n}\n\n.aui-thread-welcome-message {\n margin-top: 1rem;\n font-weight: 500\n}\n\n.aui-thread-welcome-suggestion-container {\n margin-top: 0.75rem;\n display: flex;\n width: 100%;\n align-items: stretch;\n justify-content: center;\n gap: 1rem\n}\n\n.aui-thread-welcome-suggestion {\n display: flex;\n max-width: 24rem;\n flex-grow: 1;\n flex-basis: 0px;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n border-radius: var(--aui-radius);\n border-width: 1px;\n padding: 0.75rem;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n transition-timing-function: cubic-bezier(0.4, 0, 1, 1);\n animation-timing-function: cubic-bezier(0.4, 0, 1, 1)\n}\n\n.aui-thread-welcome-suggestion:hover {\n background-color: hsl(var(--aui-muted) / 0.8)\n}\n\n.aui-thread-welcome-suggestion-text {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n text-overflow: ellipsis;\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 600\n}\n\n/* thread composer */\n\n.aui-composer-root {\n display: flex;\n width: 100%;\n flex-wrap: wrap;\n align-items: flex-end;\n border-radius: var(--aui-radius);\n border-width: 1px;\n background-color: inherit;\n padding-left: 0.625rem;\n padding-right: 0.625rem;\n --aui-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --aui-shadow-colored: 0 1px 2px 0 var(--aui-shadow-color);\n box-shadow: var(--aui-ring-offset-shadow, 0 0 #0000), var(--aui-ring-shadow, 0 0 #0000), var(--aui-shadow);\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n transition-timing-function: cubic-bezier(0.4, 0, 1, 1);\n animation-timing-function: cubic-bezier(0.4, 0, 1, 1)\n}\n\n.aui-composer-root:focus-within {\n border-color: hsl(var(--aui-ring) / 0.2)\n}\n\n.aui-composer-input {\n max-height: 10rem;\n flex-grow: 1;\n resize: none;\n border-style: none;\n background-color: transparent;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n padding-top: 1rem;\n padding-bottom: 1rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n outline: 2px solid transparent;\n outline-offset: 2px\n}\n\n.aui-composer-input::-moz-placeholder {\n color: hsl(var(--aui-muted-foreground))\n}\n\n.aui-composer-input::placeholder {\n color: hsl(var(--aui-muted-foreground))\n}\n\n.aui-composer-input:focus {\n --aui-ring-offset-shadow: var(--aui-ring-inset) 0 0 0 var(--aui-ring-offset-width) var(--aui-ring-offset-color);\n --aui-ring-shadow: var(--aui-ring-inset) 0 0 0 calc(0px + var(--aui-ring-offset-width)) var(--aui-ring-color);\n box-shadow: var(--aui-ring-offset-shadow), var(--aui-ring-shadow), var(--aui-shadow, 0 0 #0000)\n}\n\n.aui-composer-input:disabled {\n cursor: not-allowed\n}\n\n.aui-composer-send,\n.aui-composer-cancel,\n.aui-composer-attach {\n margin-top: 0.625rem;\n margin-bottom: 0.625rem;\n width: 2rem;\n height: 2rem;\n padding: 0.5rem;\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n transition-timing-function: cubic-bezier(0.4, 0, 1, 1);\n animation-timing-function: cubic-bezier(0.4, 0, 1, 1)\n}\n\n.aui-composer-attachments {\n display: flex;\n width: 100%;\n flex-direction: row;\n gap: 0.75rem;\n padding-left: 2.5rem;\n padding-right: 2.5rem\n}\n\n/* attachment */\n\n.aui-attachment-root {\n position: relative;\n margin-top: 0.75rem;\n display: flex;\n height: 3rem;\n width: 10rem;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n border-radius: var(--aui-radius);\n border-width: 1px;\n padding: 0.25rem\n}\n\n.aui-attachment-preview-trigger {\n cursor: pointer;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms\n}\n\n.aui-attachment-preview-trigger:hover {\n background-color: hsl(var(--aui-accent) / 0.5)\n}\n\n.aui-attachment-thumb {\n display: flex;\n width: 2.5rem;\n height: 2.5rem;\n align-items: center;\n justify-content: center;\n border-radius: 0.25rem;\n border-width: 1px;\n background-color: hsl(var(--aui-muted));\n font-size: 0.875rem;\n line-height: 1.25rem\n}\n\n.aui-attachment-text {\n flex-grow: 1;\n flex-basis: 0px\n}\n\n.aui-attachment-name {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n text-overflow: ellipsis;\n font-size: 0.75rem;\n line-height: 1rem;\n font-weight: 700;\n color: hsl(var(--aui-muted-foreground))\n}\n\n.aui-attachment-type {\n font-size: 0.75rem;\n line-height: 1rem;\n color: hsl(var(--aui-muted-foreground))\n}\n\n.aui-attachment-remove {\n position: absolute;\n right: -0.75rem;\n top: -0.75rem;\n width: 1.5rem;\n height: 1.5rem;\n color: hsl(var(--aui-muted-foreground))\n}\n\n.aui-attachment-remove>svg {\n width: 1rem;\n height: 1rem;\n border-radius: 9999px;\n background-color: hsl(var(--aui-background))\n}\n\n/* user message */\n\n.aui-user-message-root {\n display: grid;\n grid-auto-rows: auto;\n grid-template-columns: minmax(72px,1fr) auto;\n row-gap: 0.5rem\n}\n\n.aui-user-message-root>* {\n grid-column-start: 2\n}\n\n.aui-user-message-root {\n width: 100%;\n max-width: 42rem;\n padding-top: 1rem;\n padding-bottom: 1rem\n}\n\n:where(.aui-user-message-root) > .aui-user-action-bar-root {\n grid-column-start: 1;\n grid-row-start: 2;\n margin-right: 0.75rem;\n margin-top: 0.625rem\n}\n\n:where(.aui-user-message-root) > .aui-user-message-attachments {\n grid-column: 1 / -1;\n grid-column-start: 1;\n grid-row-start: 1;\n justify-content: flex-end\n}\n\n:where(.aui-user-message-root) > .aui-user-message-content {\n grid-column-start: 2;\n grid-row-start: 2\n}\n\n:where(.aui-user-message-root) > .aui-branch-picker-root {\n grid-column: 1 / -1;\n grid-column-start: 1;\n grid-row-start: 3;\n margin-right: -0.25rem;\n justify-content: flex-end\n}\n\n.aui-user-message-content {\n max-width: 36rem;\n overflow-wrap: break-word;\n border-radius: 1.5rem;\n background-color: hsl(var(--aui-muted));\n padding-left: 1.25rem;\n padding-right: 1.25rem;\n padding-top: 0.625rem;\n padding-bottom: 0.625rem;\n color: hsl(var(--aui-foreground))\n}\n\n.aui-user-message-attachments {\n display: flex;\n width: 100%;\n flex-direction: row;\n gap: 0.75rem\n}\n\n/* user action bar */\n\n.aui-user-action-bar-root {\n display: flex;\n flex-direction: column;\n align-items: flex-end\n}\n\n/* edit composer */\n\n.aui-edit-composer-root {\n margin-top: 1rem;\n margin-bottom: 1rem;\n display: flex;\n width: 100%;\n max-width: 42rem;\n flex-direction: column;\n gap: 0.5rem;\n border-radius: 0.75rem;\n background-color: hsl(var(--aui-muted))\n}\n\n.aui-edit-composer-input {\n display: flex;\n height: 2rem;\n width: 100%;\n resize: none;\n background-color: transparent;\n padding: 1rem;\n padding-bottom: 0px;\n color: hsl(var(--aui-foreground));\n outline: 2px solid transparent;\n outline-offset: 2px\n}\n\n.aui-edit-composer-footer {\n margin-left: 0.75rem;\n margin-right: 0.75rem;\n margin-bottom: 0.75rem;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n align-self: flex-end\n}\n\n/* assistant message */\n\n.aui-assistant-message-root {\n display: grid;\n grid-template-columns: auto auto 1fr;\n grid-template-rows: auto 1fr;\n position: relative;\n width: 100%;\n max-width: 42rem;\n padding-top: 1rem;\n padding-bottom: 1rem\n}\n\n:where(.aui-assistant-message-root) > .aui-avatar-root {\n grid-column-start: 1;\n grid-row: 1 / -1;\n grid-row-start: 1;\n margin-right: 1rem\n}\n\n:where(.aui-assistant-message-root) > .aui-branch-picker-root {\n grid-column-start: 2;\n grid-row-start: 2;\n margin-left: -0.5rem;\n margin-right: 0.5rem\n}\n\n:where(.aui-assistant-message-root) > .aui-assistant-action-bar-root {\n grid-column-start: 3;\n grid-row-start: 2;\n margin-left: -0.25rem\n}\n\n:where(.aui-assistant-message-root) > .aui-assistant-message-content {\n grid-column: span 2 / span 2;\n grid-column-start: 2;\n grid-row-start: 1;\n margin-top: 0.375rem;\n margin-bottom: 0.375rem\n}\n\n.aui-assistant-message-content {\n max-width: 36rem;\n overflow-wrap: break-word;\n line-height: 1.75rem;\n color: hsl(var(--aui-foreground))\n}\n\n/* assistant action bar */\n\n.aui-assistant-action-bar-root {\n display: flex;\n gap: 0.25rem;\n color: hsl(var(--aui-muted-foreground))\n}\n\n:where(.aui-assistant-action-bar-root)[data-floating] {\n position: absolute;\n border-radius: calc(var(--aui-radius) - 2px);\n border-width: 1px;\n background-color: hsl(var(--aui-background));\n padding: 0.25rem;\n --aui-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --aui-shadow-colored: 0 1px 2px 0 var(--aui-shadow-color);\n box-shadow: var(--aui-ring-offset-shadow, 0 0 #0000), var(--aui-ring-shadow, 0 0 #0000), var(--aui-shadow)\n}\n\n:where(.aui-assistant-action-bar-feedback-positive)[data-submitted] {\n --aui-text-opacity: 1;\n color: rgb(22 163 74 / var(--aui-text-opacity, 1))\n}\n\n:where(.aui-assistant-action-bar-feedback-positive)[data-submitted]:hover {\n --aui-text-opacity: 1;\n color: rgb(21 128 61 / var(--aui-text-opacity, 1))\n}\n\n@media (prefers-color-scheme: dark) {\n :where(.aui-assistant-action-bar-feedback-positive)[data-submitted] {\n --aui-text-opacity: 1;\n color: rgb(34 197 94 / var(--aui-text-opacity, 1))\n }\n :where(.aui-assistant-action-bar-feedback-positive)[data-submitted]:hover {\n --aui-text-opacity: 1;\n color: rgb(74 222 128 / var(--aui-text-opacity, 1))\n }\n}\n\n:where(.aui-assistant-action-bar-feedback-negative)[data-submitted] {\n --aui-text-opacity: 1;\n color: rgb(220 38 38 / var(--aui-text-opacity, 1))\n}\n\n:where(.aui-assistant-action-bar-feedback-negative)[data-submitted]:hover {\n --aui-text-opacity: 1;\n color: rgb(185 28 28 / var(--aui-text-opacity, 1))\n}\n\n@media (prefers-color-scheme: dark) {\n :where(.aui-assistant-action-bar-feedback-negative)[data-submitted] {\n --aui-text-opacity: 1;\n color: rgb(239 68 68 / var(--aui-text-opacity, 1))\n }\n :where(.aui-assistant-action-bar-feedback-negative)[data-submitted]:hover {\n --aui-text-opacity: 1;\n color: rgb(248 113 113 / var(--aui-text-opacity, 1))\n }\n}\n\n/* branch picker */\n\n.aui-branch-picker-root {\n display: inline-flex;\n align-items: center;\n font-size: 0.75rem;\n line-height: 1rem;\n color: hsl(var(--aui-muted-foreground))\n}\n\n.aui-branch-picker-state {\n font-weight: 500\n}\n\n/* text */\n\n.aui-text {\n white-space: pre-line\n}\n\n@keyframes aui-pulse {\n 50% {\n opacity: .5\n }\n}\n\n.aui-text-running::after {\n animation: aui-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n font-family: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --aui-content: '\\25CF';\n content: var(--aui-content)\n}\n\n.aui-text-running:where([dir=\"ltr\"], [dir=\"ltr\"] *)::after {\n margin-left: 0.25rem\n}\n\n.aui-text-running:where([dir=\"rtl\"], [dir=\"rtl\"] *)::after {\n margin-right: 0.25rem\n}\n\n/* thread-list */\n\n.aui-thread-list-root {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: 0.375rem\n}\n\n.aui-thread-list-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n border-radius: var(--aui-radius);\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms\n}\n\n.aui-thread-list-item:hover {\n background-color: hsl(var(--aui-muted))\n}\n\n.aui-thread-list-item:focus-visible {\n background-color: hsl(var(--aui-muted));\n outline: 2px solid transparent;\n outline-offset: 2px;\n --aui-ring-offset-shadow: var(--aui-ring-inset) 0 0 0 var(--aui-ring-offset-width) var(--aui-ring-offset-color);\n --aui-ring-shadow: var(--aui-ring-inset) 0 0 0 calc(2px + var(--aui-ring-offset-width)) var(--aui-ring-color);\n box-shadow: var(--aui-ring-offset-shadow), var(--aui-ring-shadow), var(--aui-shadow, 0 0 #0000);\n --aui-ring-color: hsl(var(--aui-ring))\n}\n\n.aui-thread-list-item[data-active] {\n background-color: hsl(var(--aui-muted))\n}\n\n.aui-thread-list-new {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: 0.25rem;\n border-radius: var(--aui-radius);\n padding-left: 0.625rem;\n padding-right: 0.625rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n text-align: start\n}\n\n.aui-thread-list-new:hover {\n background-color: hsl(var(--aui-muted))\n}\n\n.aui-thread-list-new[data-active] {\n background-color: hsl(var(--aui-muted))\n}\n\n.aui-thread-list-new > .lucide-plus {\n width: 1.25rem;\n height: 1.25rem\n}\n\n.aui-thread-list-item-trigger {\n flex-grow: 1;\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n text-align: start\n}\n\n.aui-thread-list-item-title {\n font-size: 0.875rem;\n line-height: 1.25rem\n}\n\n.aui-thread-list-item-archive {\n margin-left: auto;\n margin-right: 0.75rem;\n width: 1rem;\n height: 1rem;\n padding: 0px;\n color: hsl(var(--aui-foreground))\n}\n\n.aui-thread-list-item-archive:hover {\n color: hsl(var(--aui-primary))\n}\n",":root {\n --aui-background: 0 0% 100%;\n --aui-foreground: 240 10% 3.9%;\n\n --aui-card: 0 0% 100%;\n --aui-card-foreground: 240 10% 3.9%;\n\n --aui-popover: 0 0% 100%;\n --aui-popover-foreground: 240 10% 3.9%;\n\n --aui-primary: 240 5.9% 10%;\n --aui-primary-foreground: 0 0% 98%;\n\n --aui-secondary: 240 4.8% 95.9%;\n --aui-secondary-foreground: 240 5.9% 10%;\n\n --aui-muted: 240 4.8% 95.9%;\n --aui-muted-foreground: 240 3.8% 46.1%;\n\n --aui-accent: 240 4.8% 95.9%;\n --aui-accent-foreground: 240 5.9% 10%;\n\n --aui-destructive: 0 84.2% 60.2%;\n --aui-destructive-foreground: 0 0% 98%;\n\n --aui-border: 240 5.9% 90%;\n --aui-input: 240 5.9% 90%;\n --aui-ring: 240 10% 3.9%;\n\n --aui-radius: 0.5rem;\n}\n\n.dark {\n --aui-background: 0 0% 7%;\n --aui-foreground: 0 0% 98%;\n\n --aui-card: 240 10% 3.9%;\n --aui-card-foreground: 0 0% 98%;\n\n --aui-popover: 240 10% 3.9%;\n --aui-popover-foreground: 0 0% 98%;\n\n --aui-primary: 0 0% 98%;\n --aui-primary-foreground: 240 5.9% 10%;\n\n --aui-secondary: 240 3.7% 15.9%;\n --aui-secondary-foreground: 0 0% 98%;\n\n --aui-muted: 240 3.7% 15.9%;\n --aui-muted-foreground: 240 5% 64.9%;\n\n --aui-accent: 240 3.7% 15.9%;\n --aui-accent-foreground: 0 0% 98%;\n\n --aui-destructive: 0 62.8% 30.6%;\n --aui-destructive-foreground: 0 0% 98%;\n\n --aui-border: 240 3.7% 15.9%;\n --aui-input: 240 3.7% 15.9%;\n --aui-ring: 240 4.9% 83.9%;\n}\n"],"mappings":"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","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"assistant-message.d.ts","sourceRoot":"","sources":["../../src/ui/assistant-message.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAiD,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAQjD,QAAA,MAAM,gBAAgB,EAAE,EASvB,CAAC;AA+DF,QAAA,MAAM,OAAO;;;;;;CAIZ,CAAC;wBAKG,OAAO,gBAAgB,GAAG,OAAO,OAAO;AAH7C,wBAG8C"}
1
+ {"version":3,"file":"assistant-message.d.ts","sourceRoot":"","sources":["../../src/ui/assistant-message.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAiD,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAQjD,QAAA,MAAM,gBAAgB,EAAE,EASvB,CAAC;AAgEF,QAAA,MAAM,OAAO;;;;;;CAIZ,CAAC;wBAKG,OAAO,gBAAgB,GAAG,OAAO,OAAO;AAH7C,wBAG8C"}
@@ -84,6 +84,7 @@ var AssistantMessageContent = (0, import_react.forwardRef)(({ components: compon
84
84
  components: {
85
85
  ...componentsProp,
86
86
  Text: componentsProp?.Text ?? components.Text ?? import_content_part.default.Text,
87
+ Empty: componentsProp?.Empty ?? components.Empty,
87
88
  tools: toolsComponents
88
89
  }
89
90
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ui/assistant-message.tsx"],"sourcesContent":["\"use client\";\n\nimport { ComponentPropsWithoutRef, forwardRef, useMemo, type FC } from \"react\";\nimport { MessagePrimitive } from \"../primitives\";\nimport BranchPicker from \"./branch-picker\";\nimport { Avatar } from \"./base/avatar\";\nimport { withDefaults } from \"./utils/withDefaults\";\nimport { useThreadConfig } from \"./thread-config\";\nimport AssistantActionBar from \"./assistant-action-bar\";\nimport ContentPart from \"./content-part\";\n\nconst AssistantMessage: FC = () => {\n return (\n <AssistantMessageRoot>\n <AssistantMessageAvatar />\n <AssistantMessageContent />\n <BranchPicker />\n <AssistantActionBar />\n </AssistantMessageRoot>\n );\n};\n\nAssistantMessage.displayName = \"AssistantMessage\";\n\nconst AssistantMessageAvatar: FC = () => {\n const { assistantAvatar: avatar = { fallback: \"A\" } } = useThreadConfig();\n return <Avatar {...avatar} />;\n};\n\nconst AssistantMessageRoot = withDefaults(MessagePrimitive.Root, {\n className: \"aui-assistant-message-root\",\n});\n\nAssistantMessageRoot.displayName = \"AssistantMessageRoot\";\n\nconst AssistantMessageContentWrapper = withDefaults(\"div\", {\n className: \"aui-assistant-message-content\",\n});\n\nnamespace AssistantMessageContent {\n export type Element = HTMLDivElement;\n export type Props = MessagePrimitive.Content.Props &\n ComponentPropsWithoutRef<\"div\">;\n}\n\nconst AssistantMessageContent = forwardRef<\n AssistantMessageContent.Element,\n AssistantMessageContent.Props\n>(({ components: componentsProp, ...rest }, ref) => {\n const { tools, assistantMessage: { components = {} } = {} } =\n useThreadConfig();\n\n const toolsComponents = useMemo(\n () => ({\n by_name: !tools\n ? undefined\n : Object.fromEntries(\n tools.map((t) => [\n t.unstable_tool.toolName,\n t.unstable_tool.render,\n ]),\n ),\n Fallback: components.ToolFallback,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [...(tools ?? []), components.ToolFallback],\n );\n\n return (\n <AssistantMessageContentWrapper {...rest} ref={ref}>\n <MessagePrimitive.Content\n components={{\n ...componentsProp,\n Text: componentsProp?.Text ?? components.Text ?? ContentPart.Text,\n tools: toolsComponents,\n }}\n />\n </AssistantMessageContentWrapper>\n );\n});\n\nAssistantMessageContent.displayName = \"AssistantMessageContent\";\n\nconst exports = {\n Root: AssistantMessageRoot,\n Avatar: AssistantMessageAvatar,\n Content: AssistantMessageContent,\n};\n\nexport default Object.assign(\n AssistantMessage,\n exports,\n) as typeof AssistantMessage & typeof exports;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAAuE;AACvE,wBAAiC;AACjC,2BAAyB;AACzB,oBAAuB;AACvB,0BAA6B;AAC7B,2BAAgC;AAChC,kCAA+B;AAC/B,0BAAwB;AAIpB;AAFJ,IAAM,mBAAuB,MAAM;AACjC,SACE,6CAAC,wBACC;AAAA,gDAAC,0BAAuB;AAAA,IACxB,4CAAC,2BAAwB;AAAA,IACzB,4CAAC,qBAAAA,SAAA,EAAa;AAAA,IACd,4CAAC,4BAAAC,SAAA,EAAmB;AAAA,KACtB;AAEJ;AAEA,iBAAiB,cAAc;AAE/B,IAAM,yBAA6B,MAAM;AACvC,QAAM,EAAE,iBAAiB,SAAS,EAAE,UAAU,IAAI,EAAE,QAAI,sCAAgB;AACxE,SAAO,4CAAC,wBAAQ,GAAG,QAAQ;AAC7B;AAEA,IAAM,2BAAuB,kCAAa,mCAAiB,MAAM;AAAA,EAC/D,WAAW;AACb,CAAC;AAED,qBAAqB,cAAc;AAEnC,IAAM,qCAAiC,kCAAa,OAAO;AAAA,EACzD,WAAW;AACb,CAAC;AAQD,IAAM,8BAA0B,yBAG9B,CAAC,EAAE,YAAY,gBAAgB,GAAG,KAAK,GAAG,QAAQ;AAClD,QAAM,EAAE,OAAO,kBAAkB,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,EAAE,QACxD,sCAAgB;AAElB,QAAM,sBAAkB;AAAA,IACtB,OAAO;AAAA,MACL,SAAS,CAAC,QACN,SACA,OAAO;AAAA,QACL,MAAM,IAAI,CAAC,MAAM;AAAA,UACf,EAAE,cAAc;AAAA,UAChB,EAAE,cAAc;AAAA,QAClB,CAAC;AAAA,MACH;AAAA,MACJ,UAAU,WAAW;AAAA,IACvB;AAAA;AAAA,IAEA,CAAC,GAAI,SAAS,CAAC,GAAI,WAAW,YAAY;AAAA,EAC5C;AAEA,SACE,4CAAC,kCAAgC,GAAG,MAAM,KACxC;AAAA,IAAC,mCAAiB;AAAA,IAAjB;AAAA,MACC,YAAY;AAAA,QACV,GAAG;AAAA,QACH,MAAM,gBAAgB,QAAQ,WAAW,QAAQ,oBAAAC,QAAY;AAAA,QAC7D,OAAO;AAAA,MACT;AAAA;AAAA,EACF,GACF;AAEJ,CAAC;AAED,wBAAwB,cAAc;AAEtC,IAAMC,WAAU;AAAA,EACd,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS;AACX;AAEA,IAAO,4BAAQ,OAAO;AAAA,EACpB;AAAA,EACAA;AACF;","names":["BranchPicker","AssistantActionBar","ContentPart","exports"]}
1
+ {"version":3,"sources":["../../src/ui/assistant-message.tsx"],"sourcesContent":["\"use client\";\n\nimport { ComponentPropsWithoutRef, forwardRef, useMemo, type FC } from \"react\";\nimport { MessagePrimitive } from \"../primitives\";\nimport BranchPicker from \"./branch-picker\";\nimport { Avatar } from \"./base/avatar\";\nimport { withDefaults } from \"./utils/withDefaults\";\nimport { useThreadConfig } from \"./thread-config\";\nimport AssistantActionBar from \"./assistant-action-bar\";\nimport ContentPart from \"./content-part\";\n\nconst AssistantMessage: FC = () => {\n return (\n <AssistantMessageRoot>\n <AssistantMessageAvatar />\n <AssistantMessageContent />\n <BranchPicker />\n <AssistantActionBar />\n </AssistantMessageRoot>\n );\n};\n\nAssistantMessage.displayName = \"AssistantMessage\";\n\nconst AssistantMessageAvatar: FC = () => {\n const { assistantAvatar: avatar = { fallback: \"A\" } } = useThreadConfig();\n return <Avatar {...avatar} />;\n};\n\nconst AssistantMessageRoot = withDefaults(MessagePrimitive.Root, {\n className: \"aui-assistant-message-root\",\n});\n\nAssistantMessageRoot.displayName = \"AssistantMessageRoot\";\n\nconst AssistantMessageContentWrapper = withDefaults(\"div\", {\n className: \"aui-assistant-message-content\",\n});\n\nnamespace AssistantMessageContent {\n export type Element = HTMLDivElement;\n export type Props = MessagePrimitive.Content.Props &\n ComponentPropsWithoutRef<\"div\">;\n}\n\nconst AssistantMessageContent = forwardRef<\n AssistantMessageContent.Element,\n AssistantMessageContent.Props\n>(({ components: componentsProp, ...rest }, ref) => {\n const { tools, assistantMessage: { components = {} } = {} } =\n useThreadConfig();\n\n const toolsComponents = useMemo(\n () => ({\n by_name: !tools\n ? undefined\n : Object.fromEntries(\n tools.map((t) => [\n t.unstable_tool.toolName,\n t.unstable_tool.render,\n ]),\n ),\n Fallback: components.ToolFallback,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [...(tools ?? []), components.ToolFallback],\n );\n\n return (\n <AssistantMessageContentWrapper {...rest} ref={ref}>\n <MessagePrimitive.Content\n components={{\n ...componentsProp,\n Text: componentsProp?.Text ?? components.Text ?? ContentPart.Text,\n Empty: componentsProp?.Empty ?? components.Empty,\n tools: toolsComponents,\n }}\n />\n </AssistantMessageContentWrapper>\n );\n});\n\nAssistantMessageContent.displayName = \"AssistantMessageContent\";\n\nconst exports = {\n Root: AssistantMessageRoot,\n Avatar: AssistantMessageAvatar,\n Content: AssistantMessageContent,\n};\n\nexport default Object.assign(\n AssistantMessage,\n exports,\n) as typeof AssistantMessage & typeof exports;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAAuE;AACvE,wBAAiC;AACjC,2BAAyB;AACzB,oBAAuB;AACvB,0BAA6B;AAC7B,2BAAgC;AAChC,kCAA+B;AAC/B,0BAAwB;AAIpB;AAFJ,IAAM,mBAAuB,MAAM;AACjC,SACE,6CAAC,wBACC;AAAA,gDAAC,0BAAuB;AAAA,IACxB,4CAAC,2BAAwB;AAAA,IACzB,4CAAC,qBAAAA,SAAA,EAAa;AAAA,IACd,4CAAC,4BAAAC,SAAA,EAAmB;AAAA,KACtB;AAEJ;AAEA,iBAAiB,cAAc;AAE/B,IAAM,yBAA6B,MAAM;AACvC,QAAM,EAAE,iBAAiB,SAAS,EAAE,UAAU,IAAI,EAAE,QAAI,sCAAgB;AACxE,SAAO,4CAAC,wBAAQ,GAAG,QAAQ;AAC7B;AAEA,IAAM,2BAAuB,kCAAa,mCAAiB,MAAM;AAAA,EAC/D,WAAW;AACb,CAAC;AAED,qBAAqB,cAAc;AAEnC,IAAM,qCAAiC,kCAAa,OAAO;AAAA,EACzD,WAAW;AACb,CAAC;AAQD,IAAM,8BAA0B,yBAG9B,CAAC,EAAE,YAAY,gBAAgB,GAAG,KAAK,GAAG,QAAQ;AAClD,QAAM,EAAE,OAAO,kBAAkB,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,EAAE,QACxD,sCAAgB;AAElB,QAAM,sBAAkB;AAAA,IACtB,OAAO;AAAA,MACL,SAAS,CAAC,QACN,SACA,OAAO;AAAA,QACL,MAAM,IAAI,CAAC,MAAM;AAAA,UACf,EAAE,cAAc;AAAA,UAChB,EAAE,cAAc;AAAA,QAClB,CAAC;AAAA,MACH;AAAA,MACJ,UAAU,WAAW;AAAA,IACvB;AAAA;AAAA,IAEA,CAAC,GAAI,SAAS,CAAC,GAAI,WAAW,YAAY;AAAA,EAC5C;AAEA,SACE,4CAAC,kCAAgC,GAAG,MAAM,KACxC;AAAA,IAAC,mCAAiB;AAAA,IAAjB;AAAA,MACC,YAAY;AAAA,QACV,GAAG;AAAA,QACH,MAAM,gBAAgB,QAAQ,WAAW,QAAQ,oBAAAC,QAAY;AAAA,QAC7D,OAAO,gBAAgB,SAAS,WAAW;AAAA,QAC3C,OAAO;AAAA,MACT;AAAA;AAAA,EACF,GACF;AAEJ,CAAC;AAED,wBAAwB,cAAc;AAEtC,IAAMC,WAAU;AAAA,EACd,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS;AACX;AAEA,IAAO,4BAAQ,OAAO;AAAA,EACpB;AAAA,EACAA;AACF;","names":["BranchPicker","AssistantActionBar","ContentPart","exports"]}
@@ -51,6 +51,7 @@ var AssistantMessageContent = forwardRef(({ components: componentsProp, ...rest
51
51
  components: {
52
52
  ...componentsProp,
53
53
  Text: componentsProp?.Text ?? components.Text ?? ContentPart.Text,
54
+ Empty: componentsProp?.Empty ?? components.Empty,
54
55
  tools: toolsComponents
55
56
  }
56
57
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ui/assistant-message.tsx"],"sourcesContent":["\"use client\";\n\nimport { ComponentPropsWithoutRef, forwardRef, useMemo, type FC } from \"react\";\nimport { MessagePrimitive } from \"../primitives\";\nimport BranchPicker from \"./branch-picker\";\nimport { Avatar } from \"./base/avatar\";\nimport { withDefaults } from \"./utils/withDefaults\";\nimport { useThreadConfig } from \"./thread-config\";\nimport AssistantActionBar from \"./assistant-action-bar\";\nimport ContentPart from \"./content-part\";\n\nconst AssistantMessage: FC = () => {\n return (\n <AssistantMessageRoot>\n <AssistantMessageAvatar />\n <AssistantMessageContent />\n <BranchPicker />\n <AssistantActionBar />\n </AssistantMessageRoot>\n );\n};\n\nAssistantMessage.displayName = \"AssistantMessage\";\n\nconst AssistantMessageAvatar: FC = () => {\n const { assistantAvatar: avatar = { fallback: \"A\" } } = useThreadConfig();\n return <Avatar {...avatar} />;\n};\n\nconst AssistantMessageRoot = withDefaults(MessagePrimitive.Root, {\n className: \"aui-assistant-message-root\",\n});\n\nAssistantMessageRoot.displayName = \"AssistantMessageRoot\";\n\nconst AssistantMessageContentWrapper = withDefaults(\"div\", {\n className: \"aui-assistant-message-content\",\n});\n\nnamespace AssistantMessageContent {\n export type Element = HTMLDivElement;\n export type Props = MessagePrimitive.Content.Props &\n ComponentPropsWithoutRef<\"div\">;\n}\n\nconst AssistantMessageContent = forwardRef<\n AssistantMessageContent.Element,\n AssistantMessageContent.Props\n>(({ components: componentsProp, ...rest }, ref) => {\n const { tools, assistantMessage: { components = {} } = {} } =\n useThreadConfig();\n\n const toolsComponents = useMemo(\n () => ({\n by_name: !tools\n ? undefined\n : Object.fromEntries(\n tools.map((t) => [\n t.unstable_tool.toolName,\n t.unstable_tool.render,\n ]),\n ),\n Fallback: components.ToolFallback,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [...(tools ?? []), components.ToolFallback],\n );\n\n return (\n <AssistantMessageContentWrapper {...rest} ref={ref}>\n <MessagePrimitive.Content\n components={{\n ...componentsProp,\n Text: componentsProp?.Text ?? components.Text ?? ContentPart.Text,\n tools: toolsComponents,\n }}\n />\n </AssistantMessageContentWrapper>\n );\n});\n\nAssistantMessageContent.displayName = \"AssistantMessageContent\";\n\nconst exports = {\n Root: AssistantMessageRoot,\n Avatar: AssistantMessageAvatar,\n Content: AssistantMessageContent,\n};\n\nexport default Object.assign(\n AssistantMessage,\n exports,\n) as typeof AssistantMessage & typeof exports;\n"],"mappings":";;;AAEA,SAAmC,YAAY,eAAwB;AACvE,SAAS,wBAAwB;AACjC,OAAO,kBAAkB;AACzB,SAAS,cAAc;AACvB,SAAS,oBAAoB;AAC7B,SAAS,uBAAuB;AAChC,OAAO,wBAAwB;AAC/B,OAAO,iBAAiB;AAIpB,SACE,KADF;AAFJ,IAAM,mBAAuB,MAAM;AACjC,SACE,qBAAC,wBACC;AAAA,wBAAC,0BAAuB;AAAA,IACxB,oBAAC,2BAAwB;AAAA,IACzB,oBAAC,gBAAa;AAAA,IACd,oBAAC,sBAAmB;AAAA,KACtB;AAEJ;AAEA,iBAAiB,cAAc;AAE/B,IAAM,yBAA6B,MAAM;AACvC,QAAM,EAAE,iBAAiB,SAAS,EAAE,UAAU,IAAI,EAAE,IAAI,gBAAgB;AACxE,SAAO,oBAAC,UAAQ,GAAG,QAAQ;AAC7B;AAEA,IAAM,uBAAuB,aAAa,iBAAiB,MAAM;AAAA,EAC/D,WAAW;AACb,CAAC;AAED,qBAAqB,cAAc;AAEnC,IAAM,iCAAiC,aAAa,OAAO;AAAA,EACzD,WAAW;AACb,CAAC;AAQD,IAAM,0BAA0B,WAG9B,CAAC,EAAE,YAAY,gBAAgB,GAAG,KAAK,GAAG,QAAQ;AAClD,QAAM,EAAE,OAAO,kBAAkB,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,EAAE,IACxD,gBAAgB;AAElB,QAAM,kBAAkB;AAAA,IACtB,OAAO;AAAA,MACL,SAAS,CAAC,QACN,SACA,OAAO;AAAA,QACL,MAAM,IAAI,CAAC,MAAM;AAAA,UACf,EAAE,cAAc;AAAA,UAChB,EAAE,cAAc;AAAA,QAClB,CAAC;AAAA,MACH;AAAA,MACJ,UAAU,WAAW;AAAA,IACvB;AAAA;AAAA,IAEA,CAAC,GAAI,SAAS,CAAC,GAAI,WAAW,YAAY;AAAA,EAC5C;AAEA,SACE,oBAAC,kCAAgC,GAAG,MAAM,KACxC;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC,YAAY;AAAA,QACV,GAAG;AAAA,QACH,MAAM,gBAAgB,QAAQ,WAAW,QAAQ,YAAY;AAAA,QAC7D,OAAO;AAAA,MACT;AAAA;AAAA,EACF,GACF;AAEJ,CAAC;AAED,wBAAwB,cAAc;AAEtC,IAAM,UAAU;AAAA,EACd,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS;AACX;AAEA,IAAO,4BAAQ,OAAO;AAAA,EACpB;AAAA,EACA;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/ui/assistant-message.tsx"],"sourcesContent":["\"use client\";\n\nimport { ComponentPropsWithoutRef, forwardRef, useMemo, type FC } from \"react\";\nimport { MessagePrimitive } from \"../primitives\";\nimport BranchPicker from \"./branch-picker\";\nimport { Avatar } from \"./base/avatar\";\nimport { withDefaults } from \"./utils/withDefaults\";\nimport { useThreadConfig } from \"./thread-config\";\nimport AssistantActionBar from \"./assistant-action-bar\";\nimport ContentPart from \"./content-part\";\n\nconst AssistantMessage: FC = () => {\n return (\n <AssistantMessageRoot>\n <AssistantMessageAvatar />\n <AssistantMessageContent />\n <BranchPicker />\n <AssistantActionBar />\n </AssistantMessageRoot>\n );\n};\n\nAssistantMessage.displayName = \"AssistantMessage\";\n\nconst AssistantMessageAvatar: FC = () => {\n const { assistantAvatar: avatar = { fallback: \"A\" } } = useThreadConfig();\n return <Avatar {...avatar} />;\n};\n\nconst AssistantMessageRoot = withDefaults(MessagePrimitive.Root, {\n className: \"aui-assistant-message-root\",\n});\n\nAssistantMessageRoot.displayName = \"AssistantMessageRoot\";\n\nconst AssistantMessageContentWrapper = withDefaults(\"div\", {\n className: \"aui-assistant-message-content\",\n});\n\nnamespace AssistantMessageContent {\n export type Element = HTMLDivElement;\n export type Props = MessagePrimitive.Content.Props &\n ComponentPropsWithoutRef<\"div\">;\n}\n\nconst AssistantMessageContent = forwardRef<\n AssistantMessageContent.Element,\n AssistantMessageContent.Props\n>(({ components: componentsProp, ...rest }, ref) => {\n const { tools, assistantMessage: { components = {} } = {} } =\n useThreadConfig();\n\n const toolsComponents = useMemo(\n () => ({\n by_name: !tools\n ? undefined\n : Object.fromEntries(\n tools.map((t) => [\n t.unstable_tool.toolName,\n t.unstable_tool.render,\n ]),\n ),\n Fallback: components.ToolFallback,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [...(tools ?? []), components.ToolFallback],\n );\n\n return (\n <AssistantMessageContentWrapper {...rest} ref={ref}>\n <MessagePrimitive.Content\n components={{\n ...componentsProp,\n Text: componentsProp?.Text ?? components.Text ?? ContentPart.Text,\n Empty: componentsProp?.Empty ?? components.Empty,\n tools: toolsComponents,\n }}\n />\n </AssistantMessageContentWrapper>\n );\n});\n\nAssistantMessageContent.displayName = \"AssistantMessageContent\";\n\nconst exports = {\n Root: AssistantMessageRoot,\n Avatar: AssistantMessageAvatar,\n Content: AssistantMessageContent,\n};\n\nexport default Object.assign(\n AssistantMessage,\n exports,\n) as typeof AssistantMessage & typeof exports;\n"],"mappings":";;;AAEA,SAAmC,YAAY,eAAwB;AACvE,SAAS,wBAAwB;AACjC,OAAO,kBAAkB;AACzB,SAAS,cAAc;AACvB,SAAS,oBAAoB;AAC7B,SAAS,uBAAuB;AAChC,OAAO,wBAAwB;AAC/B,OAAO,iBAAiB;AAIpB,SACE,KADF;AAFJ,IAAM,mBAAuB,MAAM;AACjC,SACE,qBAAC,wBACC;AAAA,wBAAC,0BAAuB;AAAA,IACxB,oBAAC,2BAAwB;AAAA,IACzB,oBAAC,gBAAa;AAAA,IACd,oBAAC,sBAAmB;AAAA,KACtB;AAEJ;AAEA,iBAAiB,cAAc;AAE/B,IAAM,yBAA6B,MAAM;AACvC,QAAM,EAAE,iBAAiB,SAAS,EAAE,UAAU,IAAI,EAAE,IAAI,gBAAgB;AACxE,SAAO,oBAAC,UAAQ,GAAG,QAAQ;AAC7B;AAEA,IAAM,uBAAuB,aAAa,iBAAiB,MAAM;AAAA,EAC/D,WAAW;AACb,CAAC;AAED,qBAAqB,cAAc;AAEnC,IAAM,iCAAiC,aAAa,OAAO;AAAA,EACzD,WAAW;AACb,CAAC;AAQD,IAAM,0BAA0B,WAG9B,CAAC,EAAE,YAAY,gBAAgB,GAAG,KAAK,GAAG,QAAQ;AAClD,QAAM,EAAE,OAAO,kBAAkB,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,EAAE,IACxD,gBAAgB;AAElB,QAAM,kBAAkB;AAAA,IACtB,OAAO;AAAA,MACL,SAAS,CAAC,QACN,SACA,OAAO;AAAA,QACL,MAAM,IAAI,CAAC,MAAM;AAAA,UACf,EAAE,cAAc;AAAA,UAChB,EAAE,cAAc;AAAA,QAClB,CAAC;AAAA,MACH;AAAA,MACJ,UAAU,WAAW;AAAA,IACvB;AAAA;AAAA,IAEA,CAAC,GAAI,SAAS,CAAC,GAAI,WAAW,YAAY;AAAA,EAC5C;AAEA,SACE,oBAAC,kCAAgC,GAAG,MAAM,KACxC;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC,YAAY;AAAA,QACV,GAAG;AAAA,QACH,MAAM,gBAAgB,QAAQ,WAAW,QAAQ,YAAY;AAAA,QAC7D,OAAO,gBAAgB,SAAS,WAAW;AAAA,QAC3C,OAAO;AAAA,MACT;AAAA;AAAA,EACF,GACF;AAEJ,CAAC;AAED,wBAAwB,cAAc;AAEtC,IAAM,UAAU;AAAA,EACd,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS;AACX;AAEA,IAAO,4BAAQ,OAAO;AAAA,EACpB;AAAA,EACA;AACF;","names":[]}
@@ -1,7 +1,7 @@
1
1
  import { ComponentType, FC, PropsWithChildren, ReactNode } from "react";
2
2
  import { AssistantRuntime } from "../api/AssistantRuntime";
3
3
  import { AvatarProps } from "./base/avatar";
4
- import { TextContentPartComponent, ToolCallContentPartProps } from "../types";
4
+ import { EmptyContentPartComponent, TextContentPartComponent, ToolCallContentPartProps } from "../types";
5
5
  import { AssistantToolUI } from "../model-config";
6
6
  export type SuggestionConfig = {
7
7
  text?: ReactNode | undefined;
@@ -22,6 +22,7 @@ export type AssistantMessageConfig = {
22
22
  allowFeedbackNegative?: boolean | undefined;
23
23
  components?: {
24
24
  Text?: TextContentPartComponent | undefined;
25
+ Empty?: EmptyContentPartComponent | undefined;
25
26
  ToolFallback?: ComponentType<ToolCallContentPartProps> | undefined;
26
27
  } | undefined;
27
28
  };
@@ -1 +1 @@
1
- {"version":3,"file":"thread-config.d.ts","sourceRoot":"","sources":["../../src/ui/thread-config.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"thread-config.d.ts","sourceRoot":"","sources":["../../src/ui/thread-config.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ui/thread-config.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n ComponentType,\n FC,\n PropsWithChildren,\n ReactNode,\n createContext,\n useContext,\n} from \"react\";\n\nimport { AssistantRuntime } from \"../api/AssistantRuntime\";\nimport { AvatarProps } from \"./base/avatar\";\nimport { TextContentPartComponent, ToolCallContentPartProps } from \"../types\";\nimport { AssistantRuntimeProvider } from \"../context\";\nimport { AssistantToolUI } from \"../model-config\";\nimport { useAssistantRuntime } from \"../context/react/AssistantContext\";\n\nexport type SuggestionConfig = {\n text?: ReactNode | undefined;\n prompt: string;\n};\n\nexport type ThreadWelcomeConfig = {\n message?: string | null | undefined;\n suggestions?: SuggestionConfig[] | undefined;\n};\n\nexport type UserMessageConfig = {\n allowEdit?: boolean | undefined;\n};\n\nexport type AssistantMessageConfig = {\n allowReload?: boolean | undefined;\n allowCopy?: boolean | undefined;\n allowSpeak?: boolean | undefined;\n allowFeedbackPositive?: boolean | undefined;\n allowFeedbackNegative?: boolean | undefined;\n components?:\n | {\n Text?: TextContentPartComponent | undefined;\n ToolFallback?: ComponentType<ToolCallContentPartProps> | undefined;\n }\n | undefined;\n};\n\nexport type BranchPickerConfig = {\n allowBranchPicker?: boolean | undefined;\n};\n\nexport type ComposerConfig = {\n allowAttachments?: boolean | undefined;\n};\n\nexport type StringsConfig = {\n assistantModal?: {\n open: {\n button: {\n tooltip?: string | undefined;\n };\n };\n closed: {\n button: {\n tooltip?: string | undefined;\n };\n };\n };\n threadList?: {\n new?: {\n label?: string | undefined;\n };\n item?: {\n title?: {\n fallback?: string | undefined;\n };\n archive?: {\n tooltip?: string | undefined;\n };\n };\n };\n thread?: {\n scrollToBottom?: {\n tooltip?: string | undefined;\n };\n };\n welcome?: {\n message?: string | undefined;\n };\n userMessage?: {\n edit?: {\n tooltip?: string | undefined;\n };\n };\n assistantMessage?: {\n reload?: {\n tooltip?: string | undefined;\n };\n copy?: {\n tooltip?: string | undefined;\n };\n speak?: {\n tooltip?: string | undefined;\n stop?: {\n tooltip?: string | undefined;\n };\n };\n feedback?: {\n positive?: {\n tooltip?: string | undefined;\n };\n negative?: {\n tooltip?: string | undefined;\n };\n };\n };\n branchPicker?: {\n previous?: {\n tooltip?: string | undefined;\n };\n next?: {\n tooltip?: string | undefined;\n };\n };\n composer?: {\n send?:\n | {\n tooltip?: string | undefined;\n }\n | undefined;\n cancel?:\n | {\n tooltip?: string | undefined;\n }\n | undefined;\n addAttachment?:\n | {\n tooltip?: string | undefined;\n }\n | undefined;\n removeAttachment?: {\n tooltip?: string | undefined;\n };\n input?: {\n placeholder?: string | undefined;\n };\n };\n editComposer?: {\n send?: {\n label?: string | undefined;\n };\n cancel?: {\n label?: string | undefined;\n };\n };\n code?: {\n header?: {\n copy?: {\n tooltip?: string | undefined;\n };\n };\n };\n};\n\nconst ThreadConfigContext = createContext<ThreadConfig>({});\n\nexport type ThreadConfig = {\n runtime?: AssistantRuntime | undefined;\n\n assistantAvatar?: AvatarProps | undefined;\n\n welcome?: ThreadWelcomeConfig | undefined;\n assistantMessage?: AssistantMessageConfig | undefined;\n userMessage?: UserMessageConfig | undefined;\n\n branchPicker?: BranchPickerConfig | undefined;\n\n composer?: ComposerConfig | undefined;\n\n strings?: StringsConfig | undefined;\n\n tools?: AssistantToolUI[] | undefined; // TODO add AssistantTool support\n\n components?:\n | {\n UserMessage?: ComponentType | undefined;\n AssistantMessage?: ComponentType | undefined;\n EditComposer?: ComponentType | undefined;\n Composer?: ComponentType | undefined;\n ThreadWelcome?: ComponentType | undefined;\n }\n | undefined;\n};\n\nexport const useThreadConfig = (): Omit<ThreadConfig, \"runtime\"> => {\n return useContext(ThreadConfigContext);\n};\n\nexport type ThreadConfigProviderProps = PropsWithChildren<{\n config?: ThreadConfig | undefined;\n}>;\n\nexport const ThreadConfigProvider: FC<ThreadConfigProviderProps> = ({\n children,\n config,\n}) => {\n const hasAssistant = !!useAssistantRuntime({ optional: true });\n\n const hasConfig = config && Object.keys(config).length > 0;\n const outerConfig = useThreadConfig();\n\n if (hasConfig && Object.keys(outerConfig).length > 0) {\n throw new Error(\n \"You are providing ThreadConfig to several nested components. Please provide all configuration to the same component.\",\n );\n }\n\n const configProvider = hasConfig ? (\n <ThreadConfigContext.Provider value={config}>\n {children}\n </ThreadConfigContext.Provider>\n ) : (\n <>{children}</>\n );\n\n if (!config?.runtime) return configProvider;\n\n if (hasAssistant) {\n throw new Error(\n \"You provided a runtime to <Thread> while simulataneously using <AssistantRuntimeProvider>. This is not allowed.\",\n );\n }\n return (\n <AssistantRuntimeProvider runtime={config.runtime}>\n {configProvider}\n </AssistantRuntimeProvider>\n );\n};\n\nThreadConfigProvider.displayName = \"ThreadConfigProvider\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAOO;AAKP,qBAAyC;AAEzC,8BAAoC;AAyMhC;AAtDJ,IAAM,0BAAsB,4BAA4B,CAAC,CAAC;AA8BnD,IAAM,kBAAkB,MAAqC;AAClE,aAAO,yBAAW,mBAAmB;AACvC;AAMO,IAAM,uBAAsD,CAAC;AAAA,EAClE;AAAA,EACA;AACF,MAAM;AACJ,QAAM,eAAe,CAAC,KAAC,6CAAoB,EAAE,UAAU,KAAK,CAAC;AAE7D,QAAM,YAAY,UAAU,OAAO,KAAK,MAAM,EAAE,SAAS;AACzD,QAAM,cAAc,gBAAgB;AAEpC,MAAI,aAAa,OAAO,KAAK,WAAW,EAAE,SAAS,GAAG;AACpD,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,iBAAiB,YACrB,4CAAC,oBAAoB,UAApB,EAA6B,OAAO,QAClC,UACH,IAEA,2EAAG,UAAS;AAGd,MAAI,CAAC,QAAQ,QAAS,QAAO;AAE7B,MAAI,cAAc;AAChB,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SACE,4CAAC,2CAAyB,SAAS,OAAO,SACvC,0BACH;AAEJ;AAEA,qBAAqB,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../src/ui/thread-config.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n ComponentType,\n FC,\n PropsWithChildren,\n ReactNode,\n createContext,\n useContext,\n} from \"react\";\n\nimport { AssistantRuntime } from \"../api/AssistantRuntime\";\nimport { AvatarProps } from \"./base/avatar\";\nimport {\n EmptyContentPartComponent,\n TextContentPartComponent,\n ToolCallContentPartProps,\n} from \"../types\";\nimport { AssistantRuntimeProvider } from \"../context\";\nimport { AssistantToolUI } from \"../model-config\";\nimport { useAssistantRuntime } from \"../context/react/AssistantContext\";\n\nexport type SuggestionConfig = {\n text?: ReactNode | undefined;\n prompt: string;\n};\n\nexport type ThreadWelcomeConfig = {\n message?: string | null | undefined;\n suggestions?: SuggestionConfig[] | undefined;\n};\n\nexport type UserMessageConfig = {\n allowEdit?: boolean | undefined;\n};\n\nexport type AssistantMessageConfig = {\n allowReload?: boolean | undefined;\n allowCopy?: boolean | undefined;\n allowSpeak?: boolean | undefined;\n allowFeedbackPositive?: boolean | undefined;\n allowFeedbackNegative?: boolean | undefined;\n components?:\n | {\n Text?: TextContentPartComponent | undefined;\n Empty?: EmptyContentPartComponent | undefined;\n ToolFallback?: ComponentType<ToolCallContentPartProps> | undefined;\n }\n | undefined;\n};\n\nexport type BranchPickerConfig = {\n allowBranchPicker?: boolean | undefined;\n};\n\nexport type ComposerConfig = {\n allowAttachments?: boolean | undefined;\n};\n\nexport type StringsConfig = {\n assistantModal?: {\n open: {\n button: {\n tooltip?: string | undefined;\n };\n };\n closed: {\n button: {\n tooltip?: string | undefined;\n };\n };\n };\n threadList?: {\n new?: {\n label?: string | undefined;\n };\n item?: {\n title?: {\n fallback?: string | undefined;\n };\n archive?: {\n tooltip?: string | undefined;\n };\n };\n };\n thread?: {\n scrollToBottom?: {\n tooltip?: string | undefined;\n };\n };\n welcome?: {\n message?: string | undefined;\n };\n userMessage?: {\n edit?: {\n tooltip?: string | undefined;\n };\n };\n assistantMessage?: {\n reload?: {\n tooltip?: string | undefined;\n };\n copy?: {\n tooltip?: string | undefined;\n };\n speak?: {\n tooltip?: string | undefined;\n stop?: {\n tooltip?: string | undefined;\n };\n };\n feedback?: {\n positive?: {\n tooltip?: string | undefined;\n };\n negative?: {\n tooltip?: string | undefined;\n };\n };\n };\n branchPicker?: {\n previous?: {\n tooltip?: string | undefined;\n };\n next?: {\n tooltip?: string | undefined;\n };\n };\n composer?: {\n send?:\n | {\n tooltip?: string | undefined;\n }\n | undefined;\n cancel?:\n | {\n tooltip?: string | undefined;\n }\n | undefined;\n addAttachment?:\n | {\n tooltip?: string | undefined;\n }\n | undefined;\n removeAttachment?: {\n tooltip?: string | undefined;\n };\n input?: {\n placeholder?: string | undefined;\n };\n };\n editComposer?: {\n send?: {\n label?: string | undefined;\n };\n cancel?: {\n label?: string | undefined;\n };\n };\n code?: {\n header?: {\n copy?: {\n tooltip?: string | undefined;\n };\n };\n };\n};\n\nconst ThreadConfigContext = createContext<ThreadConfig>({});\n\nexport type ThreadConfig = {\n runtime?: AssistantRuntime | undefined;\n\n assistantAvatar?: AvatarProps | undefined;\n\n welcome?: ThreadWelcomeConfig | undefined;\n assistantMessage?: AssistantMessageConfig | undefined;\n userMessage?: UserMessageConfig | undefined;\n\n branchPicker?: BranchPickerConfig | undefined;\n\n composer?: ComposerConfig | undefined;\n\n strings?: StringsConfig | undefined;\n\n tools?: AssistantToolUI[] | undefined; // TODO add AssistantTool support\n\n components?:\n | {\n UserMessage?: ComponentType | undefined;\n AssistantMessage?: ComponentType | undefined;\n EditComposer?: ComponentType | undefined;\n Composer?: ComponentType | undefined;\n ThreadWelcome?: ComponentType | undefined;\n }\n | undefined;\n};\n\nexport const useThreadConfig = (): Omit<ThreadConfig, \"runtime\"> => {\n return useContext(ThreadConfigContext);\n};\n\nexport type ThreadConfigProviderProps = PropsWithChildren<{\n config?: ThreadConfig | undefined;\n}>;\n\nexport const ThreadConfigProvider: FC<ThreadConfigProviderProps> = ({\n children,\n config,\n}) => {\n const hasAssistant = !!useAssistantRuntime({ optional: true });\n\n const hasConfig = config && Object.keys(config).length > 0;\n const outerConfig = useThreadConfig();\n\n if (hasConfig && Object.keys(outerConfig).length > 0) {\n throw new Error(\n \"You are providing ThreadConfig to several nested components. Please provide all configuration to the same component.\",\n );\n }\n\n const configProvider = hasConfig ? (\n <ThreadConfigContext.Provider value={config}>\n {children}\n </ThreadConfigContext.Provider>\n ) : (\n <>{children}</>\n );\n\n if (!config?.runtime) return configProvider;\n\n if (hasAssistant) {\n throw new Error(\n \"You provided a runtime to <Thread> while simulataneously using <AssistantRuntimeProvider>. This is not allowed.\",\n );\n }\n return (\n <AssistantRuntimeProvider runtime={config.runtime}>\n {configProvider}\n </AssistantRuntimeProvider>\n );\n};\n\nThreadConfigProvider.displayName = \"ThreadConfigProvider\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAOO;AASP,qBAAyC;AAEzC,8BAAoC;AA0MhC;AAtDJ,IAAM,0BAAsB,4BAA4B,CAAC,CAAC;AA8BnD,IAAM,kBAAkB,MAAqC;AAClE,aAAO,yBAAW,mBAAmB;AACvC;AAMO,IAAM,uBAAsD,CAAC;AAAA,EAClE;AAAA,EACA;AACF,MAAM;AACJ,QAAM,eAAe,CAAC,KAAC,6CAAoB,EAAE,UAAU,KAAK,CAAC;AAE7D,QAAM,YAAY,UAAU,OAAO,KAAK,MAAM,EAAE,SAAS;AACzD,QAAM,cAAc,gBAAgB;AAEpC,MAAI,aAAa,OAAO,KAAK,WAAW,EAAE,SAAS,GAAG;AACpD,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,iBAAiB,YACrB,4CAAC,oBAAoB,UAApB,EAA6B,OAAO,QAClC,UACH,IAEA,2EAAG,UAAS;AAGd,MAAI,CAAC,QAAQ,QAAS,QAAO;AAE7B,MAAI,cAAc;AAChB,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SACE,4CAAC,2CAAyB,SAAS,OAAO,SACvC,0BACH;AAEJ;AAEA,qBAAqB,cAAc;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ui/thread-config.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n ComponentType,\n FC,\n PropsWithChildren,\n ReactNode,\n createContext,\n useContext,\n} from \"react\";\n\nimport { AssistantRuntime } from \"../api/AssistantRuntime\";\nimport { AvatarProps } from \"./base/avatar\";\nimport { TextContentPartComponent, ToolCallContentPartProps } from \"../types\";\nimport { AssistantRuntimeProvider } from \"../context\";\nimport { AssistantToolUI } from \"../model-config\";\nimport { useAssistantRuntime } from \"../context/react/AssistantContext\";\n\nexport type SuggestionConfig = {\n text?: ReactNode | undefined;\n prompt: string;\n};\n\nexport type ThreadWelcomeConfig = {\n message?: string | null | undefined;\n suggestions?: SuggestionConfig[] | undefined;\n};\n\nexport type UserMessageConfig = {\n allowEdit?: boolean | undefined;\n};\n\nexport type AssistantMessageConfig = {\n allowReload?: boolean | undefined;\n allowCopy?: boolean | undefined;\n allowSpeak?: boolean | undefined;\n allowFeedbackPositive?: boolean | undefined;\n allowFeedbackNegative?: boolean | undefined;\n components?:\n | {\n Text?: TextContentPartComponent | undefined;\n ToolFallback?: ComponentType<ToolCallContentPartProps> | undefined;\n }\n | undefined;\n};\n\nexport type BranchPickerConfig = {\n allowBranchPicker?: boolean | undefined;\n};\n\nexport type ComposerConfig = {\n allowAttachments?: boolean | undefined;\n};\n\nexport type StringsConfig = {\n assistantModal?: {\n open: {\n button: {\n tooltip?: string | undefined;\n };\n };\n closed: {\n button: {\n tooltip?: string | undefined;\n };\n };\n };\n threadList?: {\n new?: {\n label?: string | undefined;\n };\n item?: {\n title?: {\n fallback?: string | undefined;\n };\n archive?: {\n tooltip?: string | undefined;\n };\n };\n };\n thread?: {\n scrollToBottom?: {\n tooltip?: string | undefined;\n };\n };\n welcome?: {\n message?: string | undefined;\n };\n userMessage?: {\n edit?: {\n tooltip?: string | undefined;\n };\n };\n assistantMessage?: {\n reload?: {\n tooltip?: string | undefined;\n };\n copy?: {\n tooltip?: string | undefined;\n };\n speak?: {\n tooltip?: string | undefined;\n stop?: {\n tooltip?: string | undefined;\n };\n };\n feedback?: {\n positive?: {\n tooltip?: string | undefined;\n };\n negative?: {\n tooltip?: string | undefined;\n };\n };\n };\n branchPicker?: {\n previous?: {\n tooltip?: string | undefined;\n };\n next?: {\n tooltip?: string | undefined;\n };\n };\n composer?: {\n send?:\n | {\n tooltip?: string | undefined;\n }\n | undefined;\n cancel?:\n | {\n tooltip?: string | undefined;\n }\n | undefined;\n addAttachment?:\n | {\n tooltip?: string | undefined;\n }\n | undefined;\n removeAttachment?: {\n tooltip?: string | undefined;\n };\n input?: {\n placeholder?: string | undefined;\n };\n };\n editComposer?: {\n send?: {\n label?: string | undefined;\n };\n cancel?: {\n label?: string | undefined;\n };\n };\n code?: {\n header?: {\n copy?: {\n tooltip?: string | undefined;\n };\n };\n };\n};\n\nconst ThreadConfigContext = createContext<ThreadConfig>({});\n\nexport type ThreadConfig = {\n runtime?: AssistantRuntime | undefined;\n\n assistantAvatar?: AvatarProps | undefined;\n\n welcome?: ThreadWelcomeConfig | undefined;\n assistantMessage?: AssistantMessageConfig | undefined;\n userMessage?: UserMessageConfig | undefined;\n\n branchPicker?: BranchPickerConfig | undefined;\n\n composer?: ComposerConfig | undefined;\n\n strings?: StringsConfig | undefined;\n\n tools?: AssistantToolUI[] | undefined; // TODO add AssistantTool support\n\n components?:\n | {\n UserMessage?: ComponentType | undefined;\n AssistantMessage?: ComponentType | undefined;\n EditComposer?: ComponentType | undefined;\n Composer?: ComponentType | undefined;\n ThreadWelcome?: ComponentType | undefined;\n }\n | undefined;\n};\n\nexport const useThreadConfig = (): Omit<ThreadConfig, \"runtime\"> => {\n return useContext(ThreadConfigContext);\n};\n\nexport type ThreadConfigProviderProps = PropsWithChildren<{\n config?: ThreadConfig | undefined;\n}>;\n\nexport const ThreadConfigProvider: FC<ThreadConfigProviderProps> = ({\n children,\n config,\n}) => {\n const hasAssistant = !!useAssistantRuntime({ optional: true });\n\n const hasConfig = config && Object.keys(config).length > 0;\n const outerConfig = useThreadConfig();\n\n if (hasConfig && Object.keys(outerConfig).length > 0) {\n throw new Error(\n \"You are providing ThreadConfig to several nested components. Please provide all configuration to the same component.\",\n );\n }\n\n const configProvider = hasConfig ? (\n <ThreadConfigContext.Provider value={config}>\n {children}\n </ThreadConfigContext.Provider>\n ) : (\n <>{children}</>\n );\n\n if (!config?.runtime) return configProvider;\n\n if (hasAssistant) {\n throw new Error(\n \"You provided a runtime to <Thread> while simulataneously using <AssistantRuntimeProvider>. This is not allowed.\",\n );\n }\n return (\n <AssistantRuntimeProvider runtime={config.runtime}>\n {configProvider}\n </AssistantRuntimeProvider>\n );\n};\n\nThreadConfigProvider.displayName = \"ThreadConfigProvider\";\n"],"mappings":";;;AAEA;AAAA,EAKE;AAAA,EACA;AAAA,OACK;AAKP,SAAS,gCAAgC;AAEzC,SAAS,2BAA2B;AAyMhC,SAIA,UAJA;AAtDJ,IAAM,sBAAsB,cAA4B,CAAC,CAAC;AA8BnD,IAAM,kBAAkB,MAAqC;AAClE,SAAO,WAAW,mBAAmB;AACvC;AAMO,IAAM,uBAAsD,CAAC;AAAA,EAClE;AAAA,EACA;AACF,MAAM;AACJ,QAAM,eAAe,CAAC,CAAC,oBAAoB,EAAE,UAAU,KAAK,CAAC;AAE7D,QAAM,YAAY,UAAU,OAAO,KAAK,MAAM,EAAE,SAAS;AACzD,QAAM,cAAc,gBAAgB;AAEpC,MAAI,aAAa,OAAO,KAAK,WAAW,EAAE,SAAS,GAAG;AACpD,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,iBAAiB,YACrB,oBAAC,oBAAoB,UAApB,EAA6B,OAAO,QAClC,UACH,IAEA,gCAAG,UAAS;AAGd,MAAI,CAAC,QAAQ,QAAS,QAAO;AAE7B,MAAI,cAAc;AAChB,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SACE,oBAAC,4BAAyB,SAAS,OAAO,SACvC,0BACH;AAEJ;AAEA,qBAAqB,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../src/ui/thread-config.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n ComponentType,\n FC,\n PropsWithChildren,\n ReactNode,\n createContext,\n useContext,\n} from \"react\";\n\nimport { AssistantRuntime } from \"../api/AssistantRuntime\";\nimport { AvatarProps } from \"./base/avatar\";\nimport {\n EmptyContentPartComponent,\n TextContentPartComponent,\n ToolCallContentPartProps,\n} from \"../types\";\nimport { AssistantRuntimeProvider } from \"../context\";\nimport { AssistantToolUI } from \"../model-config\";\nimport { useAssistantRuntime } from \"../context/react/AssistantContext\";\n\nexport type SuggestionConfig = {\n text?: ReactNode | undefined;\n prompt: string;\n};\n\nexport type ThreadWelcomeConfig = {\n message?: string | null | undefined;\n suggestions?: SuggestionConfig[] | undefined;\n};\n\nexport type UserMessageConfig = {\n allowEdit?: boolean | undefined;\n};\n\nexport type AssistantMessageConfig = {\n allowReload?: boolean | undefined;\n allowCopy?: boolean | undefined;\n allowSpeak?: boolean | undefined;\n allowFeedbackPositive?: boolean | undefined;\n allowFeedbackNegative?: boolean | undefined;\n components?:\n | {\n Text?: TextContentPartComponent | undefined;\n Empty?: EmptyContentPartComponent | undefined;\n ToolFallback?: ComponentType<ToolCallContentPartProps> | undefined;\n }\n | undefined;\n};\n\nexport type BranchPickerConfig = {\n allowBranchPicker?: boolean | undefined;\n};\n\nexport type ComposerConfig = {\n allowAttachments?: boolean | undefined;\n};\n\nexport type StringsConfig = {\n assistantModal?: {\n open: {\n button: {\n tooltip?: string | undefined;\n };\n };\n closed: {\n button: {\n tooltip?: string | undefined;\n };\n };\n };\n threadList?: {\n new?: {\n label?: string | undefined;\n };\n item?: {\n title?: {\n fallback?: string | undefined;\n };\n archive?: {\n tooltip?: string | undefined;\n };\n };\n };\n thread?: {\n scrollToBottom?: {\n tooltip?: string | undefined;\n };\n };\n welcome?: {\n message?: string | undefined;\n };\n userMessage?: {\n edit?: {\n tooltip?: string | undefined;\n };\n };\n assistantMessage?: {\n reload?: {\n tooltip?: string | undefined;\n };\n copy?: {\n tooltip?: string | undefined;\n };\n speak?: {\n tooltip?: string | undefined;\n stop?: {\n tooltip?: string | undefined;\n };\n };\n feedback?: {\n positive?: {\n tooltip?: string | undefined;\n };\n negative?: {\n tooltip?: string | undefined;\n };\n };\n };\n branchPicker?: {\n previous?: {\n tooltip?: string | undefined;\n };\n next?: {\n tooltip?: string | undefined;\n };\n };\n composer?: {\n send?:\n | {\n tooltip?: string | undefined;\n }\n | undefined;\n cancel?:\n | {\n tooltip?: string | undefined;\n }\n | undefined;\n addAttachment?:\n | {\n tooltip?: string | undefined;\n }\n | undefined;\n removeAttachment?: {\n tooltip?: string | undefined;\n };\n input?: {\n placeholder?: string | undefined;\n };\n };\n editComposer?: {\n send?: {\n label?: string | undefined;\n };\n cancel?: {\n label?: string | undefined;\n };\n };\n code?: {\n header?: {\n copy?: {\n tooltip?: string | undefined;\n };\n };\n };\n};\n\nconst ThreadConfigContext = createContext<ThreadConfig>({});\n\nexport type ThreadConfig = {\n runtime?: AssistantRuntime | undefined;\n\n assistantAvatar?: AvatarProps | undefined;\n\n welcome?: ThreadWelcomeConfig | undefined;\n assistantMessage?: AssistantMessageConfig | undefined;\n userMessage?: UserMessageConfig | undefined;\n\n branchPicker?: BranchPickerConfig | undefined;\n\n composer?: ComposerConfig | undefined;\n\n strings?: StringsConfig | undefined;\n\n tools?: AssistantToolUI[] | undefined; // TODO add AssistantTool support\n\n components?:\n | {\n UserMessage?: ComponentType | undefined;\n AssistantMessage?: ComponentType | undefined;\n EditComposer?: ComponentType | undefined;\n Composer?: ComponentType | undefined;\n ThreadWelcome?: ComponentType | undefined;\n }\n | undefined;\n};\n\nexport const useThreadConfig = (): Omit<ThreadConfig, \"runtime\"> => {\n return useContext(ThreadConfigContext);\n};\n\nexport type ThreadConfigProviderProps = PropsWithChildren<{\n config?: ThreadConfig | undefined;\n}>;\n\nexport const ThreadConfigProvider: FC<ThreadConfigProviderProps> = ({\n children,\n config,\n}) => {\n const hasAssistant = !!useAssistantRuntime({ optional: true });\n\n const hasConfig = config && Object.keys(config).length > 0;\n const outerConfig = useThreadConfig();\n\n if (hasConfig && Object.keys(outerConfig).length > 0) {\n throw new Error(\n \"You are providing ThreadConfig to several nested components. Please provide all configuration to the same component.\",\n );\n }\n\n const configProvider = hasConfig ? (\n <ThreadConfigContext.Provider value={config}>\n {children}\n </ThreadConfigContext.Provider>\n ) : (\n <>{children}</>\n );\n\n if (!config?.runtime) return configProvider;\n\n if (hasAssistant) {\n throw new Error(\n \"You provided a runtime to <Thread> while simulataneously using <AssistantRuntimeProvider>. This is not allowed.\",\n );\n }\n return (\n <AssistantRuntimeProvider runtime={config.runtime}>\n {configProvider}\n </AssistantRuntimeProvider>\n );\n};\n\nThreadConfigProvider.displayName = \"ThreadConfigProvider\";\n"],"mappings":";;;AAEA;AAAA,EAKE;AAAA,EACA;AAAA,OACK;AASP,SAAS,gCAAgC;AAEzC,SAAS,2BAA2B;AA0MhC,SAIA,UAJA;AAtDJ,IAAM,sBAAsB,cAA4B,CAAC,CAAC;AA8BnD,IAAM,kBAAkB,MAAqC;AAClE,SAAO,WAAW,mBAAmB;AACvC;AAMO,IAAM,uBAAsD,CAAC;AAAA,EAClE;AAAA,EACA;AACF,MAAM;AACJ,QAAM,eAAe,CAAC,CAAC,oBAAoB,EAAE,UAAU,KAAK,CAAC;AAE7D,QAAM,YAAY,UAAU,OAAO,KAAK,MAAM,EAAE,SAAS;AACzD,QAAM,cAAc,gBAAgB;AAEpC,MAAI,aAAa,OAAO,KAAK,WAAW,EAAE,SAAS,GAAG;AACpD,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,iBAAiB,YACrB,oBAAC,oBAAoB,UAApB,EAA6B,OAAO,QAClC,UACH,IAEA,gCAAG,UAAS;AAGd,MAAI,CAAC,QAAQ,QAAS,QAAO;AAE7B,MAAI,cAAc;AAChB,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SACE,oBAAC,4BAAyB,SAAS,OAAO,SACvC,0BACH;AAEJ;AAEA,qBAAqB,cAAc;","names":[]}
@@ -1,6 +1,7 @@
1
- import { ComponentPropsWithoutRef, ElementRef, ElementType } from "react";
1
+ import { ComponentPropsWithoutRef, ElementType } from "react";
2
+ import { ComponentRef } from "react";
2
3
  export declare const withDefaultProps: <TProps extends {
3
4
  className?: string;
4
5
  }>({ className, ...defaultProps }: Partial<TProps>) => ({ className: classNameProp, ...props }: TProps) => TProps;
5
- export declare const withDefaults: <TComponent extends ElementType>(Component: TComponent, defaultProps: Partial<ComponentPropsWithoutRef<TComponent>>) => import("react").ForwardRefExoticComponent<import("react").PropsWithoutRef<Partial<ComponentPropsWithoutRef<TComponent>>> & import("react").RefAttributes<ElementRef<TComponent>>>;
6
+ export declare const withDefaults: <TComponent extends ElementType>(Component: TComponent, defaultProps: Partial<ComponentPropsWithoutRef<TComponent>>) => import("react").ForwardRefExoticComponent<import("react").PropsWithoutRef<Partial<ComponentPropsWithoutRef<TComponent>>> & import("react").RefAttributes<ComponentRef<TComponent>>>;
6
7
  //# sourceMappingURL=withDefaults.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"withDefaults.d.ts","sourceRoot":"","sources":["../../../src/ui/utils/withDefaults.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,UAAU,EACV,WAAW,EAEZ,MAAM,OAAO,CAAC;AAGf,eAAO,MAAM,gBAAgB,GAC1B,MAAM,SAAS;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,kCAGnC,OAAO,CAAC,MAAM,CAAC,8CACuB,MAAM,KAKxC,MACN,CAAC;AAEJ,eAAO,MAAM,YAAY,GAAI,UAAU,SAAS,WAAW,aAC9C,UAAU,gBACP,OAAO,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC,sLAe5D,CAAC"}
1
+ {"version":3,"file":"withDefaults.d.ts","sourceRoot":"","sources":["../../../src/ui/utils/withDefaults.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAc,MAAM,OAAO,CAAC;AAE1E,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAErC,eAAO,MAAM,gBAAgB,GAC1B,MAAM,SAAS;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,kCAGnC,OAAO,CAAC,MAAM,CAAC,8CACuB,MAAM,KAKxC,MACN,CAAC;AAEJ,eAAO,MAAM,YAAY,GAAI,UAAU,SAAS,WAAW,aAC9C,UAAU,gBACP,OAAO,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC,wLAe5D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/ui/utils/withDefaults.tsx"],"sourcesContent":["import {\n ComponentPropsWithoutRef,\n ElementRef,\n ElementType,\n forwardRef,\n} from \"react\";\nimport classNames from \"classnames\";\n\nexport const withDefaultProps =\n <TProps extends { className?: string }>({\n className,\n ...defaultProps\n }: Partial<TProps>) =>\n ({ className: classNameProp, ...props }: TProps) => {\n return {\n className: classNames(className, classNameProp),\n ...defaultProps,\n ...props,\n } as TProps;\n };\n\nexport const withDefaults = <TComponent extends ElementType>(\n Component: TComponent,\n defaultProps: Partial<ComponentPropsWithoutRef<TComponent>>,\n) => {\n type TComponentProps = typeof defaultProps;\n const getProps = withDefaultProps<TComponentProps>(defaultProps);\n const WithDefaults = forwardRef<ElementRef<TComponent>, TComponentProps>(\n (props, ref) => {\n const ComponentAsAny = Component as any;\n return <ComponentAsAny {...getProps(props as any)} ref={ref} />;\n },\n );\n WithDefaults.displayName =\n \"withDefaults(\" +\n (typeof Component === \"string\" ? Component : Component.displayName) +\n \")\";\n return WithDefaults;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAKO;AACP,wBAAuB;AAwBV;AAtBN,IAAM,mBACX,CAAwC;AAAA,EACtC;AAAA,EACA,GAAG;AACL,MACA,CAAC,EAAE,WAAW,eAAe,GAAG,MAAM,MAAc;AAClD,SAAO;AAAA,IACL,eAAW,kBAAAA,SAAW,WAAW,aAAa;AAAA,IAC9C,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACF;AAEK,IAAM,eAAe,CAC1B,WACA,iBACG;AAEH,QAAM,WAAW,iBAAkC,YAAY;AAC/D,QAAM,mBAAe;AAAA,IACnB,CAAC,OAAO,QAAQ;AACd,YAAM,iBAAiB;AACvB,aAAO,4CAAC,kBAAgB,GAAG,SAAS,KAAY,GAAG,KAAU;AAAA,IAC/D;AAAA,EACF;AACA,eAAa,cACX,mBACC,OAAO,cAAc,WAAW,YAAY,UAAU,eACvD;AACF,SAAO;AACT;","names":["classNames"]}
1
+ {"version":3,"sources":["../../../src/ui/utils/withDefaults.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, ElementType, forwardRef } from \"react\";\nimport classNames from \"classnames\";\nimport { ComponentRef } from \"react\";\n\nexport const withDefaultProps =\n <TProps extends { className?: string }>({\n className,\n ...defaultProps\n }: Partial<TProps>) =>\n ({ className: classNameProp, ...props }: TProps) => {\n return {\n className: classNames(className, classNameProp),\n ...defaultProps,\n ...props,\n } as TProps;\n };\n\nexport const withDefaults = <TComponent extends ElementType>(\n Component: TComponent,\n defaultProps: Partial<ComponentPropsWithoutRef<TComponent>>,\n) => {\n type TComponentProps = typeof defaultProps;\n const getProps = withDefaultProps<TComponentProps>(defaultProps);\n const WithDefaults = forwardRef<ComponentRef<TComponent>, TComponentProps>(\n (props, ref) => {\n const ComponentAsAny = Component as any;\n return <ComponentAsAny {...getProps(props as any)} ref={ref} />;\n },\n );\n WithDefaults.displayName =\n \"withDefaults(\" +\n (typeof Component === \"string\" ? Component : Component.displayName) +\n \")\";\n return WithDefaults;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkE;AAClE,wBAAuB;AAyBV;AAtBN,IAAM,mBACX,CAAwC;AAAA,EACtC;AAAA,EACA,GAAG;AACL,MACA,CAAC,EAAE,WAAW,eAAe,GAAG,MAAM,MAAc;AAClD,SAAO;AAAA,IACL,eAAW,kBAAAA,SAAW,WAAW,aAAa;AAAA,IAC9C,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACF;AAEK,IAAM,eAAe,CAC1B,WACA,iBACG;AAEH,QAAM,WAAW,iBAAkC,YAAY;AAC/D,QAAM,mBAAe;AAAA,IACnB,CAAC,OAAO,QAAQ;AACd,YAAM,iBAAiB;AACvB,aAAO,4CAAC,kBAAgB,GAAG,SAAS,KAAY,GAAG,KAAU;AAAA,IAC/D;AAAA,EACF;AACA,eAAa,cACX,mBACC,OAAO,cAAc,WAAW,YAAY,UAAU,eACvD;AACF,SAAO;AACT;","names":["classNames"]}
@@ -1,7 +1,5 @@
1
1
  // src/ui/utils/withDefaults.tsx
2
- import {
3
- forwardRef
4
- } from "react";
2
+ import { forwardRef } from "react";
5
3
  import classNames from "classnames";
6
4
  import { jsx } from "react/jsx-runtime";
7
5
  var withDefaultProps = ({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/ui/utils/withDefaults.tsx"],"sourcesContent":["import {\n ComponentPropsWithoutRef,\n ElementRef,\n ElementType,\n forwardRef,\n} from \"react\";\nimport classNames from \"classnames\";\n\nexport const withDefaultProps =\n <TProps extends { className?: string }>({\n className,\n ...defaultProps\n }: Partial<TProps>) =>\n ({ className: classNameProp, ...props }: TProps) => {\n return {\n className: classNames(className, classNameProp),\n ...defaultProps,\n ...props,\n } as TProps;\n };\n\nexport const withDefaults = <TComponent extends ElementType>(\n Component: TComponent,\n defaultProps: Partial<ComponentPropsWithoutRef<TComponent>>,\n) => {\n type TComponentProps = typeof defaultProps;\n const getProps = withDefaultProps<TComponentProps>(defaultProps);\n const WithDefaults = forwardRef<ElementRef<TComponent>, TComponentProps>(\n (props, ref) => {\n const ComponentAsAny = Component as any;\n return <ComponentAsAny {...getProps(props as any)} ref={ref} />;\n },\n );\n WithDefaults.displayName =\n \"withDefaults(\" +\n (typeof Component === \"string\" ? Component : Component.displayName) +\n \")\";\n return WithDefaults;\n};\n"],"mappings":";AAAA;AAAA,EAIE;AAAA,OACK;AACP,OAAO,gBAAgB;AAwBV;AAtBN,IAAM,mBACX,CAAwC;AAAA,EACtC;AAAA,EACA,GAAG;AACL,MACA,CAAC,EAAE,WAAW,eAAe,GAAG,MAAM,MAAc;AAClD,SAAO;AAAA,IACL,WAAW,WAAW,WAAW,aAAa;AAAA,IAC9C,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACF;AAEK,IAAM,eAAe,CAC1B,WACA,iBACG;AAEH,QAAM,WAAW,iBAAkC,YAAY;AAC/D,QAAM,eAAe;AAAA,IACnB,CAAC,OAAO,QAAQ;AACd,YAAM,iBAAiB;AACvB,aAAO,oBAAC,kBAAgB,GAAG,SAAS,KAAY,GAAG,KAAU;AAAA,IAC/D;AAAA,EACF;AACA,eAAa,cACX,mBACC,OAAO,cAAc,WAAW,YAAY,UAAU,eACvD;AACF,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../../src/ui/utils/withDefaults.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, ElementType, forwardRef } from \"react\";\nimport classNames from \"classnames\";\nimport { ComponentRef } from \"react\";\n\nexport const withDefaultProps =\n <TProps extends { className?: string }>({\n className,\n ...defaultProps\n }: Partial<TProps>) =>\n ({ className: classNameProp, ...props }: TProps) => {\n return {\n className: classNames(className, classNameProp),\n ...defaultProps,\n ...props,\n } as TProps;\n };\n\nexport const withDefaults = <TComponent extends ElementType>(\n Component: TComponent,\n defaultProps: Partial<ComponentPropsWithoutRef<TComponent>>,\n) => {\n type TComponentProps = typeof defaultProps;\n const getProps = withDefaultProps<TComponentProps>(defaultProps);\n const WithDefaults = forwardRef<ComponentRef<TComponent>, TComponentProps>(\n (props, ref) => {\n const ComponentAsAny = Component as any;\n return <ComponentAsAny {...getProps(props as any)} ref={ref} />;\n },\n );\n WithDefaults.displayName =\n \"withDefaults(\" +\n (typeof Component === \"string\" ? Component : Component.displayName) +\n \")\";\n return WithDefaults;\n};\n"],"mappings":";AAAA,SAAgD,kBAAkB;AAClE,OAAO,gBAAgB;AAyBV;AAtBN,IAAM,mBACX,CAAwC;AAAA,EACtC;AAAA,EACA,GAAG;AACL,MACA,CAAC,EAAE,WAAW,eAAe,GAAG,MAAM,MAAc;AAClD,SAAO;AAAA,IACL,WAAW,WAAW,WAAW,aAAa;AAAA,IAC9C,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACF;AAEK,IAAM,eAAe,CAC1B,WACA,iBACG;AAEH,QAAM,WAAW,iBAAkC,YAAY;AAC/D,QAAM,eAAe;AAAA,IACnB,CAAC,OAAO,QAAQ;AACd,YAAM,iBAAiB;AACvB,aAAO,oBAAC,kBAAgB,GAAG,SAAS,KAAY,GAAG,KAAU;AAAA,IAC/D;AAAA,EACF;AACA,eAAa,cACX,mBACC,OAAO,cAAc,WAAW,YAAY,UAAU,eACvD;AACF,SAAO;AACT;","names":[]}
package/package.json CHANGED
@@ -29,7 +29,7 @@
29
29
  "conversational-ui",
30
30
  "conversational-ai"
31
31
  ],
32
- "version": "0.7.17",
32
+ "version": "0.7.19",
33
33
  "license": "MIT",
34
34
  "exports": {
35
35
  ".": {
@@ -65,22 +65,22 @@
65
65
  ],
66
66
  "sideEffects": false,
67
67
  "dependencies": {
68
- "@ai-sdk/provider": "^1.0.2",
68
+ "@ai-sdk/provider": "^1.0.3",
69
69
  "@radix-ui/primitive": "^1.1.1",
70
70
  "@radix-ui/react-avatar": "^1.1.2",
71
71
  "@radix-ui/react-compose-refs": "^1.1.1",
72
72
  "@radix-ui/react-context": "^1.1.1",
73
- "@radix-ui/react-dialog": "^1.1.3",
74
- "@radix-ui/react-popover": "^1.1.3",
73
+ "@radix-ui/react-dialog": "^1.1.4",
74
+ "@radix-ui/react-popover": "^1.1.4",
75
75
  "@radix-ui/react-primitive": "^2.0.1",
76
76
  "@radix-ui/react-slot": "^1.1.1",
77
- "@radix-ui/react-tooltip": "^1.1.5",
77
+ "@radix-ui/react-tooltip": "^1.1.6",
78
78
  "@radix-ui/react-use-callback-ref": "^1.1.0",
79
79
  "@radix-ui/react-use-escape-keydown": "^1.1.0",
80
80
  "class-variance-authority": "^0.7.1",
81
81
  "classnames": "^2.5.1",
82
82
  "json-schema": "^0.4.0",
83
- "lucide-react": "^0.468.0",
83
+ "lucide-react": "^0.469.0",
84
84
  "nanoid": "^5.0.9",
85
85
  "react-textarea-autosize": "^8.5.6",
86
86
  "secure-json-parse": "^3.0.1",
@@ -112,16 +112,16 @@
112
112
  "autoprefixer": "^10.4.20",
113
113
  "esbuild-plugin-file-path-extensions": "^2.1.4",
114
114
  "eslint": "^9",
115
- "eslint-config-next": "15.1.0",
115
+ "eslint-config-next": "15.1.2",
116
116
  "postcss": "^8.4.49",
117
117
  "postcss-js": "^4.0.1",
118
118
  "postcss-nested": "^7.0.2",
119
- "tailwindcss": "^3.4.16",
119
+ "tailwindcss": "^3.4.17",
120
120
  "tailwindcss-animate": "^1.0.7",
121
121
  "tsup": "8.3.5",
122
122
  "tsx": "^4.19.2",
123
123
  "@assistant-ui/tailwindcss-transformer": "0.1.0",
124
- "@assistant-ui/tsbuildutils": "^0.0.0",
124
+ "@assistant-ui/tsbuildutils": "^0.0.1",
125
125
  "@assistant-ui/tsconfig": "0.0.0"
126
126
  },
127
127
  "publishConfig": {
@@ -31,13 +31,11 @@ export class LocalRuntimeCore extends BaseAssistantRuntimeCore {
31
31
 
32
32
  this._options = options;
33
33
 
34
- this.threadList = new LocalThreadListRuntimeCore((data) => {
35
- const thread = new LocalThreadRuntimeCore(
34
+ this.threadList = new LocalThreadListRuntimeCore(() => {
35
+ return new LocalThreadRuntimeCore(
36
36
  this._proxyConfigProvider,
37
37
  this._options,
38
38
  );
39
- thread.import(data);
40
- return thread;
41
39
  });
42
40
 
43
41
  if (initialMessages) {
@@ -1,6 +1,5 @@
1
1
  import type { Unsubscribe } from "../../types";
2
2
  import { ThreadListRuntimeCore } from "../core/ThreadListRuntimeCore";
3
- import { ExportedMessageRepository } from "../utils/MessageRepository";
4
3
  import { generateId } from "../../utils/idUtils";
5
4
  import { LocalThreadRuntimeCore } from "./LocalThreadRuntimeCore";
6
5
 
@@ -13,13 +12,9 @@ export type LocalThreadData = {
13
12
  readonly state: "new" | "regular" | "archived";
14
13
  readonly threadId: string;
15
14
  readonly title?: string | undefined;
16
-
17
- dispose(): void;
18
15
  };
19
16
 
20
- export type LocalThreadFactory = (
21
- data: ExportedMessageRepository,
22
- ) => LocalThreadRuntimeCore;
17
+ export type LocalThreadFactory = () => LocalThreadRuntimeCore;
23
18
 
24
19
  export class LocalThreadListRuntimeCore implements ThreadListRuntimeCore {
25
20
  private _threadData = new Map<string, LocalThreadData>();
@@ -79,8 +74,9 @@ export class LocalThreadListRuntimeCore implements ThreadListRuntimeCore {
79
74
  threadId = generateId();
80
75
  } while (this._threadData.has(threadId));
81
76
 
82
- const runtime = this._threadFactory({ messages: [] });
77
+ const runtime = this._threadFactory();
83
78
  const dispose = runtime.unstable_on("initialize", () => {
79
+ dispose();
84
80
  const data = this._threadData.get(threadId);
85
81
  if (!data) throw new Error("Thread not found");
86
82
 
@@ -90,7 +86,6 @@ export class LocalThreadListRuntimeCore implements ThreadListRuntimeCore {
90
86
  runtime,
91
87
  state: "new",
92
88
  threadId,
93
- dispose,
94
89
  });
95
90
  this._newThreadId = threadId;
96
91
  }
@@ -141,7 +136,6 @@ export class LocalThreadListRuntimeCore implements ThreadListRuntimeCore {
141
136
 
142
137
  case "deleted":
143
138
  this._threadData.delete(threadId);
144
- data.dispose();
145
139
  break;
146
140
 
147
141
  default: {
@@ -44,7 +44,7 @@ export const useLocalRuntime = (
44
44
 
45
45
  useEffect(() => {
46
46
  runtime.threadList.getMainThreadRuntimeCore().__internal_setOptions(opt);
47
- });
47
+ }, [runtime, opt]);
48
48
 
49
49
  return useMemo(() => LocalRuntimeImpl.create(runtime), [runtime]);
50
50
  };
@@ -72,6 +72,7 @@ const AssistantMessageContent = forwardRef<
72
72
  components={{
73
73
  ...componentsProp,
74
74
  Text: componentsProp?.Text ?? components.Text ?? ContentPart.Text,
75
+ Empty: componentsProp?.Empty ?? components.Empty,
75
76
  tools: toolsComponents,
76
77
  }}
77
78
  />
@@ -11,7 +11,11 @@ import {
11
11
 
12
12
  import { AssistantRuntime } from "../api/AssistantRuntime";
13
13
  import { AvatarProps } from "./base/avatar";
14
- import { TextContentPartComponent, ToolCallContentPartProps } from "../types";
14
+ import {
15
+ EmptyContentPartComponent,
16
+ TextContentPartComponent,
17
+ ToolCallContentPartProps,
18
+ } from "../types";
15
19
  import { AssistantRuntimeProvider } from "../context";
16
20
  import { AssistantToolUI } from "../model-config";
17
21
  import { useAssistantRuntime } from "../context/react/AssistantContext";
@@ -39,6 +43,7 @@ export type AssistantMessageConfig = {
39
43
  components?:
40
44
  | {
41
45
  Text?: TextContentPartComponent | undefined;
46
+ Empty?: EmptyContentPartComponent | undefined;
42
47
  ToolFallback?: ComponentType<ToolCallContentPartProps> | undefined;
43
48
  }
44
49
  | undefined;
@@ -1,10 +1,6 @@
1
- import {
2
- ComponentPropsWithoutRef,
3
- ElementRef,
4
- ElementType,
5
- forwardRef,
6
- } from "react";
1
+ import { ComponentPropsWithoutRef, ElementType, forwardRef } from "react";
7
2
  import classNames from "classnames";
3
+ import { ComponentRef } from "react";
8
4
 
9
5
  export const withDefaultProps =
10
6
  <TProps extends { className?: string }>({
@@ -25,7 +21,7 @@ export const withDefaults = <TComponent extends ElementType>(
25
21
  ) => {
26
22
  type TComponentProps = typeof defaultProps;
27
23
  const getProps = withDefaultProps<TComponentProps>(defaultProps);
28
- const WithDefaults = forwardRef<ElementRef<TComponent>, TComponentProps>(
24
+ const WithDefaults = forwardRef<ComponentRef<TComponent>, TComponentProps>(
29
25
  (props, ref) => {
30
26
  const ComponentAsAny = Component as any;
31
27
  return <ComponentAsAny {...getProps(props as any)} ref={ref} />;