@chainlit/react-client 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -71,6 +71,20 @@ interface ICommand {
71
71
  description: string;
72
72
  button?: boolean;
73
73
  persistent?: boolean;
74
+ selected?: boolean;
75
+ }
76
+
77
+ interface IModeOption {
78
+ id: string;
79
+ name: string;
80
+ description?: string;
81
+ icon?: string;
82
+ default?: boolean;
83
+ }
84
+ interface IMode {
85
+ id: string;
86
+ name: string;
87
+ options: IModeOption[];
74
88
  }
75
89
 
76
90
  interface IFeedback {
@@ -90,6 +104,7 @@ interface IStep {
90
104
  parentId?: string;
91
105
  isError?: boolean;
92
106
  command?: string;
107
+ modes?: Record<string, string>;
93
108
  showInput?: boolean | string;
94
109
  waitForAnswer?: boolean;
95
110
  input?: string;
@@ -100,6 +115,7 @@ interface IStep {
100
115
  feedback?: IFeedback;
101
116
  language?: string;
102
117
  defaultOpen?: boolean;
118
+ autoCollapse?: boolean;
103
119
  streaming?: boolean;
104
120
  steps?: IStep[];
105
121
  metadata?: Record<string, any>;
@@ -175,10 +191,16 @@ interface IStarter {
175
191
  icon?: string;
176
192
  command?: string;
177
193
  }
194
+ interface IStarterCategory {
195
+ label: string;
196
+ icon?: string;
197
+ starters: IStarter[];
198
+ }
178
199
  interface ChatProfile {
179
200
  default: boolean;
180
201
  icon?: string;
181
202
  name: string;
203
+ display_name?: string;
182
204
  markdown_description: string;
183
205
  starters?: IStarter[];
184
206
  }
@@ -201,7 +223,10 @@ interface IChainlitConfig {
201
223
  description?: string;
202
224
  default_theme?: 'light' | 'dark';
203
225
  layout?: 'default' | 'wide';
204
- default_sidebar_state?: 'open' | 'closed';
226
+ default_sidebar_state?: 'open' | 'closed' | 'hidden';
227
+ chat_settings_location?: 'message_composer' | 'sidebar';
228
+ default_chat_settings_open?: boolean;
229
+ confirm_new_chat?: boolean;
205
230
  cot: 'hidden' | 'tool_call' | 'full';
206
231
  github?: string;
207
232
  custom_css?: string;
@@ -214,6 +239,7 @@ interface IChainlitConfig {
214
239
  custom_meta_image_url?: string;
215
240
  logo_file_url?: string;
216
241
  default_avatar_file_url?: string;
242
+ avatar_size?: number;
217
243
  header_links?: {
218
244
  name: string;
219
245
  display_name: string;
@@ -232,8 +258,11 @@ interface IChainlitConfig {
232
258
  audio: IAudioConfig;
233
259
  unsafe_allow_html?: boolean;
234
260
  user_message_autoscroll?: boolean;
261
+ assistant_message_autoscroll?: boolean;
235
262
  latex?: boolean;
263
+ user_message_markdown?: boolean;
236
264
  edit_message?: boolean;
265
+ favorites?: boolean;
237
266
  mcp?: {
238
267
  enabled?: boolean;
239
268
  sse?: {
@@ -255,6 +284,7 @@ interface IChainlitConfig {
255
284
  threadSharing?: boolean;
256
285
  chatProfiles: ChatProfile[];
257
286
  starters?: IStarter[];
287
+ starterCategories?: IStarterCategory[];
258
288
  translation: object;
259
289
  }
260
290
 
@@ -280,9 +310,9 @@ declare const useChatData: () => {
280
310
  actions: IAction[];
281
311
  askUser: IAsk | undefined;
282
312
  callFn: ICallFn | undefined;
283
- chatSettingsDefaultValue: any;
313
+ chatSettingsDefaultValue: Record<string, any>;
284
314
  chatSettingsInputs: any;
285
- chatSettingsValue: any;
315
+ chatSettingsValue: Record<string, any>;
286
316
  connected: boolean | undefined;
287
317
  disabled: boolean;
288
318
  elements: IMessageElement[];
@@ -310,6 +340,8 @@ declare const useChatInteract: () => {
310
340
  stopTask: () => void;
311
341
  setIdToResume: recoil.SetterOrUpdater<string | undefined>;
312
342
  updateChatSettings: (values: object) => void;
343
+ editChatSettings: (values: object) => void;
344
+ toggleMessageFavorite: (message: IStep) => void;
313
345
  };
314
346
 
315
347
  declare const useChatMessages: () => {
@@ -330,6 +362,7 @@ declare const sessionState: recoil.RecoilState<ISession | undefined>;
330
362
  declare const actionState: recoil.RecoilState<IAction[]>;
331
363
  declare const messagesState: recoil.RecoilState<IStep[]>;
332
364
  declare const commandsState: recoil.RecoilState<ICommand[]>;
365
+ declare const modesState: recoil.RecoilState<IMode[]>;
333
366
  declare const tokenCountState: recoil.RecoilState<number>;
334
367
  declare const loadingState: recoil.RecoilState<boolean>;
335
368
  declare const askUserState: recoil.RecoilState<IAsk | undefined>;
@@ -339,8 +372,8 @@ declare const audioConnectionState: recoil.RecoilState<"connecting" | "on" | "of
339
372
  declare const isAiSpeakingState: recoil.RecoilState<boolean>;
340
373
  declare const callFnState: recoil.RecoilState<ICallFn | undefined>;
341
374
  declare const chatSettingsInputsState: recoil.RecoilState<any>;
342
- declare const chatSettingsDefaultValueSelector: recoil.RecoilValueReadOnly<any>;
343
- declare const chatSettingsValueState: recoil.RecoilState<any>;
375
+ declare const chatSettingsDefaultValueSelector: recoil.RecoilValueReadOnly<Record<string, any>>;
376
+ declare const chatSettingsValueState: recoil.RecoilState<Record<string, any>>;
344
377
  declare const elementState: recoil.RecoilState<IMessageElement[]>;
345
378
  declare const tasklistState: recoil.RecoilState<ITasklistElement[]>;
346
379
  declare const firstUserInteraction: recoil.RecoilState<string | undefined>;
@@ -355,6 +388,7 @@ declare const sideViewState: recoil.RecoilState<{
355
388
  } | undefined>;
356
389
  declare const currentThreadIdState: recoil.RecoilState<string | undefined>;
357
390
  declare const mcpState: recoil.RecoilState<IMcp[]>;
391
+ declare const favoriteMessagesState: recoil.RecoilState<IStep[]>;
358
392
 
359
393
  declare const useChatSession: () => {
360
394
  connect: lodash.DebouncedFunc<({ transports, userEnv }: {
@@ -500,4 +534,4 @@ declare const WavRenderer: {
500
534
  drawBars: (ctx: CanvasRenderingContext2D, data: Float32Array, cssWidth: number, cssHeight: number, color: string, pointCount?: number, barWidth?: number, barSpacing?: number, center?: boolean) => void;
501
535
  };
502
536
 
503
- export { APIBase, ActionSpec, AuthProvider, ChainlitAPI, ChainlitContext, ChatProfile, ClientError, ElementType, FileSpec, IAction, IAsk, IAskElementResponse, IAudioConfig, IAudioElement, IAuthConfig, ICallFn, IChainlitConfig, ICommand, ICustomElement, IDataframeElement, IElement, IElementSize, IFeedback, IFileElement, IFileRef, IImageElement, IMcp, IMessageElement, IPageInfo, IPagination, IPdfElement, IPlotlyElement, ISession, IStarter, IStep, ITasklistElement, ITextElement, IThread, IThreadFilters, IToken, IUser, IUserMetadata, IVideoElement, ThreadHistory, UserInput, WavRenderer, actionState, addMessage, addMessageToParent, askUserState, audioConnectionState, authState, callFnState, chatProfileState, chatSettingsDefaultValueSelector, chatSettingsInputsState, chatSettingsValueState, commandsState, configState, currentThreadIdState, defaultChainlitContext, deleteMessageById, elementState, fetcher, firstUserInteraction, hasMessageById, isAiSpeakingState, isLastMessage, loadingState, mcpState, messagesState, nestMessages, resumeThreadErrorState, sessionIdState, sessionState, sideViewState, tasklistState, threadHistoryState, threadIdToResumeState, tokenCountState, updateMessageById, updateMessageContentById, useApi, useAudio, useAuth, useChatData, useChatInteract, useChatMessages, useChatSession, useConfig, userState, wavRecorderState, wavStreamPlayerState };
537
+ export { APIBase, ActionSpec, AuthProvider, ChainlitAPI, ChainlitContext, ChatProfile, ClientError, ElementType, FileSpec, IAction, IAsk, IAskElementResponse, IAudioConfig, IAudioElement, IAuthConfig, ICallFn, IChainlitConfig, ICommand, ICustomElement, IDataframeElement, IElement, IElementSize, IFeedback, IFileElement, IFileRef, IImageElement, IMcp, IMessageElement, IMode, IModeOption, IPageInfo, IPagination, IPdfElement, IPlotlyElement, ISession, IStarter, IStarterCategory, IStep, ITasklistElement, ITextElement, IThread, IThreadFilters, IToken, IUser, IUserMetadata, IVideoElement, ThreadHistory, UserInput, WavRenderer, actionState, addMessage, addMessageToParent, askUserState, audioConnectionState, authState, callFnState, chatProfileState, chatSettingsDefaultValueSelector, chatSettingsInputsState, chatSettingsValueState, commandsState, configState, currentThreadIdState, defaultChainlitContext, deleteMessageById, elementState, favoriteMessagesState, fetcher, firstUserInteraction, hasMessageById, isAiSpeakingState, isLastMessage, loadingState, mcpState, messagesState, modesState, nestMessages, resumeThreadErrorState, sessionIdState, sessionState, sideViewState, tasklistState, threadHistoryState, threadIdToResumeState, tokenCountState, updateMessageById, updateMessageContentById, useApi, useAudio, useAuth, useChatData, useChatInteract, useChatMessages, useChatSession, useConfig, userState, wavRecorderState, wavStreamPlayerState };
package/dist/index.d.ts CHANGED
@@ -71,6 +71,20 @@ interface ICommand {
71
71
  description: string;
72
72
  button?: boolean;
73
73
  persistent?: boolean;
74
+ selected?: boolean;
75
+ }
76
+
77
+ interface IModeOption {
78
+ id: string;
79
+ name: string;
80
+ description?: string;
81
+ icon?: string;
82
+ default?: boolean;
83
+ }
84
+ interface IMode {
85
+ id: string;
86
+ name: string;
87
+ options: IModeOption[];
74
88
  }
75
89
 
76
90
  interface IFeedback {
@@ -90,6 +104,7 @@ interface IStep {
90
104
  parentId?: string;
91
105
  isError?: boolean;
92
106
  command?: string;
107
+ modes?: Record<string, string>;
93
108
  showInput?: boolean | string;
94
109
  waitForAnswer?: boolean;
95
110
  input?: string;
@@ -100,6 +115,7 @@ interface IStep {
100
115
  feedback?: IFeedback;
101
116
  language?: string;
102
117
  defaultOpen?: boolean;
118
+ autoCollapse?: boolean;
103
119
  streaming?: boolean;
104
120
  steps?: IStep[];
105
121
  metadata?: Record<string, any>;
@@ -175,10 +191,16 @@ interface IStarter {
175
191
  icon?: string;
176
192
  command?: string;
177
193
  }
194
+ interface IStarterCategory {
195
+ label: string;
196
+ icon?: string;
197
+ starters: IStarter[];
198
+ }
178
199
  interface ChatProfile {
179
200
  default: boolean;
180
201
  icon?: string;
181
202
  name: string;
203
+ display_name?: string;
182
204
  markdown_description: string;
183
205
  starters?: IStarter[];
184
206
  }
@@ -201,7 +223,10 @@ interface IChainlitConfig {
201
223
  description?: string;
202
224
  default_theme?: 'light' | 'dark';
203
225
  layout?: 'default' | 'wide';
204
- default_sidebar_state?: 'open' | 'closed';
226
+ default_sidebar_state?: 'open' | 'closed' | 'hidden';
227
+ chat_settings_location?: 'message_composer' | 'sidebar';
228
+ default_chat_settings_open?: boolean;
229
+ confirm_new_chat?: boolean;
205
230
  cot: 'hidden' | 'tool_call' | 'full';
206
231
  github?: string;
207
232
  custom_css?: string;
@@ -214,6 +239,7 @@ interface IChainlitConfig {
214
239
  custom_meta_image_url?: string;
215
240
  logo_file_url?: string;
216
241
  default_avatar_file_url?: string;
242
+ avatar_size?: number;
217
243
  header_links?: {
218
244
  name: string;
219
245
  display_name: string;
@@ -232,8 +258,11 @@ interface IChainlitConfig {
232
258
  audio: IAudioConfig;
233
259
  unsafe_allow_html?: boolean;
234
260
  user_message_autoscroll?: boolean;
261
+ assistant_message_autoscroll?: boolean;
235
262
  latex?: boolean;
263
+ user_message_markdown?: boolean;
236
264
  edit_message?: boolean;
265
+ favorites?: boolean;
237
266
  mcp?: {
238
267
  enabled?: boolean;
239
268
  sse?: {
@@ -255,6 +284,7 @@ interface IChainlitConfig {
255
284
  threadSharing?: boolean;
256
285
  chatProfiles: ChatProfile[];
257
286
  starters?: IStarter[];
287
+ starterCategories?: IStarterCategory[];
258
288
  translation: object;
259
289
  }
260
290
 
@@ -280,9 +310,9 @@ declare const useChatData: () => {
280
310
  actions: IAction[];
281
311
  askUser: IAsk | undefined;
282
312
  callFn: ICallFn | undefined;
283
- chatSettingsDefaultValue: any;
313
+ chatSettingsDefaultValue: Record<string, any>;
284
314
  chatSettingsInputs: any;
285
- chatSettingsValue: any;
315
+ chatSettingsValue: Record<string, any>;
286
316
  connected: boolean | undefined;
287
317
  disabled: boolean;
288
318
  elements: IMessageElement[];
@@ -310,6 +340,8 @@ declare const useChatInteract: () => {
310
340
  stopTask: () => void;
311
341
  setIdToResume: recoil.SetterOrUpdater<string | undefined>;
312
342
  updateChatSettings: (values: object) => void;
343
+ editChatSettings: (values: object) => void;
344
+ toggleMessageFavorite: (message: IStep) => void;
313
345
  };
314
346
 
315
347
  declare const useChatMessages: () => {
@@ -330,6 +362,7 @@ declare const sessionState: recoil.RecoilState<ISession | undefined>;
330
362
  declare const actionState: recoil.RecoilState<IAction[]>;
331
363
  declare const messagesState: recoil.RecoilState<IStep[]>;
332
364
  declare const commandsState: recoil.RecoilState<ICommand[]>;
365
+ declare const modesState: recoil.RecoilState<IMode[]>;
333
366
  declare const tokenCountState: recoil.RecoilState<number>;
334
367
  declare const loadingState: recoil.RecoilState<boolean>;
335
368
  declare const askUserState: recoil.RecoilState<IAsk | undefined>;
@@ -339,8 +372,8 @@ declare const audioConnectionState: recoil.RecoilState<"connecting" | "on" | "of
339
372
  declare const isAiSpeakingState: recoil.RecoilState<boolean>;
340
373
  declare const callFnState: recoil.RecoilState<ICallFn | undefined>;
341
374
  declare const chatSettingsInputsState: recoil.RecoilState<any>;
342
- declare const chatSettingsDefaultValueSelector: recoil.RecoilValueReadOnly<any>;
343
- declare const chatSettingsValueState: recoil.RecoilState<any>;
375
+ declare const chatSettingsDefaultValueSelector: recoil.RecoilValueReadOnly<Record<string, any>>;
376
+ declare const chatSettingsValueState: recoil.RecoilState<Record<string, any>>;
344
377
  declare const elementState: recoil.RecoilState<IMessageElement[]>;
345
378
  declare const tasklistState: recoil.RecoilState<ITasklistElement[]>;
346
379
  declare const firstUserInteraction: recoil.RecoilState<string | undefined>;
@@ -355,6 +388,7 @@ declare const sideViewState: recoil.RecoilState<{
355
388
  } | undefined>;
356
389
  declare const currentThreadIdState: recoil.RecoilState<string | undefined>;
357
390
  declare const mcpState: recoil.RecoilState<IMcp[]>;
391
+ declare const favoriteMessagesState: recoil.RecoilState<IStep[]>;
358
392
 
359
393
  declare const useChatSession: () => {
360
394
  connect: lodash.DebouncedFunc<({ transports, userEnv }: {
@@ -500,4 +534,4 @@ declare const WavRenderer: {
500
534
  drawBars: (ctx: CanvasRenderingContext2D, data: Float32Array, cssWidth: number, cssHeight: number, color: string, pointCount?: number, barWidth?: number, barSpacing?: number, center?: boolean) => void;
501
535
  };
502
536
 
503
- export { APIBase, ActionSpec, AuthProvider, ChainlitAPI, ChainlitContext, ChatProfile, ClientError, ElementType, FileSpec, IAction, IAsk, IAskElementResponse, IAudioConfig, IAudioElement, IAuthConfig, ICallFn, IChainlitConfig, ICommand, ICustomElement, IDataframeElement, IElement, IElementSize, IFeedback, IFileElement, IFileRef, IImageElement, IMcp, IMessageElement, IPageInfo, IPagination, IPdfElement, IPlotlyElement, ISession, IStarter, IStep, ITasklistElement, ITextElement, IThread, IThreadFilters, IToken, IUser, IUserMetadata, IVideoElement, ThreadHistory, UserInput, WavRenderer, actionState, addMessage, addMessageToParent, askUserState, audioConnectionState, authState, callFnState, chatProfileState, chatSettingsDefaultValueSelector, chatSettingsInputsState, chatSettingsValueState, commandsState, configState, currentThreadIdState, defaultChainlitContext, deleteMessageById, elementState, fetcher, firstUserInteraction, hasMessageById, isAiSpeakingState, isLastMessage, loadingState, mcpState, messagesState, nestMessages, resumeThreadErrorState, sessionIdState, sessionState, sideViewState, tasklistState, threadHistoryState, threadIdToResumeState, tokenCountState, updateMessageById, updateMessageContentById, useApi, useAudio, useAuth, useChatData, useChatInteract, useChatMessages, useChatSession, useConfig, userState, wavRecorderState, wavStreamPlayerState };
537
+ export { APIBase, ActionSpec, AuthProvider, ChainlitAPI, ChainlitContext, ChatProfile, ClientError, ElementType, FileSpec, IAction, IAsk, IAskElementResponse, IAudioConfig, IAudioElement, IAuthConfig, ICallFn, IChainlitConfig, ICommand, ICustomElement, IDataframeElement, IElement, IElementSize, IFeedback, IFileElement, IFileRef, IImageElement, IMcp, IMessageElement, IMode, IModeOption, IPageInfo, IPagination, IPdfElement, IPlotlyElement, ISession, IStarter, IStarterCategory, IStep, ITasklistElement, ITextElement, IThread, IThreadFilters, IToken, IUser, IUserMetadata, IVideoElement, ThreadHistory, UserInput, WavRenderer, actionState, addMessage, addMessageToParent, askUserState, audioConnectionState, authState, callFnState, chatProfileState, chatSettingsDefaultValueSelector, chatSettingsInputsState, chatSettingsValueState, commandsState, configState, currentThreadIdState, defaultChainlitContext, deleteMessageById, elementState, favoriteMessagesState, fetcher, firstUserInteraction, hasMessageById, isAiSpeakingState, isLastMessage, loadingState, mcpState, messagesState, modesState, nestMessages, resumeThreadErrorState, sessionIdState, sessionState, sideViewState, tasklistState, threadHistoryState, threadIdToResumeState, tokenCountState, updateMessageById, updateMessageContentById, useApi, useAudio, useAuth, useChatData, useChatInteract, useChatMessages, useChatSession, useConfig, userState, wavRecorderState, wavStreamPlayerState };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";function e(e,t){if(t==null||t>e.length)t=e.length;for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function t(e){if(Array.isArray(e))return e}function n(t){if(Array.isArray(t))return e(t)}function r(e){if(e===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return e}function a(e,t,n,r,a,o,s){try{var i=e[o](s);var u=i.value}catch(e){n(e);return}if(i.done){t(u)}else{Promise.resolve(u).then(r,a)}}function o(e){return function(){var t=this,n=arguments;return new Promise(function(r,o){var s=e.apply(t,n);function i(e){a(s,r,o,i,u,"next",e)}function u(e){a(s,r,o,i,u,"throw",e)}i(undefined)})}}function s(e,t){if(!(e instanceof t)){throw new TypeError("Cannot call a class as a function")}}function i(e,t,n){if(T()){i=Reflect.construct}else{i=function e(e,t,n){var r=[null];r.push.apply(r,t);var a=Function.bind.apply(e,r);var o=new a;if(n)C(o,n.prototype);return o}}return i.apply(null,arguments)}function u(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||false;r.configurable=true;if("value"in r)r.writable=true;Object.defineProperty(e,r.key,r)}}function c(e,t,n){if(t)u(e.prototype,t);if(n)u(e,n);return e}function l(e,t,n){if(t in e){Object.defineProperty(e,t,{value:n,enumerable:true,configurable:true,writable:true})}else{e[t]=n}return e}function f(){f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n){if(Object.prototype.hasOwnProperty.call(n,r)){e[r]=n[r]}}}return e};return f.apply(this,arguments)}function d(e){d=Object.setPrototypeOf?Object.getPrototypeOf:function e(e){return e.__proto__||Object.getPrototypeOf(e)};return d(e)}function h(e,t){if(typeof t!=="function"&&t!==null){throw new TypeError("Super expression must either be null or a function")}e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:true,configurable:true}});if(t)C(e,t)}function p(e,t){if(t!=null&&typeof Symbol!=="undefined"&&t[Symbol.hasInstance]){return!!t[Symbol.hasInstance](e)}else{return e instanceof t}}function v(e){return Function.toString.call(e).indexOf("[native code]")!==-1}function m(e){if(typeof Symbol!=="undefined"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function y(e,t){var n=e==null?null:typeof Symbol!=="undefined"&&e[Symbol.iterator]||e["@@iterator"];if(n==null)return;var r=[];var a=true;var o=false;var s,i;try{for(n=n.call(e);!(a=(s=n.next()).done);a=true){r.push(s.value);if(t&&r.length===t)break}}catch(e){o=true;i=e}finally{try{if(!a&&n["return"]!=null)n["return"]()}finally{if(o)throw i}}return r}function g(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function k(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function w(e){if(e===null||e===void 0)throw new TypeError("Cannot destructure "+e);return e}function b(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};var r=Object.keys(n);if(typeof Object.getOwnPropertySymbols==="function"){r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))}r.forEach(function(t){l(e,t,n[t])})}return e}function S(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);if(t){r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})}n.push.apply(n,r)}return n}function A(e,t){t=t!=null?t:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(e,Object.getOwnPropertyDescriptors(t))}else{S(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}function R(e,t){if(t&&(_(t)==="object"||typeof t==="function")){return t}return r(e)}function C(e,t){C=Object.setPrototypeOf||function e(e,t){e.__proto__=t;return e};return C(e,t)}function x(e,n){return t(e)||y(e,n)||E(e,n)||g()}function I(e){return n(e)||m(e)||E(e)||k()}function _(e){"@swc/helpers - typeof";return e&&typeof Symbol!=="undefined"&&e.constructor===Symbol?"symbol":typeof e}function E(t,n){if(!t)return;if(typeof t==="string")return e(t,n);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor)r=t.constructor.name;if(r==="Map"||r==="Set")return Array.from(r);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return e(t,n)}function P(e){var t=typeof Map==="function"?new Map:undefined;P=function e(e){if(e===null||!v(e))return e;if(typeof e!=="function"){throw new TypeError("Super expression must either be null or a function")}if(typeof t!=="undefined"){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return i(e,arguments,d(this).constructor)}n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:false,writable:true,configurable:true}});return C(n,e)};return P(e)}function T(){if(typeof Reflect==="undefined"||!Reflect.construct)return false;if(Reflect.construct.sham)return false;if(typeof Proxy==="function")return true;try{Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));return true}catch(e){return false}}function M(e){var t=T();return function n(){var n=d(e),r;if(t){var a=d(this).constructor;r=Reflect.construct(n,arguments,a)}else{r=n.apply(this,arguments)}return R(this,r)}}function D(e,t){var n,r,a,o,s={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]};return(o={next:i(0),"throw":i(1),"return":i(2)},typeof Symbol==="function"&&(o[Symbol.iterator]=function(){return this}),o);function i(e){return function(t){return u([e,t])}}function u(o){if(n)throw new TypeError("Generator is already executing.");while(s)try{if(n=1,r&&(a=o[0]&2?r["return"]:o[0]?r["throw"]||((a=r["return"])&&a.call(r),0):r.next)&&!(a=a.call(r,o[1])).done)return a;if(r=0,a)o=[o[0]&2,a.value];switch(o[0]){case 0:case 1:a=o;break;case 4:s.label++;return{value:o[1],done:false};case 5:s.label++;r=o[1];o=[0];continue;case 7:o=s.ops.pop();s.trys.pop();continue;default:if(!(a=s.trys,a=a.length>0&&a[a.length-1])&&(o[0]===6||o[0]===2)){s=0;continue}if(o[0]===3&&(!a||o[1]>a[0]&&o[1]<a[3])){s.label=o[1];break}if(o[0]===6&&s.label<a[1]){s.label=a[1];a=o;break}if(a&&s.label<a[2]){s.label=a[2];s.ops.push(o);break}if(a[2])s.ops.pop();s.trys.pop();continue}o=t.call(e,s)}catch(e){o=[6,e];r=0}finally{n=a=0}if(o[0]&5)throw o[1];return{value:o[0]?o[1]:void 0,done:true}}}var O=require("recoil");var j=require("lodash");var B=require("uuid");var L=require("react");var F=require("swr");var V=require("socket.io-client");var U=require("sonner");function q(e){return e&&e.__esModule?e:{default:e}}var N=/*#__PURE__*/q(F);var W=/*#__PURE__*/q(V);var z=function(e){var t={},n=new Date;return n.setHours(0,0,0,0),I(e).sort(function(e,t){return new Date(t.createdAt).getTime()-new Date(e.createdAt).getTime()}).forEach(function(e){var r=new Date(e.createdAt);r.setHours(0,0,0,0);var a=Math.floor((n.getTime()-r.getTime())/864e5),o;var s;a===0?o="Today":a===1?o="Yesterday":a<=7?o="Previous 7 days":a<=30?o="Previous 30 days":o=r.toLocaleString("default",{month:"long",year:"numeric"}),(s=t[o])!==null&&s!==void 0?s:t[o]=[],t[o].push(e)}),t};var H=[4186.01,4434.92,4698.63,4978.03,5274.04,5587.65,5919.91,6271.93,6644.88,7040,7458.62,7902.13],G=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"],J=[],K=[];for(var $=1;$<=8;$++)for(var Q=0;Q<H.length;Q++){var Y=H[Q];J.push(Y/Math.pow(2,8-$)),K.push(G[Q]+$)}var X=[32,2e3],Z=J.filter(function(e,t){return J[t]>X[0]&&J[t]<X[1]}),ee=K.filter(function(e,t){return J[t]>X[0]&&J[t]<X[1]});var et=/*#__PURE__*/function(){function e(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;var r=this;s(this,e);if(this.fftResults=[],n){var a=n.length,o=n.sampleRate,i=new OfflineAudioContext({length:a,sampleRate:o}),u=i.createBufferSource();u.buffer=n;var c=i.createAnalyser();c.fftSize=8192,c.smoothingTimeConstant=.1,u.connect(c);var l=1/60,f=a/o,d=function(e){var t=l*e;t<f&&i.suspend(t).then(function(){var t=new Float32Array(c.frequencyBinCount);c.getFloatFrequencyData(t),r.fftResults.push(t),d(e+1)}),e===1?i.startRendering():i.resume()};u.start(0),d(1),this.audio=t,this.context=i,this.analyser=c,this.sampleRate=o,this.audioBuffer=n}else{var h=new AudioContext,p=h.createMediaElementSource(t),v=h.createAnalyser();v.fftSize=8192,v.smoothingTimeConstant=.1,p.connect(v),v.connect(h.destination),this.audio=t,this.context=h,this.analyser=v,this.sampleRate=this.context.sampleRate,this.audioBuffer=null}}c(e,[{key:"getFrequencies",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"frequency",n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:-100,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:-30;var a=null;if(this.audioBuffer&&this.fftResults.length){var o=this.audio.currentTime/this.audio.duration,s=Math.min(o*this.fftResults.length|0,this.fftResults.length-1);a=this.fftResults[s]}return e.getFrequencies(this.analyser,this.sampleRate,a,t,n,r)}},{key:"resumeIfSuspended",value:function e(){var e=this;return o(function(){var t;return D(this,function(n){switch(n.label){case 0:t=e.context.state==="suspended";if(!t)return[3,2];return[4,e.context.resume()];case 1:t=n.sent();n.label=2;case 2:return[2,(t,!0)]}})})()}}],[{key:"getFrequencies",value:function e(e,t,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"frequency",a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-100,o=arguments.length>5&&arguments[5]!==void 0?arguments[5]:-30;n||(n=new Float32Array(e.frequencyBinCount),e.getFloatFrequencyData(n));var s=t/2,i=1/n.length*s,u,c,l;if(r==="music"||r==="voice"){var f=r==="voice"?Z:J,d=Array(f.length).fill(a);for(var h=0;h<n.length;h++){var p=h*i,v=n[h];for(var m=f.length-1;m>=0;m--)if(p>f[m]){d[m]=Math.max(d[m],v);break}}u=d,c=r==="voice"?Z:J,l=r==="voice"?ee:K}else u=Array.from(n),c=u.map(function(e,t){return i*t}),l=c.map(function(e){return"".concat(e.toFixed(2)," Hz")});var y=u.map(function(e){return Math.max(0,Math.min((e-a)/(o-a),1))});return{values:new Float32Array(y),frequencies:c,labels:l}}}]);return e}();globalThis.AudioAnalysis=et;var en=/*#__PURE__*/function(){function e(){s(this,e)}c(e,[{key:"_packData",value:function e(e,t){return[new Uint8Array([t,t>>8]),new Uint8Array([t,t>>8,t>>16,t>>24])][e]}},{key:"pack",value:function e(e,t){if(t===null||t===void 0?void 0:t.bitsPerSample)if(t===null||t===void 0?void 0:t.channels){if(!(t===null||t===void 0?void 0:t.data))throw new Error('Missing "data"')}else throw new Error('Missing "channels"');else throw new Error('Missing "bitsPerSample"');var n=t.bitsPerSample,r=t.channels,a=t.data,o=["RIFF",this._packData(1,4+(8+24)+(8+8)),"WAVE","fmt ",this._packData(1,16),this._packData(0,1),this._packData(0,r.length),this._packData(1,e),this._packData(1,e*r.length*n/8),this._packData(0,r.length*n/8),this._packData(0,n),"data",this._packData(1,r[0].length*r.length*n/8),a],s=new Blob(o,{type:"audio/mpeg"}),i=URL.createObjectURL(s);return{blob:s,url:i,channelCount:r.length,sampleRate:e,duration:a.byteLength/(r.length*e*2)}}}],[{key:"floatTo16BitPCM",value:function e(e){var t=new ArrayBuffer(e.length*2),n=new DataView(t),r=0;for(var a=0;a<e.length;a++,r+=2){var o=Math.max(-1,Math.min(1,e[a]));n.setInt16(r,o<0?o*32768:o*32767,!0)}return t}},{key:"mergeBuffers",value:function e(e,t){var n=new Uint8Array(e.byteLength+t.byteLength);return n.set(new Uint8Array(e),0),n.set(new Uint8Array(t),e.byteLength),n.buffer}}]);return e}();globalThis.WavPacker=en;var er="\nclass AudioProcessor extends AudioWorkletProcessor {\n\n constructor() {\n super();\n this.port.onmessage = this.receive.bind(this);\n this.initialize();\n }\n\n initialize() {\n this.foundAudio = false;\n this.recording = false;\n this.chunks = [];\n }\n\n /**\n * Concatenates sampled chunks into channels\n * Format is chunk[Left[], Right[]]\n */\n readChannelData(chunks, channel = -1, maxChannels = 9) {\n let channelLimit;\n if (channel !== -1) {\n if (chunks[0] && chunks[0].length - 1 < channel) {\n throw new Error(\n `Channel ${channel} out of range: max ${chunks[0].length}`\n );\n }\n channelLimit = channel + 1;\n } else {\n channel = 0;\n channelLimit = Math.min(chunks[0] ? chunks[0].length : 1, maxChannels);\n }\n const channels = [];\n for (let n = channel; n < channelLimit; n++) {\n const length = chunks.reduce((sum, chunk) => {\n return sum + chunk[n].length;\n }, 0);\n const buffers = chunks.map((chunk) => chunk[n]);\n const result = new Float32Array(length);\n let offset = 0;\n for (let i = 0; i < buffers.length; i++) {\n result.set(buffers[i], offset);\n offset += buffers[i].length;\n }\n channels[n] = result;\n }\n return channels;\n }\n\n /**\n * Combines parallel audio data into correct format,\n * channels[Left[], Right[]] to float32Array[LRLRLRLR...]\n */\n formatAudioData(channels) {\n if (channels.length === 1) {\n // Simple case is only one channel\n const float32Array = channels[0].slice();\n const meanValues = channels[0].slice();\n return { float32Array, meanValues };\n } else {\n const float32Array = new Float32Array(\n channels[0].length * channels.length\n );\n const meanValues = new Float32Array(channels[0].length);\n for (let i = 0; i < channels[0].length; i++) {\n const offset = i * channels.length;\n let meanValue = 0;\n for (let n = 0; n < channels.length; n++) {\n float32Array[offset + n] = channels[n][i];\n meanValue += channels[n][i];\n }\n meanValues[i] = meanValue / channels.length;\n }\n return { float32Array, meanValues };\n }\n }\n\n /**\n * Converts 32-bit float data to 16-bit integers\n */\n floatTo16BitPCM(float32Array) {\n const buffer = new ArrayBuffer(float32Array.length * 2);\n const view = new DataView(buffer);\n let offset = 0;\n for (let i = 0; i < float32Array.length; i++, offset += 2) {\n let s = Math.max(-1, Math.min(1, float32Array[i]));\n view.setInt16(offset, s < 0 ? s * 0x8000 : s * 0x7fff, true);\n }\n return buffer;\n }\n\n /**\n * Retrieves the most recent amplitude values from the audio stream\n * @param {number} channel\n */\n getValues(channel = -1) {\n const channels = this.readChannelData(this.chunks, channel);\n const { meanValues } = this.formatAudioData(channels);\n return { meanValues, channels };\n }\n\n /**\n * Exports chunks as an audio/wav file\n */\n export() {\n const channels = this.readChannelData(this.chunks);\n const { float32Array, meanValues } = this.formatAudioData(channels);\n const audioData = this.floatTo16BitPCM(float32Array);\n return {\n meanValues: meanValues,\n audio: {\n bitsPerSample: 16,\n channels: channels,\n data: audioData,\n },\n };\n }\n\n receive(e) {\n const { event, id } = e.data;\n let receiptData = {};\n switch (event) {\n case 'start':\n this.recording = true;\n break;\n case 'stop':\n this.recording = false;\n break;\n case 'clear':\n this.initialize();\n break;\n case 'export':\n receiptData = this.export();\n break;\n case 'read':\n receiptData = this.getValues();\n break;\n default:\n break;\n }\n // Always send back receipt\n this.port.postMessage({ event: 'receipt', id, data: receiptData });\n }\n\n sendChunk(chunk) {\n const channels = this.readChannelData([chunk]);\n const { float32Array, meanValues } = this.formatAudioData(channels);\n const rawAudioData = this.floatTo16BitPCM(float32Array);\n const monoAudioData = this.floatTo16BitPCM(meanValues);\n this.port.postMessage({\n event: 'chunk',\n data: {\n mono: monoAudioData,\n raw: rawAudioData,\n },\n });\n }\n\n process(inputList, outputList, parameters) {\n // Copy input to output (e.g. speakers)\n // Note that this creates choppy sounds with Mac products\n const sourceLimit = Math.min(inputList.length, outputList.length);\n for (let inputNum = 0; inputNum < sourceLimit; inputNum++) {\n const input = inputList[inputNum];\n const output = outputList[inputNum];\n const channelCount = Math.min(input.length, output.length);\n for (let channelNum = 0; channelNum < channelCount; channelNum++) {\n input[channelNum].forEach((sample, i) => {\n output[channelNum][i] = sample;\n });\n }\n }\n const inputs = inputList[0];\n // There's latency at the beginning of a stream before recording starts\n // Make sure we actually receive audio data before we start storing chunks\n let sliceIndex = 0;\n if (!this.foundAudio) {\n for (const channel of inputs) {\n sliceIndex = 0; // reset for each channel\n if (this.foundAudio) {\n break;\n }\n if (channel) {\n for (const value of channel) {\n if (value !== 0) {\n // find only one non-zero entry in any channel\n this.foundAudio = true;\n break;\n } else {\n sliceIndex++;\n }\n }\n }\n }\n }\n if (inputs && inputs[0] && this.foundAudio && this.recording) {\n // We need to copy the TypedArray, because the `process`\n // internals will reuse the same buffer to hold each input\n const chunk = inputs.map((input) => input.slice(sliceIndex));\n this.chunks.push(chunk);\n this.sendChunk(chunk);\n }\n return true;\n }\n}\n\nregisterProcessor('audio_processor', AudioProcessor);\n",ea=new Blob([er],{type:"application/javascript"}),eo=URL.createObjectURL(ea),es=eo;var ei=/*#__PURE__*/function(){function e(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=t.sampleRate,r=n===void 0?24e3:n,a=t.outputToSpeakers,o=a===void 0?!1:a,i=t.debug,u=i===void 0?!1:i;s(this,e);this.scriptSrc=es,this.sampleRate=r,this.outputToSpeakers=o,this.debug=!!u,this._deviceChangeCallback=null,this._devices=[],this.stream=null,this.processor=null,this.source=null,this.node=null,this.recording=!1,this._lastEventId=0,this.eventReceipts={},this.eventTimeout=5e3,this._chunkProcessor=function(){},this._chunkProcessorSize=void 0,this._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)}}c(e,[{key:"log",value:function e(){return this.debug&&this.log.apply(this,arguments),!0}},{key:"getSampleRate",value:function e(){return this.sampleRate}},{key:"getStatus",value:function e(){return this.processor?this.recording?"recording":"paused":"ended"}},{key:"_event",value:function e(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null;var r=this;return o(function(){var a,o,s;return D(this,function(i){switch(i.label){case 0:if(n=n||r.processor,!n)throw new Error("Can not send events without recording first");a={event:e,id:r._lastEventId++,data:t};n.port.postMessage(a);o=new Date().valueOf();i.label=1;case 1:if(!!r.eventReceipts[a.id])return[3,4];if(new Date().valueOf()-o>r.eventTimeout)throw new Error('Timeout waiting for "'.concat(e,'" event'));return[4,new Promise(function(e){return setTimeout(function(){return e(!0)},1)})];case 2:i.sent();i.label=3;case 3:return[3,1];case 4:s=r.eventReceipts[a.id];return[2,(delete r.eventReceipts[a.id],s)]}})})()}},{key:"listenForDeviceChange",value:function e(e){if(e===null&&this._deviceChangeCallback)navigator.mediaDevices.removeEventListener("devicechange",this._deviceChangeCallback),this._deviceChangeCallback=null;else if(e!==null){var t=this;var n=0,r=[],a=function(e){return e.map(function(e){return e.deviceId}).sort().join(",")},s=function(){var s=o(function(){var o,s;return D(this,function(i){switch(i.label){case 0:o=++n;return[4,t.listDevices()];case 1:s=i.sent();o===n&&a(r)!==a(s)&&(r=s,e(s.slice()));return[2]}})});return function e(){return s.apply(this,arguments)}}();navigator.mediaDevices.addEventListener("devicechange",s),s(),this._deviceChangeCallback=s}return!0}},{key:"requestPermission",value:function e(){return o(function(){var e,t;return D(this,function(n){switch(n.label){case 0:return[4,navigator.permissions.query({name:"microphone"})];case 1:e=n.sent();if(!(e.state==="denied"))return[3,2];window.alert("You must grant microphone access to use this feature.");return[3,6];case 2:if(!(e.state==="prompt"))return[3,6];n.label=3;case 3:n.trys.push([3,5,,6]);return[4,navigator.mediaDevices.getUserMedia({audio:!0})];case 4:n.sent().getTracks().forEach(function(e){return e.stop()});return[3,6];case 5:t=n.sent();window.alert("You must grant microphone access to use this feature.");return[3,6];case 6:return[2,!0]}})})()}},{key:"listDevices",value:function e(){var e=this;return o(function(){var t,n,r,a,o;return D(this,function(s){switch(s.label){case 0:if(!navigator.mediaDevices||!("enumerateDevices"in navigator.mediaDevices))throw new Error("Could not request user devices");return[4,e.requestPermission()];case 1:s.sent();return[4,navigator.mediaDevices.enumerateDevices()];case 2:t=s.sent().filter(function(e){return e.kind==="audioinput"}),n=t.findIndex(function(e){return e.deviceId==="default"}),r=[];if(n!==-1){a=t.splice(n,1)[0],o=t.findIndex(function(e){return e.groupId===a.groupId});o!==-1&&(a=t.splice(o,1)[0]),a.default=!0,r.push(a)}return[2,r.concat(t)]}})})()}},{key:"begin",value:function e(e){var t=this;return o(function(){var n,r,a,o,s,i,u,c;return D(this,function(l){switch(l.label){case 0:if(t.processor)throw new Error("Already connected: please call .end() to start a new session");if(!navigator.mediaDevices||!("getUserMedia"in navigator.mediaDevices))throw new Error("Could not request user media");l.label=1;case 1:l.trys.push([1,3,,4]);n={audio:!0};e&&(n.audio={deviceId:{exact:e}});return[4,navigator.mediaDevices.getUserMedia(n)];case 2:t.stream=l.sent();return[3,4];case 3:r=l.sent();throw new Error("Could not start media stream");case 4:a=new AudioContext({sampleRate:t.sampleRate}),o=a.createMediaStreamSource(t.stream);l.label=5;case 5:l.trys.push([5,7,,8]);return[4,a.audioWorklet.addModule(t.scriptSrc)];case 6:l.sent();return[3,8];case 7:s=l.sent();throw console.error(s),new Error("Could not add audioWorklet module: ".concat(t.scriptSrc));case 8:i=new AudioWorkletNode(a,"audio_processor");i.port.onmessage=function(e){var n=e.data,r=n.event,a=n.id,o=n.data;if(r==="receipt")t.eventReceipts[a]=o;else if(r==="chunk")if(t._chunkProcessorSize){var s=t._chunkProcessorBuffer;t._chunkProcessorBuffer={raw:en.mergeBuffers(s.raw,o.raw),mono:en.mergeBuffers(s.mono,o.mono)},t._chunkProcessorBuffer.mono.byteLength>=t._chunkProcessorSize&&(t._chunkProcessor(t._chunkProcessorBuffer),t._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)})}else t._chunkProcessor(o)};u=o.connect(i),c=a.createAnalyser();return[2,(c.fftSize=8192,c.smoothingTimeConstant=.1,u.connect(c),t.outputToSpeakers&&(console.warn("Warning: Output to speakers may affect sound quality,\nespecially due to system audio feedback preventative measures.\nuse only for debugging"),c.connect(a.destination)),t.source=o,t.node=u,t.analyser=c,t.processor=i,!0)]}})})()}},{key:"getFrequencies",value:function e(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"frequency",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:-100,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:-30;if(!this.processor)throw new Error("Session ended: please call .begin() first");return et.getFrequencies(this.analyser,this.sampleRate,null,e,t,n)}},{key:"pause",value:function e(){var e=this;return o(function(){return D(this,function(t){switch(t.label){case 0:if(e.processor){if(!e.recording)throw new Error("Already paused: please call .record() first")}else throw new Error("Session ended: please call .begin() first");e._chunkProcessorBuffer.raw.byteLength&&e._chunkProcessor(e._chunkProcessorBuffer),e.log("Pausing ...");return[4,e._event("stop")];case 1:return[2,(t.sent(),e.recording=!1,!0)]}})})()}},{key:"record",value:function e(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:function(){},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:8192;var n=this;return o(function(){return D(this,function(r){switch(r.label){case 0:if(n.processor){if(n.recording)throw new Error("Already recording: please call .pause() first");if(typeof e!="function")throw new Error("chunkProcessor must be a function")}else throw new Error("Session ended: please call .begin() first");n._chunkProcessor=e,n._chunkProcessorSize=t,n._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)},n.log("Recording ...");return[4,n._event("start")];case 1:return[2,(r.sent(),n.recording=!0,!0)]}})})()}},{key:"clear",value:function e(){var e=this;return o(function(){return D(this,function(t){switch(t.label){case 0:if(!e.processor)throw new Error("Session ended: please call .begin() first");return[4,e._event("clear")];case 1:return[2,(t.sent(),!0)]}})})()}},{key:"read",value:function e(){var e=this;return o(function(){return D(this,function(t){switch(t.label){case 0:if(!e.processor)throw new Error("Session ended: please call .begin() first");e.log("Reading ...");return[4,e._event("read")];case 1:return[2,t.sent()]}})})()}},{key:"save",value:function e(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;var t=this;return o(function(){var n;return D(this,function(r){switch(r.label){case 0:if(!t.processor)throw new Error("Session ended: please call .begin() first");if(!e&&t.recording)throw new Error("Currently recording: please call .pause() first, or call .save(true) to force");t.log("Exporting ...");return[4,t._event("export")];case 1:n=r.sent();return[2,new en().pack(t.sampleRate,n.audio)]}})})()}},{key:"end",value:function e(){var e=this;return o(function(){var t,n;return D(this,function(r){switch(r.label){case 0:if(!e.processor)throw new Error("Session ended: please call .begin() first");t=e.processor;e.log("Stopping ...");return[4,e._event("stop")];case 1:r.sent(),e.recording=!1,e.stream.getTracks().forEach(function(e){return e.stop()}),e.log("Exporting ...");return[4,e._event("export",{},t)];case 2:n=r.sent();return[2,(e.processor.disconnect(),e.source.disconnect(),e.node.disconnect(),e.analyser.disconnect(),e.stream=null,e.processor=null,e.source=null,e.node=null,new en().pack(e.sampleRate,n.audio))]}})})()}},{key:"quit",value:function e(){var e=this;return o(function(){var t;return D(this,function(n){switch(n.label){case 0:e.listenForDeviceChange(null);t=e.processor;if(!t)return[3,2];return[4,e.end()];case 1:t=n.sent();n.label=2;case 2:return[2,(t,!0)]}})})()}}],[{key:"decode",value:function e(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:24e3,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:-1;return o(function(){var r,a,o,s,i,u,c,l,f,d;return D(this,function(h){switch(h.label){case 0:r=new AudioContext({sampleRate:t});if(!p(e,Blob))return[3,2];if(n!==-1)throw new Error('Can not specify "fromSampleRate" when reading from Blob');o=e;return[4,o.arrayBuffer()];case 1:a=h.sent();return[3,5];case 2:if(!p(e,ArrayBuffer))return[3,3];if(n!==-1)throw new Error('Can not specify "fromSampleRate" when reading from ArrayBuffer');a=e,o=new Blob([a],{type:"audio/wav"});return[3,5];case 3:if(p(e,Int16Array)){i=e,s=new Float32Array(e.length);for(u=0;u<e.length;u++)s[u]=e[u]/32768}else if(p(e,Float32Array))s=e;else if(p(e,Array))s=new Float32Array(e);else throw new Error('"audioData" must be one of: Blob, Float32Arrray, Int16Array, ArrayBuffer, Array<number>');if(n===-1)throw new Error('Must specify "fromSampleRate" when reading from Float32Array, In16Array or Array');if(n<3e3)throw new Error('Minimum "fromSampleRate" is 3000 (3kHz)');i||(i=en.floatTo16BitPCM(s));c={bitsPerSample:16,channels:[s],data:i};o=new en().pack(n,c).blob;return[4,o.arrayBuffer()];case 4:a=h.sent();h.label=5;case 5:return[4,r.decodeAudioData(a)];case 6:l=h.sent(),f=l.getChannelData(0),d=URL.createObjectURL(o);return[2,{blob:o,url:d,values:f,audioBuffer:l}]}})})()}}]);return e}();globalThis.WavRecorder=ei;var eu="\nclass StreamProcessor extends AudioWorkletProcessor {\n constructor() {\n super();\n this.hasStarted = false;\n this.hasInterrupted = false;\n this.outputBuffers = [];\n this.bufferLength = 128;\n this.write = { buffer: new Float32Array(this.bufferLength), trackId: null };\n this.writeOffset = 0;\n this.trackSampleOffsets = {};\n this.port.onmessage = (event) => {\n if (event.data) {\n const payload = event.data;\n if (payload.event === 'write') {\n const int16Array = payload.buffer;\n const float32Array = new Float32Array(int16Array.length);\n for (let i = 0; i < int16Array.length; i++) {\n float32Array[i] = int16Array[i] / 0x8000; // Convert Int16 to Float32\n }\n this.writeData(float32Array, payload.trackId);\n } else if (\n payload.event === 'offset' ||\n payload.event === 'interrupt'\n ) {\n const requestId = payload.requestId;\n const trackId = this.write.trackId;\n const offset = this.trackSampleOffsets[trackId] || 0;\n this.port.postMessage({\n event: 'offset',\n requestId,\n trackId,\n offset,\n });\n if (payload.event === 'interrupt') {\n this.hasInterrupted = true;\n }\n } else {\n throw new Error(`Unhandled event \"${payload.event}\"`);\n }\n }\n };\n }\n\n writeData(float32Array, trackId = null) {\n let { buffer } = this.write;\n let offset = this.writeOffset;\n for (let i = 0; i < float32Array.length; i++) {\n buffer[offset++] = float32Array[i];\n if (offset >= buffer.length) {\n this.outputBuffers.push(this.write);\n this.write = { buffer: new Float32Array(this.bufferLength), trackId };\n buffer = this.write.buffer;\n offset = 0;\n }\n }\n this.writeOffset = offset;\n return true;\n }\n\n process(inputs, outputs, parameters) {\n const output = outputs[0];\n const outputChannelData = output[0];\n const outputBuffers = this.outputBuffers;\n if (this.hasInterrupted) {\n this.port.postMessage({ event: 'stop' });\n return false;\n } else if (outputBuffers.length) {\n this.hasStarted = true;\n const { buffer, trackId } = outputBuffers.shift();\n for (let i = 0; i < outputChannelData.length; i++) {\n outputChannelData[i] = buffer[i] || 0;\n }\n if (trackId) {\n this.trackSampleOffsets[trackId] =\n this.trackSampleOffsets[trackId] || 0;\n this.trackSampleOffsets[trackId] += buffer.length;\n }\n return true;\n } else if (this.hasStarted) {\n this.port.postMessage({ event: 'stop' });\n return false;\n } else {\n return true;\n }\n }\n}\n\nregisterProcessor('stream_processor', StreamProcessor);\n",ec=new Blob([eu],{type:"application/javascript"}),el=URL.createObjectURL(ec),ef=el;var ed=/*#__PURE__*/function(){function e(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=t.sampleRate,r=n===void 0?24e3:n,a=t.onStop;s(this,e);this.scriptSrc=ef,this.onStop=a,this.sampleRate=r,this.context=null,this.stream=null,this.analyser=null,this.trackSampleOffsets={},this.interruptedTrackIds={}}c(e,[{key:"connect",value:function e(){var e=this;return o(function(){var t,n,r;return D(this,function(a){switch(a.label){case 0:e.context=new AudioContext({sampleRate:e.sampleRate});t=e.context.state==="suspended";if(!t)return[3,2];return[4,e.context.resume()];case 1:t=a.sent();a.label=2;case 2:t;a.label=3;case 3:a.trys.push([3,5,,6]);return[4,e.context.audioWorklet.addModule(e.scriptSrc)];case 4:a.sent();return[3,6];case 5:n=a.sent();throw console.error(n),new Error("Could not add audioWorklet module: ".concat(e.scriptSrc));case 6:r=e.context.createAnalyser();return[2,(r.fftSize=8192,r.smoothingTimeConstant=.1,e.analyser=r,!0)]}})})()}},{key:"getFrequencies",value:function e(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"frequency",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:-100,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:-30;if(!this.analyser)throw new Error("Not connected, please call .connect() first");return et.getFrequencies(this.analyser,this.sampleRate,null,e,t,n)}},{key:"_start",value:function e(){var e=this;var t=new AudioWorkletNode(this.context,"stream_processor");return t.connect(this.context.destination),t.port.onmessage=function(n){var r,a;var o=n.data,s=o.event;if(s==="stop")(r=(a=e).onStop)===null||r===void 0?void 0:r.call(a),t.disconnect(),e.stream=null;else if(s==="offset"){var i=n.data,u=i.requestId,c=i.trackId,l=i.offset,f=l/e.sampleRate;e.trackSampleOffsets[u]={trackId:c,offset:l,currentTime:f}}},this.analyser.disconnect(),t.connect(this.analyser),this.stream=t,!0}},{key:"add16BitPCM",value:function e(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"default";if(typeof t!="string")throw new Error("trackId must be a string");if(this.interruptedTrackIds[t])return;this.stream||this._start();var n;if(p(e,Int16Array))n=e;else if(p(e,ArrayBuffer))n=new Int16Array(e);else throw new Error("argument must be Int16Array or ArrayBuffer");return this.stream.port.postMessage({event:"write",buffer:n,trackId:t}),n}},{key:"getTrackSampleOffset",value:function e(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;var t=this;return o(function(){var n,r,a;return D(this,function(o){switch(o.label){case 0:if(!t.stream)return[2,null];n=crypto.randomUUID();t.stream.port.postMessage({event:e?"interrupt":"offset",requestId:n});o.label=1;case 1:if(!!r)return[3,4];r=t.trackSampleOffsets[n];return[4,new Promise(function(e){return setTimeout(function(){return e()},1)})];case 2:o.sent();o.label=3;case 3:return[3,1];case 4:a=r.trackId;return[2,(e&&a&&(t.interruptedTrackIds[a]=!0),r)]}})})()}},{key:"interrupt",value:function e(){var e=this;return o(function(){return D(this,function(t){return[2,e.getTrackSampleOffset(!0)]})})()}}]);return e}();globalThis.WavStreamPlayer=ed;var eh=O.atom({key:"ThreadIdToResume",default:void 0}),ep=O.atom({key:"ResumeThreadErrorState",default:void 0}),ev=O.atom({key:"ChatProfile",default:void 0}),em=O.atom({key:"SessionId",default:B.v4()}),ey=O.selector({key:"SessionIdSelector",get:function(e){var t=e.get;return t(em)},set:function(e,t){var n=e.set;return n(em,p(t,O.DefaultValue)?B.v4():t)}}),eg=O.atom({key:"Session",dangerouslyAllowMutability:!0,default:void 0}),ek=O.atom({key:"Actions",default:[]}),ew=O.atom({key:"Messages",dangerouslyAllowMutability:!0,default:[]}),eb=O.atom({key:"Commands",default:[]}),eS=O.atom({key:"TokenCount",default:0}),eA=O.atom({key:"Loading",default:!1}),eR=O.atom({key:"AskUser",default:void 0}),eC=O.atom({key:"WavRecorder",dangerouslyAllowMutability:!0,default:new ei}),ex=O.atom({key:"WavStreamPlayer",dangerouslyAllowMutability:!0,default:new ed}),eI=O.atom({key:"AudioConnection",default:"off"}),e_=O.atom({key:"isAiSpeaking",default:!1}),eE=O.atom({key:"CallFn",default:void 0}),eP=O.atom({key:"ChatSettings",default:[]}),eT=O.selector({key:"ChatSettingsValue/Default",get:function(e){var t=e.get;return t(eP).reduce(function(e,t){return e[t.id]=t.initial,e},{})}}),eM=O.atom({key:"ChatSettingsValue",default:eT}),eD=O.atom({key:"DisplayElements",default:[]}),eO=O.atom({key:"TasklistElements",default:[]}),ej=O.atom({key:"FirstUserInteraction",default:void 0}),eB=O.atom({key:"User",default:void 0}),eL=O.atom({key:"ChainlitConfig",default:void 0}),eF=O.atom({key:"AuthConfig",default:void 0}),eV=O.atom({key:"ThreadHistory",default:{threads:void 0,currentThreadId:void 0,timeGroupedThreads:void 0,pageInfo:void 0},effects:[function(e){var t=e.setSelf,n=e.onSet;n(function(e,n){var r=e===null||e===void 0?void 0:e.timeGroupedThreads;(e===null||e===void 0?void 0:e.threads)&&!j.isEqual(e.threads,n===null||n===void 0?void 0:n.timeGroupedThreads)&&(r=z(e.threads)),t(A(b({},e),{timeGroupedThreads:r}))})}]}),eU=O.atom({key:"SideView",default:void 0}),eq=O.atom({key:"CurrentThreadId",default:void 0}),eN=function(e){return function(t){var n=t.setSelf,r=t.onSet;var a=localStorage.getItem(e);if(a!=null)try{n(JSON.parse(a))}catch(t){console.error('Error parsing localStorage value for key "'.concat(e,'":'),t)}r(function(t,n,r){r?localStorage.removeItem(e):localStorage.setItem(e,JSON.stringify(t))})}},eW=O.atom({key:"Mcp",default:[],effects:[eN("mcp_storage_key")]});var ez=function(){var e=O.useRecoilValue(eA),t=O.useRecoilValue(eD),n=O.useRecoilValue(eO),r=O.useRecoilValue(ek),a=O.useRecoilValue(eg),o=O.useRecoilValue(eR),s=O.useRecoilValue(eE),i=O.useRecoilValue(eP),u=O.useRecoilValue(eM),c=O.useRecoilValue(eT),l=(a===null||a===void 0?void 0:a.socket.connected)&&!(a===null||a===void 0?void 0:a.error),f=!l||e||(o===null||o===void 0?void 0:o.spec.type)==="file"||(o===null||o===void 0?void 0:o.spec.type)==="action"||(o===null||o===void 0?void 0:o.spec.type)==="element";return{actions:r,askUser:o,callFn:s,chatSettingsDefaultValue:c,chatSettingsInputs:i,chatSettingsValue:u,connected:l,disabled:f,elements:t,error:a===null||a===void 0?void 0:a.error,loading:e,tasklists:n}};var eH=function(e){var t=[];var n=true,r=false,a=undefined;try{for(var o=e[Symbol.iterator](),s;!(n=(s=o.next()).done);n=true){var i=s.value;t=eJ(t,i)}}catch(e){r=true;a=e}finally{try{if(!n&&o.return!=null){o.return()}}finally{if(r){throw a}}}return t},eG=function(e,t){if(e.length-1===t)return!0;for(var n=t+1;n<e.length;n++)if(!e[n].streaming)return!1;return!0},eJ=function(e,t){return eY(e,t.id)?eX(e,t.id,t):"parentId"in t&&t.parentId?e$(e,t.parentId,t):"indent"in t&&t.indent&&t.indent>0?eK(e,t.indent,t):I(e).concat([t])},eK=function(e,t,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;var a=I(e);if(a.length===0)return I(a).concat([n]);{var o=a.length-1,s=a[o];return s.steps=s.steps||[],r+1===t?(s.steps=I(s.steps).concat([n]),a[o]=b({},s),a):(s.steps=eK(s.steps,t,n,r+1),a[o]=b({},s),a)}},e$=function(e,t,n){var r=I(e);for(var a=0;a<r.length;a++){var o=r[a];j.isEqual(o.id,t)?(o.steps=o.steps?I(o.steps).concat([n]):[n],r[a]=b({},o)):eY(r,t)&&o.steps&&(o.steps=e$(o.steps,t,n),r[a]=b({},o))}return r},eQ=function(e,t){var n=true,r=false,a=undefined;try{for(var o=e[Symbol.iterator](),s;!(n=(s=o.next()).done);n=true){var i=s.value;if(j.isEqual(i.id,t))return i;if(i.steps&&i.steps.length>0){var u=eQ(i.steps,t);if(u)return u}}}catch(e){r=true;a=e}finally{try{if(!n&&o.return!=null){o.return()}}finally{if(r){throw a}}}},eY=function(e,t){return eQ(e,t)!==void 0},eX=function(e,t,n){var r=I(e);for(var a=0;a<r.length;a++){var o=r[a];j.isEqual(o.id,t)?r[a]=b({steps:o.steps},n):eY(r,t)&&o.steps&&(o.steps=eX(o.steps,t,n),r[a]=b({},o))}return r},eZ=function(e,t){var n=I(e);for(var r=0;r<n.length;r++){var a=n[r];a.id===t?n=I(n.slice(0,r)).concat(I(n.slice(r+1))):eY(n,t)&&a.steps&&(a.steps=eZ(a.steps,t),n[r]=b({},a))}return n},e0=function(e,t,n,r,a){var o=I(e);for(var s=0;s<o.length;s++){var i=o[s];j.isEqual(i.id,t)?("content"in i&&i.content!==void 0?r?i.content=n:i.content+=n:a?"input"in i&&i.input!==void 0&&(r?i.input=n:i.input+=n):"output"in i&&i.output!==void 0&&(r?i.output=n:i.output+=n),o[s]=b({},i)):i.steps&&(i.steps=e0(i.steps,t,n,r,a),o[s]=b({},i))}return o};var e1=function(){var e=x(O.useRecoilState(eF),2),t=e[0],n=e[1],r=x(O.useRecoilState(eB),2),a=r[0],o=r[1],s=O.useSetRecoilState(eV);return{authConfig:t,setAuthConfig:n,user:a,setUser:o,setThreadHistory:s}};var e2=function(){var e=o(function(e,t){var n;return D(this,function(r){switch(r.label){case 0:return[4,e.get(t)];case 1:return[2,(n=r.sent())===null||n===void 0?void 0:n.json()]}})});return function t(t,n){return e.apply(this,arguments)}}(),e3=function(e){var t=new tt("","webapp");return Object.assign(t,e),t};function e4(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};var n=f({},w(t));var r=L.useContext(tr),a=e1(),o=a.setUser,s=L.useMemo(function(){return function(e){var t=x(e,1),a=t[0];n.onErrorRetry||(n.onErrorRetry=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++){t[n]=arguments[n]}var r;var a=x(t,1),s=a[0];if(s.status===401){o(null);return}return(r=F.SWRConfig.defaultValue).onErrorRetry.apply(r,I(t))});var s=e3(r);return s.on401=s.onError=void 0,e2(s,a)}},[r]),i=L.useMemo(function(){return e?[e]:null},[e]);return N.default(i,s,n)}var e6=function(){var e=e1(),t=e.authConfig,n=e.setAuthConfig,r=e4(t?null:"/auth/config"),a=r.data,o=r.isLoading;return L.useEffect(function(){a&&n(a)},[a,n]),{authConfig:t,isLoading:o}};var e8=function(){var e=L.useContext(tr),t=e1(),n=t.setUser,r=t.setThreadHistory;return{logout:/*#__PURE__*/o(function(){var t;var a=arguments;return D(this,function(o){switch(o.label){case 0:t=a.length>0&&a[0]!==void 0?a[0]:!1;return[4,e.logout()];case 1:o.sent(),n(void 0),r(void 0),t&&window.location.reload();return[2]}})})}};var e5=function(){var e=e1(),t=e.user,n=e.setUser,r=e4("/user"),a=r.data,o=r.error,s=r.mutate;return L.useEffect(function(){a&&n(a)},[a,n]),L.useEffect(function(){o&&n(null)},[o]),{user:t,setUserFromAPI:s}};var e7=function(){var e=e6(),t=e.authConfig,n=e8(),r=n.logout,a=e5(),o=a.user,s=a.setUserFromAPI,i=!!t&&(!t.requireLogin||o!==void 0);return t&&!t.requireLogin?{data:t,user:null,isReady:i,isAuthenticated:!0,logout:function(){return Promise.resolve()},setUserFromAPI:function(){return Promise.resolve()}}:{data:t,user:o,isReady:i,isAuthenticated:!!o,logout:r,setUserFromAPI:s}};var e9=/*#__PURE__*/function(e){h(n,e);var t=M(n);function n(e,r,a){s(this,n);var o;o=t.call(this,e);o.status=r,o.detail=a;return o}c(n,[{key:"toString",value:function e(){return this.detail?"".concat(this.message,": ").concat(this.detail):this.message}}]);return n}(P(Error)),te=/*#__PURE__*/function(){function e(t,n,r,a,o){s(this,e);this.httpEndpoint=t;this.type=n;this.additionalQueryParams=r;this.on401=a;this.onError=o}c(e,[{key:"buildEndpoint",value:function e(e){var t="".concat(this.httpEndpoint).concat(e);this.httpEndpoint.endsWith("/")&&(t="".concat(this.httpEndpoint.slice(0,-1)).concat(e));var n=new URL(t);if(this.additionalQueryParams){var r=new URLSearchParams(this.additionalQueryParams),a=n.search?"&":"?";n.search=n.search+"".concat(a).concat(r.toString())}return n.toString()}},{key:"getDetailFromErrorResponse",value:function e(e){return o(function(){var t,n;return D(this,function(r){switch(r.label){case 0:r.trys.push([0,2,,3]);return[4,e.json()];case 1:return[2,(t=r.sent())===null||t===void 0?void 0:t.detail];case 2:n=r.sent();console.error("Unable to parse error response",n);return[3,3];case 3:return[2]}})})()}},{key:"handleRequestError",value:function e(e){p(e,e9)&&(e.status===401&&this.on401&&this.on401(),this.onError&&this.onError(e)),console.error(e)}},{key:"fetch",value:function e(e,t,n,r){var a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{};var s=this;return o(function(){var o,i,u,c;return D(this,function(l){switch(l.label){case 0:l.trys.push([0,4,,5]);p(n,FormData)?o=n:(a["Content-Type"]="application/json",o=n?JSON.stringify(n):null);return[4,fetch(s.buildEndpoint(t),{method:e,credentials:"include",headers:a,signal:r,body:o})];case 1:i=l.sent();if(!!i.ok)return[3,3];return[4,s.getDetailFromErrorResponse(i)];case 2:u=l.sent();throw new e9(i.statusText,i.status,u);case 3:return[2,i];case 4:c=l.sent();throw s.handleRequestError(c),c;case 5:return[2]}})})()}},{key:"get",value:function e(e){var t=this;return o(function(){return D(this,function(n){switch(n.label){case 0:return[4,t.fetch("GET",e)];case 1:return[2,n.sent()]}})})()}},{key:"post",value:function e(e,t,n){var r=this;return o(function(){return D(this,function(a){switch(a.label){case 0:return[4,r.fetch("POST",e,t,n)];case 1:return[2,a.sent()]}})})()}},{key:"put",value:function e(e,t){var n=this;return o(function(){return D(this,function(r){switch(r.label){case 0:return[4,n.fetch("PUT",e,t)];case 1:return[2,r.sent()]}})})()}},{key:"patch",value:function e(e,t){var n=this;return o(function(){return D(this,function(r){switch(r.label){case 0:return[4,n.fetch("PATCH",e,t)];case 1:return[2,r.sent()]}})})()}},{key:"delete",value:function e(e,t){var n=this;return o(function(){return D(this,function(r){switch(r.label){case 0:return[4,n.fetch("DELETE",e,t)];case 1:return[2,r.sent()]}})})()}}]);return e}(),tt=/*#__PURE__*/function(e){h(n,e);var t=M(n);function n(){s(this,n);return t.apply(this,arguments)}c(n,[{key:"headerAuth",value:function e(){var e=this;return o(function(){return D(this,function(t){switch(t.label){case 0:return[4,e.post("/auth/header",{})];case 1:return[2,t.sent().json()]}})})()}},{key:"jwtAuth",value:function e(e){var t=this;return o(function(){return D(this,function(n){switch(n.label){case 0:return[4,t.fetch("POST","/auth/jwt",void 0,void 0,{Authorization:"Bearer ".concat(e)})];case 1:return[2,n.sent().json()]}})})()}},{key:"stickyCookie",value:function e(e){var t=this;return o(function(){return D(this,function(n){switch(n.label){case 0:return[4,t.fetch("POST","/set-session-cookie",{session_id:e})];case 1:return[2,n.sent().json()]}})})()}},{key:"passwordAuth",value:function e(e){var t=this;return o(function(){return D(this,function(n){switch(n.label){case 0:return[4,t.post("/login",e)];case 1:return[2,n.sent().json()]}})})()}},{key:"getUser",value:function e(){var e=this;return o(function(){return D(this,function(t){switch(t.label){case 0:return[4,e.get("/user")];case 1:return[2,t.sent().json()]}})})()}},{key:"logout",value:function e(){var e=this;return o(function(){return D(this,function(t){switch(t.label){case 0:return[4,e.post("/logout",{})];case 1:return[2,t.sent().json()]}})})()}},{key:"setFeedback",value:function e(e,t){var n=this;return o(function(){return D(this,function(r){switch(r.label){case 0:return[4,n.put("/feedback",{feedback:e,sessionId:t})];case 1:return[2,r.sent().json()]}})})()}},{key:"deleteFeedback",value:function e(e){var t=this;return o(function(){return D(this,function(n){switch(n.label){case 0:return[4,t.delete("/feedback",{feedbackId:e})];case 1:return[2,n.sent().json()]}})})()}},{key:"listThreads",value:function e(e,t){var n=this;return o(function(){return D(this,function(r){switch(r.label){case 0:return[4,n.post("/project/threads",{pagination:e,filter:t})];case 1:return[2,r.sent().json()]}})})()}},{key:"renameThread",value:function e(e,t){var n=this;return o(function(){return D(this,function(r){switch(r.label){case 0:return[4,n.put("/project/thread",{threadId:e,name:t})];case 1:return[2,r.sent().json()]}})})()}},{key:"deleteThread",value:function e(e){var t=this;return o(function(){return D(this,function(n){switch(n.label){case 0:return[4,t.delete("/project/thread",{threadId:e})];case 1:return[2,n.sent().json()]}})})()}},{key:"uploadFile",value:function e(e,t,n,r){var a=this;var o=new XMLHttpRequest;o.withCredentials=!0;var s=new Promise(function(s,i){var u=new FormData;u.append("file",e);var c=r?"&ask_parent_id=".concat(r):"";o.open("POST",a.buildEndpoint("/project/file?session_id=".concat(n).concat(c)),!0),o.upload.onprogress=function(e){if(e.lengthComputable){var n=e.loaded/e.total*100;t(n)}},o.onload=function(){if(o.status===200){var e=JSON.parse(o.responseText);s(e);return}var t=o.getResponseHeader("Content-Type");if(t&&t.includes("application/json")){var n=JSON.parse(o.responseText);i(n.detail)}else i("Upload failed")},o.onerror=function(){i("Upload error")},o.send(u)});return{xhr:o,promise:s}}},{key:"callAction",value:function e(e,t){var n=this;return o(function(){return D(this,function(r){switch(r.label){case 0:return[4,n.post("/project/action",{sessionId:t,action:e})];case 1:return[2,r.sent().json()]}})})()}},{key:"updateElement",value:function e(e,t){var n=this;return o(function(){return D(this,function(r){switch(r.label){case 0:return[4,n.put("/project/element",{sessionId:t,element:e})];case 1:return[2,r.sent().json()]}})})()}},{key:"deleteElement",value:function e(e,t){var n=this;return o(function(){return D(this,function(r){switch(r.label){case 0:return[4,n.delete("/project/element",{sessionId:t,element:e})];case 1:return[2,r.sent().json()]}})})()}},{key:"connectStdioMCP",value:function e(e,t,n){var r=this;return o(function(){return D(this,function(a){switch(a.label){case 0:return[4,r.post("/mcp",{sessionId:e,name:t,fullCommand:n,clientType:"stdio"})];case 1:return[2,a.sent().json()]}})})()}},{key:"connectSseMCP",value:function e(e,t,n,r){var a=this;return o(function(){return D(this,function(o){switch(o.label){case 0:return[4,a.post("/mcp",A(b({sessionId:e,name:t,url:n},r?{headers:r}:{}),{clientType:"sse"}))];case 1:return[2,o.sent().json()]}})})()}},{key:"connectStreamableHttpMCP",value:function e(e,t,n,r){var a=this;return o(function(){return D(this,function(o){switch(o.label){case 0:return[4,a.post("/mcp",A(b({sessionId:e,name:t,url:n},r?{headers:r}:{}),{clientType:"streamable-http"}))];case 1:return[2,o.sent().json()]}})})()}},{key:"disconnectMcp",value:function e(e,t){var n=this;return o(function(){return D(this,function(r){switch(r.label){case 0:return[4,n.delete("/mcp",{sessionId:e,name:t})];case 1:return[2,r.sent().json()]}})})()}},{key:"getElementUrl",value:function e(e,t){var n="?session_id=".concat(t);return this.buildEndpoint("/project/file/".concat(e).concat(n))}},{key:"getLogoEndpoint",value:function e(e,t){return t||this.buildEndpoint("/logo?theme=".concat(e))}},{key:"getOAuthEndpoint",value:function e(e){return this.buildEndpoint("/auth/oauth/".concat(e))}},{key:"shareThread",value:function e(e,t){var n=this;return o(function(){return D(this,function(r){switch(r.label){case 0:return[4,n.put("/project/thread/share",{threadId:e,isShared:t})];case 1:return[2,r.sent().json()]}})})()}}]);return n}(te);var tn=void 0,tr=L.createContext(new tt("http://localhost:8000","webapp"));var ta=function(){var e=L.useContext(tr),t=O.useRecoilValue(eg),n=O.useRecoilValue(eR),r=O.useRecoilValue(ey),a=O.useResetRecoilState(eP),o=O.useResetRecoilState(ey),s=O.useResetRecoilState(eM),i=O.useSetRecoilState(ej),u=O.useSetRecoilState(eA),c=O.useSetRecoilState(ew),l=O.useSetRecoilState(eD),f=O.useSetRecoilState(eO),d=O.useSetRecoilState(ek),h=O.useSetRecoilState(eS),p=O.useSetRecoilState(eh),v=O.useSetRecoilState(eU),m=O.useSetRecoilState(eq),y=L.useCallback(function(){t===null||t===void 0?void 0:t.socket.emit("clear_session"),t===null||t===void 0?void 0:t.socket.disconnect(),p(void 0),o(),i(void 0),c([]),l([]),f([]),d([]),h(0),a(),s(),v(void 0),m(void 0)},[t]),g=L.useCallback(function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];e.id||(e.id=B.v4()),e.createdAt||(e.createdAt=new Date().toISOString()),c(function(t){return eJ(t,e)}),t===null||t===void 0?void 0:t.socket.emit("client_message",{message:e,fileReferences:n})},[t===null||t===void 0?void 0:t.socket]),k=L.useCallback(function(e){t===null||t===void 0?void 0:t.socket.emit("edit_message",{message:e})},[t===null||t===void 0?void 0:t.socket]),w=L.useCallback(function(e){t===null||t===void 0?void 0:t.socket.emit("window_message",e)},[t===null||t===void 0?void 0:t.socket]),b=L.useCallback(function(){t===null||t===void 0?void 0:t.socket.emit("audio_start")},[t===null||t===void 0?void 0:t.socket]),S=L.useCallback(function(e,n,r,a){t===null||t===void 0?void 0:t.socket.emit("audio_chunk",{isStart:e,mimeType:n,elapsedTime:r,data:a})},[t===null||t===void 0?void 0:t.socket]),A=L.useCallback(function(){t===null||t===void 0?void 0:t.socket.emit("audio_end")},[t===null||t===void 0?void 0:t.socket]),R=L.useCallback(function(e){n&&(n.parentId&&(e.parentId=n.parentId),c(function(t){return eJ(t,e)}),n.callback(e))},[n]),C=L.useCallback(function(e){t===null||t===void 0?void 0:t.socket.emit("chat_settings_change",e)},[t===null||t===void 0?void 0:t.socket]),x=L.useCallback(function(){c(function(e){return e.map(function(e){return e.streaming=!1,e})}),u(!1),t===null||t===void 0?void 0:t.socket.emit("stop")},[t===null||t===void 0?void 0:t.socket]);return{uploadFile:L.useCallback(function(t,n,a){return e.uploadFile(t,n,r,a)},[r]),clear:y,replyMessage:R,sendMessage:g,editMessage:k,windowMessage:w,startAudioStream:b,sendAudioChunk:S,endAudioStream:A,stopTask:x,setIdToResume:p,updateChatSettings:C}};var to=function(){var e=O.useRecoilValue(ew),t=O.useRecoilValue(ej);return{threadId:O.useRecoilValue(eq),messages:e,firstInteraction:t}};var ts=function(){var e=L.useContext(tr),t=O.useRecoilValue(ey),n=x(O.useRecoilState(eg),2),r=n[0],a=n[1],s=O.useSetRecoilState(e_),i=O.useSetRecoilState(eI),u=O.useResetRecoilState(eM),c=O.useSetRecoilState(eM),l=O.useSetRecoilState(ej),f=O.useSetRecoilState(eA),d=O.useSetRecoilState(eW),h=O.useRecoilValue(ex),p=O.useRecoilValue(eC),v=O.useSetRecoilState(ew),m=O.useSetRecoilState(eR),y=O.useSetRecoilState(eE),g=O.useSetRecoilState(eb),k=O.useSetRecoilState(eU),w=O.useSetRecoilState(eD),S=O.useSetRecoilState(eO),R=O.useSetRecoilState(ek),C=O.useSetRecoilState(eP),_=O.useSetRecoilState(eS),E=x(O.useRecoilState(ev),2),P=E[0],T=E[1],M=O.useRecoilValue(eh),B=O.useSetRecoilState(ep),F=x(O.useRecoilState(eq),2),V=F[0],q=F[1];L.useEffect(function(){(r===null||r===void 0?void 0:r.socket)&&(r.socket.auth.threadId=V||"")},[V]);var N=L.useCallback(function(){var n=o(function(n){var r,x,E,O,j,L,F,V,N,z;return D(this,function(H){switch(H.label){case 0:r=n.transports,x=n.userEnv;E=new URL(e.httpEndpoint),O=E.protocol,j=E.host,L=E.pathname,F="".concat(O,"//").concat(j),V=L&&L!=="/"?"".concat(L,"/ws/socket.io"):"/ws/socket.io";H.label=1;case 1:H.trys.push([1,3,,4]);return[4,e.stickyCookie(t)];case 2:H.sent();return[3,4];case 3:N=H.sent();console.error("Failed to set sticky session cookie: ".concat(N));return[3,4];case 4:z=W.default(F,{path:V,withCredentials:!0,transports:r,auth:{clientType:e.type,sessionId:t,threadId:M||"",userEnv:JSON.stringify(x),chatProfile:P?encodeURIComponent(P):""}});a(function(e){var t,n;return e===null||e===void 0?void 0:(t=e.socket)===null||t===void 0?void 0:t.removeAllListeners(),e===null||e===void 0?void 0:(n=e.socket)===null||n===void 0?void 0:n.close(),{socket:z}}),z.on("connect",function(){z.emit("connection_successful"),a(function(e){return A(b({},e),{error:!1})}),d(function(n){return n.map(function(n){var r;return n.clientType==="sse"?r=e.connectSseMCP(t,n.name,n.url):n.clientType==="streamable-http"?r=e.connectStreamableHttpMCP(t,n.name,n.url):r=e.connectStdioMCP(t,n.name,n.command),r.then(function(){var e=o(function(e){var t,n;return D(this,function(r){t=e.success,n=e.mcp;d(function(e){return e.map(function(e){return e.name===n.name?A(b({},e),{status:t?"connected":"failed",tools:n?n.tools:e.tools}):e})});return[2]})});return function(t){return e.apply(this,arguments)}}()).catch(function(){d(function(e){return e.map(function(e){return e.name===n.name?A(b({},e),{status:"failed"}):e})})}),A(b({},n),{status:"connecting"})})})}),z.on("connect_error",function(e){a(function(e){return A(b({},e),{error:!0})})}),z.on("task_start",function(){f(!0)}),z.on("task_end",function(){f(!1)}),z.on("reload",function(){z.emit("clear_session"),window.location.reload()}),z.on("audio_connection",function(){var e=o(function(e){var t,n,r;return D(this,function(a){switch(a.label){case 0:if(!(e==="on"))return[3,4];t=!0,n=Date.now(),r="pcm16";return[4,p.begin()];case 1:a.sent();return[4,h.connect()];case 2:a.sent();return[4,p.record(function(){var e=o(function(e){var a;return D(this,function(o){a=Date.now()-n;z.emit("audio_chunk",{isStart:t,mimeType:r,elapsedTime:a,data:e.mono}),t=!1;return[2]})});return function(t){return e.apply(this,arguments)}}())];case 3:a.sent(),h.onStop=function(){return s(!1)};return[3,7];case 4:return[4,p.end()];case 5:a.sent();return[4,h.interrupt()];case 6:a.sent();a.label=7;case 7:i(e);return[2]}})});return function(t){return e.apply(this,arguments)}}()),z.on("audio_chunk",function(e){h.add16BitPCM(e.data,e.track),s(!0)}),z.on("audio_interrupt",function(){h.interrupt()}),z.on("resume_thread",function(e){var t,n,r,a,o;var s=!!(e===null||e===void 0?void 0:(t=e.metadata)===null||t===void 0?void 0:t.viewer_read_only);!s&&M&&e.id!==M&&(window.location.href="/thread/".concat(e.id)),!s&&M&&q(e.id);var i=[];var u=true,l=false,f=undefined;try{for(var d=e.steps[Symbol.iterator](),h;!(u=(h=d.next()).done);u=true){var p=h.value;i=eJ(i,p)}}catch(e){l=true;f=e}finally{try{if(!u&&d.return!=null){d.return()}}finally{if(l){throw f}}}((n=e.metadata)===null||n===void 0?void 0:n.chat_profile)&&T((r=e.metadata)===null||r===void 0?void 0:r.chat_profile),((a=e.metadata)===null||a===void 0?void 0:a.chat_settings)&&c((o=e.metadata)===null||o===void 0?void 0:o.chat_settings),v(i);var m=e.elements||[];S(m.filter(function(e){return e.type==="tasklist"})),w(m.filter(function(e){return["avatar","tasklist"].indexOf(e.type)===-1}))}),z.on("resume_thread_error",function(e){B(e)}),z.on("new_message",function(e){v(function(t){return eJ(t,e)})}),z.on("first_interaction",function(e){l(e.interaction),q(e.thread_id)}),z.on("update_message",function(e){v(function(t){return eX(t,e.id,e)})}),z.on("delete_message",function(e){v(function(t){return eZ(t,e.id)})}),z.on("stream_start",function(e){v(function(t){return eJ(t,e)})}),z.on("stream_token",function(e){var t=e.id,n=e.token,r=e.isSequence,a=e.isInput;v(function(e){return e0(e,t,n,r,a)})}),z.on("ask",function(e,t){var n=e.msg,r=e.spec;m({spec:r,callback:t,parentId:n.parentId}),v(function(e){return eJ(e,n)}),f(!1)}),z.on("ask_timeout",function(){m(void 0),f(!1)}),z.on("clear_ask",function(){m(void 0)}),z.on("call_fn",function(e,t){var n=e.name,r=e.args;y({name:n,args:r,callback:t})}),z.on("clear_call_fn",function(){y(void 0)}),z.on("call_fn_timeout",function(){y(void 0)}),z.on("chat_settings",function(e){C(e),u()}),z.on("set_commands",function(e){g(e)}),z.on("set_sidebar_title",function(e){k(function(t){return(t===null||t===void 0?void 0:t.title)===e?t:{title:e,elements:(t===null||t===void 0?void 0:t.elements)||[]}})}),z.on("set_sidebar_elements",function(n){var r=n.elements,a=n.key;r.length?(r.forEach(function(n){!n.url&&n.chainlitKey&&(n.url=e.getElementUrl(n.chainlitKey,t))}),k(function(e){return(e===null||e===void 0?void 0:e.key)===a?e:{title:(e===null||e===void 0?void 0:e.title)||"",elements:r,key:a}})):k(void 0)}),z.on("element",function(n){!n.url&&n.chainlitKey&&(n.url=e.getElementUrl(n.chainlitKey,t)),n.type==="tasklist"?S(function(e){var t=e.findIndex(function(e){return e.id===n.id});return t===-1?I(e).concat([n]):I(e.slice(0,t)).concat([n],I(e.slice(t+1)))}):w(function(e){var t=e.findIndex(function(e){return e.id===n.id});return t===-1?I(e).concat([n]):I(e.slice(0,t)).concat([n],I(e.slice(t+1)))})}),z.on("remove_element",function(e){w(function(t){return t.filter(function(t){return t.id!==e.id})}),S(function(t){return t.filter(function(t){return t.id!==e.id})})}),z.on("action",function(e){R(function(t){return I(t).concat([e])})}),z.on("remove_action",function(e){R(function(t){var n=t.findIndex(function(t){return t.id===e.id});return n===-1?t:I(t.slice(0,n)).concat(I(t.slice(n+1)))})}),z.on("token_usage",function(e){_(function(t){return t+e})}),z.on("window_message",function(e){window.parent&&window.parent.postMessage(e,"*")}),z.on("toast",function(e){if(!e.message){console.warn("No message received for toast.");return}switch(e.type){case"info":U.toast.info(e.message);break;case"error":U.toast.error(e.message);break;case"success":U.toast.success(e.message);break;case"warning":U.toast.warning(e.message);break;default:U.toast(e.message);break}});return[2]}})});return function(e){return n.apply(this,arguments)}}(),[a,t,M,P]),z=L.useCallback(j.debounce(N,200),[N]),H=L.useCallback(function(){(r===null||r===void 0?void 0:r.socket)&&(r.socket.removeAllListeners(),r.socket.close())},[r]);return{connect:z,disconnect:H,session:r,sessionId:t,chatProfile:P,idToResume:M,setChatProfile:T}};var ti=function(){var e=x(O.useRecoilState(eI),2),t=e[0],n=e[1],r=O.useRecoilValue(eC),a=O.useRecoilValue(ex),s=O.useRecoilValue(e_),i=ta(),u=i.startAudioStream,c=i.endAudioStream,l=L.useCallback(/*#__PURE__*/o(function(){return D(this,function(e){switch(e.label){case 0:n("connecting");return[4,u()];case 1:e.sent();return[2]}})}),[u]),f=L.useCallback(/*#__PURE__*/o(function(){return D(this,function(e){switch(e.label){case 0:n("off");return[4,r.end()];case 1:e.sent();return[4,a.interrupt()];case 2:e.sent();return[4,c()];case 3:e.sent();return[2]}})}),[c,r,a]);return{startConversation:l,endConversation:f,audioConnection:t,isAiSpeaking:s,wavRecorder:r,wavStreamPlayer:a}};var tu=function(){var e=x(O.useRecoilState(eL),2),t=e[0],n=e[1],r=e7(),a=r.isAuthenticated,o=O.useRecoilValue(ev),s=navigator.language||"en-US",i=L.useRef(o),u=a?"/project/settings?language=".concat(s).concat(o?"&chat_profile=".concat(encodeURIComponent(o)):""):null,c=a&&!t,l=e4(c?u:null),f=l.data,d=l.error,h=l.isLoading;return L.useEffect(function(){f&&n(f)},[f,n]),L.useEffect(function(){i.current!==o&&(n(void 0),i.current=o)},[o,n]),{config:t,error:d,isLoading:h,language:s}};var tc=new WeakMap,tl=function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;var a,o,s;if(r&&(o=t.toString(),s=n.toString(),a=tc.has(e)?tc.get(e):{},tc.set(e,a),a[o]=a[o]||{},a[o][s]))return a[o][s];var i=e.length,u=new Array(t);if(t<=i){u.fill(0);var c=new Array(t).fill(0);for(var l=0;l<i;l++){var f=Math.floor(l*(t/i));n?u[f]=Math.max(u[f],Math.abs(e[l])):u[f]+=Math.abs(e[l]),c[f]++}if(!n)for(var d=0;d<u.length;d++)u[d]=u[d]/c[d]}else for(var h=0;h<t;h++){var p=h*(i-1)/(t-1),v=Math.floor(p),m=Math.ceil(p),y=p-v;m>=i?u[h]=e[i-1]:u[h]=e[v]*(1-y)+e[m]*y}return r&&(a[o][s]=u),u},tf={drawBars:function(e,t,n,r,a){var o=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0,s=arguments.length>6&&arguments[6]!==void 0?arguments[6]:0,i=arguments.length>7&&arguments[7]!==void 0?arguments[7]:0,u=arguments.length>8&&arguments[8]!==void 0?arguments[8]:!1;o=Math.floor(Math.min(o,(n-i)/(Math.max(s,1)+i))),o||(o=Math.floor((n-i)/(Math.max(s,1)+i))),s||(s=(n-i)/o-i);var c=tl(t,o,!0);for(var l=0;l<o;l++){var f=Math.abs(c[l]),d=Math.max(1,f*r),h=i+l*(s+i),p=u?(r-d)/2:r-d,v=Math.min(s/2,d/2);e.fillStyle=a,e.beginPath(),e.moveTo(h+v,p),e.lineTo(h+s-v,p),e.arcTo(h+s,p,h+s,p+v,v),e.lineTo(h+s,p+d-v),e.arcTo(h+s,p+d,h+s-v,p+d,v),e.lineTo(h+v,p+d),e.arcTo(h,p+d,h,p+d-v,v),e.lineTo(h,p+v),e.arcTo(h,p,h+v,p,v),e.closePath(),e.fill()}}};Object.defineProperty(exports,"Socket",{enumerable:true,get:function e(){return V.Socket}});exports.APIBase=te;exports.ChainlitAPI=tt;exports.ChainlitContext=tr;exports.ClientError=e9;exports.WavRenderer=tf;exports.actionState=ek;exports.addMessage=eJ;exports.addMessageToParent=e$;exports.askUserState=eR;exports.audioConnectionState=eI;exports.authState=eF;exports.callFnState=eE;exports.chatProfileState=ev;exports.chatSettingsDefaultValueSelector=eT;exports.chatSettingsInputsState=eP;exports.chatSettingsValueState=eM;exports.commandsState=eb;exports.configState=eL;exports.currentThreadIdState=eq;exports.defaultChainlitContext=tn;exports.deleteMessageById=eZ;exports.elementState=eD;exports.fetcher=e2;exports.firstUserInteraction=ej;exports.hasMessageById=eY;exports.isAiSpeakingState=e_;exports.isLastMessage=eG;exports.loadingState=eA;exports.mcpState=eW;exports.messagesState=ew;exports.nestMessages=eH;exports.resumeThreadErrorState=ep;exports.sessionIdState=ey;exports.sessionState=eg;exports.sideViewState=eU;exports.tasklistState=eO;exports.threadHistoryState=eV;exports.threadIdToResumeState=eh;exports.tokenCountState=eS;exports.updateMessageById=eX;exports.updateMessageContentById=e0;exports.useApi=e4;exports.useAudio=ti;exports.useAuth=e7;exports.useChatData=ez;exports.useChatInteract=ta;exports.useChatMessages=to;exports.useChatSession=ts;exports.useConfig=tu;exports.userState=eB;exports.wavRecorderState=eC;exports.wavStreamPlayerState=ex;//# sourceMappingURL=out.js.map
1
+ "use strict";function e(e,t){if(t==null||t>e.length)t=e.length;for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function t(e){if(Array.isArray(e))return e}function n(t){if(Array.isArray(t))return e(t)}function r(e){if(e===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return e}function a(e,t,n,r,a,o,i){try{var s=e[o](i);var u=s.value}catch(e){n(e);return}if(s.done){t(u)}else{Promise.resolve(u).then(r,a)}}function o(e){return function(){var t=this,n=arguments;return new Promise(function(r,o){var i=e.apply(t,n);function s(e){a(i,r,o,s,u,"next",e)}function u(e){a(i,r,o,s,u,"throw",e)}s(undefined)})}}function i(e,t){if(!(e instanceof t)){throw new TypeError("Cannot call a class as a function")}}function s(e,t,n){if(T()){s=Reflect.construct}else{s=function e(e,t,n){var r=[null];r.push.apply(r,t);var a=Function.bind.apply(e,r);var o=new a;if(n)C(o,n.prototype);return o}}return s.apply(null,arguments)}function u(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||false;r.configurable=true;if("value"in r)r.writable=true;Object.defineProperty(e,r.key,r)}}function c(e,t,n){if(t)u(e.prototype,t);if(n)u(e,n);return e}function l(e,t,n){if(t in e){Object.defineProperty(e,t,{value:n,enumerable:true,configurable:true,writable:true})}else{e[t]=n}return e}function f(){f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n){if(Object.prototype.hasOwnProperty.call(n,r)){e[r]=n[r]}}}return e};return f.apply(this,arguments)}function d(e){d=Object.setPrototypeOf?Object.getPrototypeOf:function e(e){return e.__proto__||Object.getPrototypeOf(e)};return d(e)}function h(e,t){if(typeof t!=="function"&&t!==null){throw new TypeError("Super expression must either be null or a function")}e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:true,configurable:true}});if(t)C(e,t)}function v(e,t){if(t!=null&&typeof Symbol!=="undefined"&&t[Symbol.hasInstance]){return!!t[Symbol.hasInstance](e)}else{return e instanceof t}}function p(e){return Function.toString.call(e).indexOf("[native code]")!==-1}function m(e){if(typeof Symbol!=="undefined"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function y(e,t){var n=e==null?null:typeof Symbol!=="undefined"&&e[Symbol.iterator]||e["@@iterator"];if(n==null)return;var r=[];var a=true;var o=false;var i,s;try{for(n=n.call(e);!(a=(i=n.next()).done);a=true){r.push(i.value);if(t&&r.length===t)break}}catch(e){o=true;s=e}finally{try{if(!a&&n["return"]!=null)n["return"]()}finally{if(o)throw s}}return r}function g(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function k(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function w(e){if(e===null||e===void 0)throw new TypeError("Cannot destructure "+e);return e}function b(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};var r=Object.keys(n);if(typeof Object.getOwnPropertySymbols==="function"){r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))}r.forEach(function(t){l(e,t,n[t])})}return e}function S(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);if(t){r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})}n.push.apply(n,r)}return n}function A(e,t){t=t!=null?t:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(e,Object.getOwnPropertyDescriptors(t))}else{S(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}function R(e,t){if(t&&(I(t)==="object"||typeof t==="function")){return t}return r(e)}function C(e,t){C=Object.setPrototypeOf||function e(e,t){e.__proto__=t;return e};return C(e,t)}function x(e,n){return t(e)||y(e,n)||E(e,n)||g()}function _(e){return n(e)||m(e)||E(e)||k()}function I(e){"@swc/helpers - typeof";return e&&typeof Symbol!=="undefined"&&e.constructor===Symbol?"symbol":typeof e}function E(t,n){if(!t)return;if(typeof t==="string")return e(t,n);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor)r=t.constructor.name;if(r==="Map"||r==="Set")return Array.from(r);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return e(t,n)}function P(e){var t=typeof Map==="function"?new Map:undefined;P=function e(e){if(e===null||!p(e))return e;if(typeof e!=="function"){throw new TypeError("Super expression must either be null or a function")}if(typeof t!=="undefined"){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return s(e,arguments,d(this).constructor)}n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:false,writable:true,configurable:true}});return C(n,e)};return P(e)}function T(){if(typeof Reflect==="undefined"||!Reflect.construct)return false;if(Reflect.construct.sham)return false;if(typeof Proxy==="function")return true;try{Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));return true}catch(e){return false}}function M(e){var t=T();return function n(){var n=d(e),r;if(t){var a=d(this).constructor;r=Reflect.construct(n,arguments,a)}else{r=n.apply(this,arguments)}return R(this,r)}}function D(e,t){var n,r,a,o,i={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]};return(o={next:s(0),"throw":s(1),"return":s(2)},typeof Symbol==="function"&&(o[Symbol.iterator]=function(){return this}),o);function s(e){return function(t){return u([e,t])}}function u(o){if(n)throw new TypeError("Generator is already executing.");while(i)try{if(n=1,r&&(a=o[0]&2?r["return"]:o[0]?r["throw"]||((a=r["return"])&&a.call(r),0):r.next)&&!(a=a.call(r,o[1])).done)return a;if(r=0,a)o=[o[0]&2,a.value];switch(o[0]){case 0:case 1:a=o;break;case 4:i.label++;return{value:o[1],done:false};case 5:i.label++;r=o[1];o=[0];continue;case 7:o=i.ops.pop();i.trys.pop();continue;default:if(!(a=i.trys,a=a.length>0&&a[a.length-1])&&(o[0]===6||o[0]===2)){i=0;continue}if(o[0]===3&&(!a||o[1]>a[0]&&o[1]<a[3])){i.label=o[1];break}if(o[0]===6&&i.label<a[1]){i.label=a[1];a=o;break}if(a&&i.label<a[2]){i.label=a[2];i.ops.push(o);break}if(a[2])i.ops.pop();i.trys.pop();continue}o=t.call(e,i)}catch(e){o=[6,e];r=0}finally{n=a=0}if(o[0]&5)throw o[1];return{value:o[0]?o[1]:void 0,done:true}}}var O=require("recoil");var j=require("lodash");var B=require("uuid");var F=require("react");var L=require("swr");var V=require("socket.io-client");var U=require("sonner");function q(e){return e&&e.__esModule?e:{default:e}}var N=/*#__PURE__*/q(L);var W=/*#__PURE__*/q(V);var z=function(e){var t={},n=new Date;return n.setHours(0,0,0,0),_(e).sort(function(e,t){return new Date(t.createdAt).getTime()-new Date(e.createdAt).getTime()}).forEach(function(e){var r=new Date(e.createdAt);r.setHours(0,0,0,0);var a=Math.floor((n.getTime()-r.getTime())/864e5),o;var i;a===0?o="Today":a===1?o="Yesterday":a<=7?o="Previous 7 days":a<=30?o="Previous 30 days":o=r.toLocaleString("default",{month:"long",year:"numeric"}),(i=t[o])!==null&&i!==void 0?i:t[o]=[],t[o].push(e)}),t};var H=[4186.01,4434.92,4698.63,4978.03,5274.04,5587.65,5919.91,6271.93,6644.88,7040,7458.62,7902.13],G=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"],J=[],K=[];for(var $=1;$<=8;$++)for(var Q=0;Q<H.length;Q++){var Y=H[Q];J.push(Y/Math.pow(2,8-$)),K.push(G[Q]+$)}var X=[32,2e3],Z=J.filter(function(e,t){return J[t]>X[0]&&J[t]<X[1]}),ee=K.filter(function(e,t){return J[t]>X[0]&&J[t]<X[1]});var et=/*#__PURE__*/function(){function e(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;var r=this;i(this,e);if(this.fftResults=[],n){var a=n.length,o=n.sampleRate,s=new OfflineAudioContext({length:a,sampleRate:o}),u=s.createBufferSource();u.buffer=n;var c=s.createAnalyser();c.fftSize=8192,c.smoothingTimeConstant=.1,u.connect(c);var l=1/60,f=a/o,d=function(e){var t=l*e;t<f&&s.suspend(t).then(function(){var t=new Float32Array(c.frequencyBinCount);c.getFloatFrequencyData(t),r.fftResults.push(t),d(e+1)}),e===1?s.startRendering():s.resume()};u.start(0),d(1),this.audio=t,this.context=s,this.analyser=c,this.sampleRate=o,this.audioBuffer=n}else{var h=new AudioContext,v=h.createMediaElementSource(t),p=h.createAnalyser();p.fftSize=8192,p.smoothingTimeConstant=.1,v.connect(p),p.connect(h.destination),this.audio=t,this.context=h,this.analyser=p,this.sampleRate=this.context.sampleRate,this.audioBuffer=null}}c(e,[{key:"getFrequencies",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"frequency",n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:-100,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:-30;var a=null;if(this.audioBuffer&&this.fftResults.length){var o=this.audio.currentTime/this.audio.duration,i=Math.min(o*this.fftResults.length|0,this.fftResults.length-1);a=this.fftResults[i]}return e.getFrequencies(this.analyser,this.sampleRate,a,t,n,r)}},{key:"resumeIfSuspended",value:function e(){var e=this;return o(function(){var t;return D(this,function(n){switch(n.label){case 0:t=e.context.state==="suspended";if(!t)return[3,2];return[4,e.context.resume()];case 1:t=n.sent();n.label=2;case 2:return[2,(t,!0)]}})})()}}],[{key:"getFrequencies",value:function e(e,t,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"frequency",a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-100,o=arguments.length>5&&arguments[5]!==void 0?arguments[5]:-30;n||(n=new Float32Array(e.frequencyBinCount),e.getFloatFrequencyData(n));var i=t/2,s=1/n.length*i,u,c,l;if(r==="music"||r==="voice"){var f=r==="voice"?Z:J,d=Array(f.length).fill(a);for(var h=0;h<n.length;h++){var v=h*s,p=n[h];for(var m=f.length-1;m>=0;m--)if(v>f[m]){d[m]=Math.max(d[m],p);break}}u=d,c=r==="voice"?Z:J,l=r==="voice"?ee:K}else u=Array.from(n),c=u.map(function(e,t){return s*t}),l=c.map(function(e){return"".concat(e.toFixed(2)," Hz")});var y=u.map(function(e){return Math.max(0,Math.min((e-a)/(o-a),1))});return{values:new Float32Array(y),frequencies:c,labels:l}}}]);return e}();globalThis.AudioAnalysis=et;var en=/*#__PURE__*/function(){function e(){i(this,e)}c(e,[{key:"_packData",value:function e(e,t){return[new Uint8Array([t,t>>8]),new Uint8Array([t,t>>8,t>>16,t>>24])][e]}},{key:"pack",value:function e(e,t){if(t===null||t===void 0?void 0:t.bitsPerSample)if(t===null||t===void 0?void 0:t.channels){if(!(t===null||t===void 0?void 0:t.data))throw new Error('Missing "data"')}else throw new Error('Missing "channels"');else throw new Error('Missing "bitsPerSample"');var n=t.bitsPerSample,r=t.channels,a=t.data,o=["RIFF",this._packData(1,4+(8+24)+(8+8)),"WAVE","fmt ",this._packData(1,16),this._packData(0,1),this._packData(0,r.length),this._packData(1,e),this._packData(1,e*r.length*n/8),this._packData(0,r.length*n/8),this._packData(0,n),"data",this._packData(1,r[0].length*r.length*n/8),a],i=new Blob(o,{type:"audio/mpeg"}),s=URL.createObjectURL(i);return{blob:i,url:s,channelCount:r.length,sampleRate:e,duration:a.byteLength/(r.length*e*2)}}}],[{key:"floatTo16BitPCM",value:function e(e){var t=new ArrayBuffer(e.length*2),n=new DataView(t),r=0;for(var a=0;a<e.length;a++,r+=2){var o=Math.max(-1,Math.min(1,e[a]));n.setInt16(r,o<0?o*32768:o*32767,!0)}return t}},{key:"mergeBuffers",value:function e(e,t){var n=new Uint8Array(e.byteLength+t.byteLength);return n.set(new Uint8Array(e),0),n.set(new Uint8Array(t),e.byteLength),n.buffer}}]);return e}();globalThis.WavPacker=en;var er="\nclass AudioProcessor extends AudioWorkletProcessor {\n\n constructor() {\n super();\n this.port.onmessage = this.receive.bind(this);\n this.initialize();\n }\n\n initialize() {\n this.foundAudio = false;\n this.recording = false;\n this.chunks = [];\n }\n\n /**\n * Concatenates sampled chunks into channels\n * Format is chunk[Left[], Right[]]\n */\n readChannelData(chunks, channel = -1, maxChannels = 9) {\n let channelLimit;\n if (channel !== -1) {\n if (chunks[0] && chunks[0].length - 1 < channel) {\n throw new Error(\n `Channel ${channel} out of range: max ${chunks[0].length}`\n );\n }\n channelLimit = channel + 1;\n } else {\n channel = 0;\n channelLimit = Math.min(chunks[0] ? chunks[0].length : 1, maxChannels);\n }\n const channels = [];\n for (let n = channel; n < channelLimit; n++) {\n const length = chunks.reduce((sum, chunk) => {\n return sum + chunk[n].length;\n }, 0);\n const buffers = chunks.map((chunk) => chunk[n]);\n const result = new Float32Array(length);\n let offset = 0;\n for (let i = 0; i < buffers.length; i++) {\n result.set(buffers[i], offset);\n offset += buffers[i].length;\n }\n channels[n] = result;\n }\n return channels;\n }\n\n /**\n * Combines parallel audio data into correct format,\n * channels[Left[], Right[]] to float32Array[LRLRLRLR...]\n */\n formatAudioData(channels) {\n if (channels.length === 1) {\n // Simple case is only one channel\n const float32Array = channels[0].slice();\n const meanValues = channels[0].slice();\n return { float32Array, meanValues };\n } else {\n const float32Array = new Float32Array(\n channels[0].length * channels.length\n );\n const meanValues = new Float32Array(channels[0].length);\n for (let i = 0; i < channels[0].length; i++) {\n const offset = i * channels.length;\n let meanValue = 0;\n for (let n = 0; n < channels.length; n++) {\n float32Array[offset + n] = channels[n][i];\n meanValue += channels[n][i];\n }\n meanValues[i] = meanValue / channels.length;\n }\n return { float32Array, meanValues };\n }\n }\n\n /**\n * Converts 32-bit float data to 16-bit integers\n */\n floatTo16BitPCM(float32Array) {\n const buffer = new ArrayBuffer(float32Array.length * 2);\n const view = new DataView(buffer);\n let offset = 0;\n for (let i = 0; i < float32Array.length; i++, offset += 2) {\n let s = Math.max(-1, Math.min(1, float32Array[i]));\n view.setInt16(offset, s < 0 ? s * 0x8000 : s * 0x7fff, true);\n }\n return buffer;\n }\n\n /**\n * Retrieves the most recent amplitude values from the audio stream\n * @param {number} channel\n */\n getValues(channel = -1) {\n const channels = this.readChannelData(this.chunks, channel);\n const { meanValues } = this.formatAudioData(channels);\n return { meanValues, channels };\n }\n\n /**\n * Exports chunks as an audio/wav file\n */\n export() {\n const channels = this.readChannelData(this.chunks);\n const { float32Array, meanValues } = this.formatAudioData(channels);\n const audioData = this.floatTo16BitPCM(float32Array);\n return {\n meanValues: meanValues,\n audio: {\n bitsPerSample: 16,\n channels: channels,\n data: audioData,\n },\n };\n }\n\n receive(e) {\n const { event, id } = e.data;\n let receiptData = {};\n switch (event) {\n case 'start':\n this.recording = true;\n break;\n case 'stop':\n this.recording = false;\n break;\n case 'clear':\n this.initialize();\n break;\n case 'export':\n receiptData = this.export();\n break;\n case 'read':\n receiptData = this.getValues();\n break;\n default:\n break;\n }\n // Always send back receipt\n this.port.postMessage({ event: 'receipt', id, data: receiptData });\n }\n\n sendChunk(chunk) {\n const channels = this.readChannelData([chunk]);\n const { float32Array, meanValues } = this.formatAudioData(channels);\n const rawAudioData = this.floatTo16BitPCM(float32Array);\n const monoAudioData = this.floatTo16BitPCM(meanValues);\n this.port.postMessage({\n event: 'chunk',\n data: {\n mono: monoAudioData,\n raw: rawAudioData,\n },\n });\n }\n\n process(inputList, outputList, parameters) {\n // Copy input to output (e.g. speakers)\n // Note that this creates choppy sounds with Mac products\n const sourceLimit = Math.min(inputList.length, outputList.length);\n for (let inputNum = 0; inputNum < sourceLimit; inputNum++) {\n const input = inputList[inputNum];\n const output = outputList[inputNum];\n const channelCount = Math.min(input.length, output.length);\n for (let channelNum = 0; channelNum < channelCount; channelNum++) {\n input[channelNum].forEach((sample, i) => {\n output[channelNum][i] = sample;\n });\n }\n }\n const inputs = inputList[0];\n // There's latency at the beginning of a stream before recording starts\n // Make sure we actually receive audio data before we start storing chunks\n let sliceIndex = 0;\n if (!this.foundAudio) {\n for (const channel of inputs) {\n sliceIndex = 0; // reset for each channel\n if (this.foundAudio) {\n break;\n }\n if (channel) {\n for (const value of channel) {\n if (value !== 0) {\n // find only one non-zero entry in any channel\n this.foundAudio = true;\n break;\n } else {\n sliceIndex++;\n }\n }\n }\n }\n }\n if (inputs && inputs[0] && this.foundAudio && this.recording) {\n // We need to copy the TypedArray, because the `process`\n // internals will reuse the same buffer to hold each input\n const chunk = inputs.map((input) => input.slice(sliceIndex));\n this.chunks.push(chunk);\n this.sendChunk(chunk);\n }\n return true;\n }\n}\n\nregisterProcessor('audio_processor', AudioProcessor);\n",ea=new Blob([er],{type:"application/javascript"}),eo=URL.createObjectURL(ea),ei=eo;var es=/*#__PURE__*/function(){function e(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=t.sampleRate,r=n===void 0?24e3:n,a=t.outputToSpeakers,o=a===void 0?!1:a,s=t.debug,u=s===void 0?!1:s;i(this,e);this.scriptSrc=ei,this.sampleRate=r,this.outputToSpeakers=o,this.debug=!!u,this._deviceChangeCallback=null,this._devices=[],this.stream=null,this.processor=null,this.source=null,this.node=null,this.recording=!1,this._lastEventId=0,this.eventReceipts={},this.eventTimeout=5e3,this._chunkProcessor=function(){},this._chunkProcessorSize=void 0,this._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)}}c(e,[{key:"log",value:function e(){return this.debug&&this.log.apply(this,arguments),!0}},{key:"getSampleRate",value:function e(){return this.sampleRate}},{key:"getStatus",value:function e(){return this.processor?this.recording?"recording":"paused":"ended"}},{key:"_event",value:function e(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null;var r=this;return o(function(){var a,o,i;return D(this,function(s){switch(s.label){case 0:if(n=n||r.processor,!n)throw new Error("Can not send events without recording first");a={event:e,id:r._lastEventId++,data:t};n.port.postMessage(a);o=new Date().valueOf();s.label=1;case 1:if(!!r.eventReceipts[a.id])return[3,4];if(new Date().valueOf()-o>r.eventTimeout)throw new Error('Timeout waiting for "'.concat(e,'" event'));return[4,new Promise(function(e){return setTimeout(function(){return e(!0)},1)})];case 2:s.sent();s.label=3;case 3:return[3,1];case 4:i=r.eventReceipts[a.id];return[2,(delete r.eventReceipts[a.id],i)]}})})()}},{key:"listenForDeviceChange",value:function e(e){if(e===null&&this._deviceChangeCallback)navigator.mediaDevices.removeEventListener("devicechange",this._deviceChangeCallback),this._deviceChangeCallback=null;else if(e!==null){var t=this;var n=0,r=[],a=function(e){return e.map(function(e){return e.deviceId}).sort().join(",")},i=function(){var i=o(function(){var o,i;return D(this,function(s){switch(s.label){case 0:o=++n;return[4,t.listDevices()];case 1:i=s.sent();o===n&&a(r)!==a(i)&&(r=i,e(i.slice()));return[2]}})});return function e(){return i.apply(this,arguments)}}();navigator.mediaDevices.addEventListener("devicechange",i),i(),this._deviceChangeCallback=i}return!0}},{key:"requestPermission",value:function e(){return o(function(){var e,t;return D(this,function(n){switch(n.label){case 0:return[4,navigator.permissions.query({name:"microphone"})];case 1:e=n.sent();if(!(e.state==="denied"))return[3,2];window.alert("You must grant microphone access to use this feature.");return[3,6];case 2:if(!(e.state==="prompt"))return[3,6];n.label=3;case 3:n.trys.push([3,5,,6]);return[4,navigator.mediaDevices.getUserMedia({audio:!0})];case 4:n.sent().getTracks().forEach(function(e){return e.stop()});return[3,6];case 5:t=n.sent();window.alert("You must grant microphone access to use this feature.");return[3,6];case 6:return[2,!0]}})})()}},{key:"listDevices",value:function e(){var e=this;return o(function(){var t,n,r,a,o;return D(this,function(i){switch(i.label){case 0:if(!navigator.mediaDevices||!("enumerateDevices"in navigator.mediaDevices))throw new Error("Could not request user devices");return[4,e.requestPermission()];case 1:i.sent();return[4,navigator.mediaDevices.enumerateDevices()];case 2:t=i.sent().filter(function(e){return e.kind==="audioinput"}),n=t.findIndex(function(e){return e.deviceId==="default"}),r=[];if(n!==-1){a=t.splice(n,1)[0],o=t.findIndex(function(e){return e.groupId===a.groupId});o!==-1&&(a=t.splice(o,1)[0]),a.default=!0,r.push(a)}return[2,r.concat(t)]}})})()}},{key:"begin",value:function e(e){var t=this;return o(function(){var n,r,a,o,i,s,u,c;return D(this,function(l){switch(l.label){case 0:if(t.processor)throw new Error("Already connected: please call .end() to start a new session");if(!navigator.mediaDevices||!("getUserMedia"in navigator.mediaDevices))throw new Error("Could not request user media");l.label=1;case 1:l.trys.push([1,3,,4]);n={audio:!0};e&&(n.audio={deviceId:{exact:e}});return[4,navigator.mediaDevices.getUserMedia(n)];case 2:t.stream=l.sent();return[3,4];case 3:r=l.sent();throw new Error("Could not start media stream");case 4:a=new AudioContext({sampleRate:t.sampleRate}),o=a.createMediaStreamSource(t.stream);l.label=5;case 5:l.trys.push([5,7,,8]);return[4,a.audioWorklet.addModule(t.scriptSrc)];case 6:l.sent();return[3,8];case 7:i=l.sent();throw console.error(i),new Error("Could not add audioWorklet module: ".concat(t.scriptSrc));case 8:s=new AudioWorkletNode(a,"audio_processor");s.port.onmessage=function(e){var n=e.data,r=n.event,a=n.id,o=n.data;if(r==="receipt")t.eventReceipts[a]=o;else if(r==="chunk")if(t._chunkProcessorSize){var i=t._chunkProcessorBuffer;t._chunkProcessorBuffer={raw:en.mergeBuffers(i.raw,o.raw),mono:en.mergeBuffers(i.mono,o.mono)},t._chunkProcessorBuffer.mono.byteLength>=t._chunkProcessorSize&&(t._chunkProcessor(t._chunkProcessorBuffer),t._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)})}else t._chunkProcessor(o)};u=o.connect(s),c=a.createAnalyser();return[2,(c.fftSize=8192,c.smoothingTimeConstant=.1,u.connect(c),t.outputToSpeakers&&(console.warn("Warning: Output to speakers may affect sound quality,\nespecially due to system audio feedback preventative measures.\nuse only for debugging"),c.connect(a.destination)),t.source=o,t.node=u,t.analyser=c,t.processor=s,!0)]}})})()}},{key:"getFrequencies",value:function e(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"frequency",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:-100,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:-30;if(!this.processor)throw new Error("Session ended: please call .begin() first");return et.getFrequencies(this.analyser,this.sampleRate,null,e,t,n)}},{key:"pause",value:function e(){var e=this;return o(function(){return D(this,function(t){switch(t.label){case 0:if(e.processor){if(!e.recording)throw new Error("Already paused: please call .record() first")}else throw new Error("Session ended: please call .begin() first");e._chunkProcessorBuffer.raw.byteLength&&e._chunkProcessor(e._chunkProcessorBuffer),e.log("Pausing ...");return[4,e._event("stop")];case 1:return[2,(t.sent(),e.recording=!1,!0)]}})})()}},{key:"record",value:function e(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:function(){},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:8192;var n=this;return o(function(){return D(this,function(r){switch(r.label){case 0:if(n.processor){if(n.recording)throw new Error("Already recording: please call .pause() first");if(typeof e!="function")throw new Error("chunkProcessor must be a function")}else throw new Error("Session ended: please call .begin() first");n._chunkProcessor=e,n._chunkProcessorSize=t,n._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)},n.log("Recording ...");return[4,n._event("start")];case 1:return[2,(r.sent(),n.recording=!0,!0)]}})})()}},{key:"clear",value:function e(){var e=this;return o(function(){return D(this,function(t){switch(t.label){case 0:if(!e.processor)throw new Error("Session ended: please call .begin() first");return[4,e._event("clear")];case 1:return[2,(t.sent(),!0)]}})})()}},{key:"read",value:function e(){var e=this;return o(function(){return D(this,function(t){switch(t.label){case 0:if(!e.processor)throw new Error("Session ended: please call .begin() first");e.log("Reading ...");return[4,e._event("read")];case 1:return[2,t.sent()]}})})()}},{key:"save",value:function e(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;var t=this;return o(function(){var n;return D(this,function(r){switch(r.label){case 0:if(!t.processor)throw new Error("Session ended: please call .begin() first");if(!e&&t.recording)throw new Error("Currently recording: please call .pause() first, or call .save(true) to force");t.log("Exporting ...");return[4,t._event("export")];case 1:n=r.sent();return[2,new en().pack(t.sampleRate,n.audio)]}})})()}},{key:"end",value:function e(){var e=this;return o(function(){var t,n;return D(this,function(r){switch(r.label){case 0:if(!e.processor)throw new Error("Session ended: please call .begin() first");t=e.processor;e.log("Stopping ...");return[4,e._event("stop")];case 1:r.sent(),e.recording=!1,e.stream.getTracks().forEach(function(e){return e.stop()}),e.log("Exporting ...");return[4,e._event("export",{},t)];case 2:n=r.sent();return[2,(e.processor.disconnect(),e.source.disconnect(),e.node.disconnect(),e.analyser.disconnect(),e.stream=null,e.processor=null,e.source=null,e.node=null,new en().pack(e.sampleRate,n.audio))]}})})()}},{key:"quit",value:function e(){var e=this;return o(function(){var t;return D(this,function(n){switch(n.label){case 0:e.listenForDeviceChange(null);t=e.processor;if(!t)return[3,2];return[4,e.end()];case 1:t=n.sent();n.label=2;case 2:return[2,(t,!0)]}})})()}}],[{key:"decode",value:function e(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:24e3,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:-1;return o(function(){var r,a,o,i,s,u,c,l,f,d;return D(this,function(h){switch(h.label){case 0:r=new AudioContext({sampleRate:t});if(!v(e,Blob))return[3,2];if(n!==-1)throw new Error('Can not specify "fromSampleRate" when reading from Blob');o=e;return[4,o.arrayBuffer()];case 1:a=h.sent();return[3,5];case 2:if(!v(e,ArrayBuffer))return[3,3];if(n!==-1)throw new Error('Can not specify "fromSampleRate" when reading from ArrayBuffer');a=e,o=new Blob([a],{type:"audio/wav"});return[3,5];case 3:if(v(e,Int16Array)){s=e,i=new Float32Array(e.length);for(u=0;u<e.length;u++)i[u]=e[u]/32768}else if(v(e,Float32Array))i=e;else if(v(e,Array))i=new Float32Array(e);else throw new Error('"audioData" must be one of: Blob, Float32Arrray, Int16Array, ArrayBuffer, Array<number>');if(n===-1)throw new Error('Must specify "fromSampleRate" when reading from Float32Array, In16Array or Array');if(n<3e3)throw new Error('Minimum "fromSampleRate" is 3000 (3kHz)');s||(s=en.floatTo16BitPCM(i));c={bitsPerSample:16,channels:[i],data:s};o=new en().pack(n,c).blob;return[4,o.arrayBuffer()];case 4:a=h.sent();h.label=5;case 5:return[4,r.decodeAudioData(a)];case 6:l=h.sent(),f=l.getChannelData(0),d=URL.createObjectURL(o);return[2,{blob:o,url:d,values:f,audioBuffer:l}]}})})()}}]);return e}();globalThis.WavRecorder=es;var eu="\nclass StreamProcessor extends AudioWorkletProcessor {\n constructor() {\n super();\n this.hasStarted = false;\n this.hasInterrupted = false;\n this.outputBuffers = [];\n this.bufferLength = 128;\n this.write = { buffer: new Float32Array(this.bufferLength), trackId: null };\n this.writeOffset = 0;\n this.trackSampleOffsets = {};\n this.port.onmessage = (event) => {\n if (event.data) {\n const payload = event.data;\n if (payload.event === 'write') {\n const int16Array = payload.buffer;\n const float32Array = new Float32Array(int16Array.length);\n for (let i = 0; i < int16Array.length; i++) {\n float32Array[i] = int16Array[i] / 0x8000; // Convert Int16 to Float32\n }\n this.writeData(float32Array, payload.trackId);\n } else if (\n payload.event === 'offset' ||\n payload.event === 'interrupt'\n ) {\n const requestId = payload.requestId;\n const trackId = this.write.trackId;\n const offset = this.trackSampleOffsets[trackId] || 0;\n this.port.postMessage({\n event: 'offset',\n requestId,\n trackId,\n offset,\n });\n if (payload.event === 'interrupt') {\n this.hasInterrupted = true;\n }\n } else {\n throw new Error(`Unhandled event \"${payload.event}\"`);\n }\n }\n };\n }\n\n writeData(float32Array, trackId = null) {\n let { buffer } = this.write;\n let offset = this.writeOffset;\n for (let i = 0; i < float32Array.length; i++) {\n buffer[offset++] = float32Array[i];\n if (offset >= buffer.length) {\n this.outputBuffers.push(this.write);\n this.write = { buffer: new Float32Array(this.bufferLength), trackId };\n buffer = this.write.buffer;\n offset = 0;\n }\n }\n this.writeOffset = offset;\n return true;\n }\n\n process(inputs, outputs, parameters) {\n const output = outputs[0];\n const outputChannelData = output[0];\n const outputBuffers = this.outputBuffers;\n if (this.hasInterrupted) {\n this.port.postMessage({ event: 'stop' });\n return false;\n } else if (outputBuffers.length) {\n this.hasStarted = true;\n const { buffer, trackId } = outputBuffers.shift();\n for (let i = 0; i < outputChannelData.length; i++) {\n outputChannelData[i] = buffer[i] || 0;\n }\n if (trackId) {\n this.trackSampleOffsets[trackId] =\n this.trackSampleOffsets[trackId] || 0;\n this.trackSampleOffsets[trackId] += buffer.length;\n }\n return true;\n } else if (this.hasStarted) {\n this.port.postMessage({ event: 'stop' });\n return false;\n } else {\n return true;\n }\n }\n}\n\nregisterProcessor('stream_processor', StreamProcessor);\n",ec=new Blob([eu],{type:"application/javascript"}),el=URL.createObjectURL(ec),ef=el;var ed=/*#__PURE__*/function(){function e(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=t.sampleRate,r=n===void 0?24e3:n,a=t.onStop;i(this,e);this.scriptSrc=ef,this.onStop=a,this.sampleRate=r,this.context=null,this.stream=null,this.analyser=null,this.trackSampleOffsets={},this.interruptedTrackIds={}}c(e,[{key:"connect",value:function e(){var e=this;return o(function(){var t,n,r;return D(this,function(a){switch(a.label){case 0:e.context=new AudioContext({sampleRate:e.sampleRate});t=e.context.state==="suspended";if(!t)return[3,2];return[4,e.context.resume()];case 1:t=a.sent();a.label=2;case 2:t;a.label=3;case 3:a.trys.push([3,5,,6]);return[4,e.context.audioWorklet.addModule(e.scriptSrc)];case 4:a.sent();return[3,6];case 5:n=a.sent();throw console.error(n),new Error("Could not add audioWorklet module: ".concat(e.scriptSrc));case 6:r=e.context.createAnalyser();return[2,(r.fftSize=8192,r.smoothingTimeConstant=.1,e.analyser=r,!0)]}})})()}},{key:"getFrequencies",value:function e(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"frequency",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:-100,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:-30;if(!this.analyser)throw new Error("Not connected, please call .connect() first");return et.getFrequencies(this.analyser,this.sampleRate,null,e,t,n)}},{key:"_start",value:function e(){var e=this;var t=new AudioWorkletNode(this.context,"stream_processor");return t.connect(this.context.destination),t.port.onmessage=function(n){var r,a;var o=n.data,i=o.event;if(i==="stop")(r=(a=e).onStop)===null||r===void 0?void 0:r.call(a),t.disconnect(),e.stream=null;else if(i==="offset"){var s=n.data,u=s.requestId,c=s.trackId,l=s.offset,f=l/e.sampleRate;e.trackSampleOffsets[u]={trackId:c,offset:l,currentTime:f}}},this.analyser.disconnect(),t.connect(this.analyser),this.stream=t,!0}},{key:"add16BitPCM",value:function e(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"default";if(typeof t!="string")throw new Error("trackId must be a string");if(this.interruptedTrackIds[t])return;this.stream||this._start();var n;if(v(e,Int16Array))n=e;else if(v(e,ArrayBuffer))n=new Int16Array(e);else throw new Error("argument must be Int16Array or ArrayBuffer");return this.stream.port.postMessage({event:"write",buffer:n,trackId:t}),n}},{key:"getTrackSampleOffset",value:function e(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;var t=this;return o(function(){var n,r,a;return D(this,function(o){switch(o.label){case 0:if(!t.stream)return[2,null];n=crypto.randomUUID();t.stream.port.postMessage({event:e?"interrupt":"offset",requestId:n});o.label=1;case 1:if(!!r)return[3,4];r=t.trackSampleOffsets[n];return[4,new Promise(function(e){return setTimeout(function(){return e()},1)})];case 2:o.sent();o.label=3;case 3:return[3,1];case 4:a=r.trackId;return[2,(e&&a&&(t.interruptedTrackIds[a]=!0),r)]}})})()}},{key:"interrupt",value:function e(){var e=this;return o(function(){return D(this,function(t){return[2,e.getTrackSampleOffset(!0)]})})()}}]);return e}();globalThis.WavStreamPlayer=ed;var eh=O.atom({key:"ThreadIdToResume",default:void 0}),ev=O.atom({key:"ResumeThreadErrorState",default:void 0}),ep=O.atom({key:"ChatProfile",default:void 0}),em=O.atom({key:"SessionId",default:B.v4()}),ey=O.selector({key:"SessionIdSelector",get:function(e){var t=e.get;return t(em)},set:function(e,t){var n=e.set;return n(em,v(t,O.DefaultValue)?B.v4():t)}}),eg=O.atom({key:"Session",dangerouslyAllowMutability:!0,default:void 0}),ek=O.atom({key:"Actions",default:[]}),ew=O.atom({key:"Messages",dangerouslyAllowMutability:!0,default:[]}),eb=O.atom({key:"Commands",default:[]}),eS=O.atom({key:"Modes",default:[]}),eA=O.atom({key:"TokenCount",default:0}),eR=O.atom({key:"Loading",default:!1}),eC=O.atom({key:"AskUser",default:void 0}),ex=O.atom({key:"WavRecorder",dangerouslyAllowMutability:!0,default:new es}),e_=O.atom({key:"WavStreamPlayer",dangerouslyAllowMutability:!0,default:new ed}),eI=O.atom({key:"AudioConnection",default:"off"}),eE=O.atom({key:"isAiSpeaking",default:!1}),eP=O.atom({key:"CallFn",default:void 0}),eT=O.atom({key:"ChatSettings",default:[]}),eM=O.selector({key:"ChatSettingsValue/Default",get:function(e){var t=e.get;var n=t(eT),r=function(e,t){return Array.isArray(e)&&e.forEach(function(e){e&&(Array.isArray(e===null||e===void 0?void 0:e.inputs)&&e.inputs.length>0?r(e.inputs,t):(e===null||e===void 0?void 0:e.id)!==void 0&&(t[e.id]=e.initial))}),t};return r(n,{})}}),eD=O.atom({key:"ChatSettingsValue",default:eM}),eO=O.atom({key:"DisplayElements",default:[]}),ej=O.atom({key:"TasklistElements",default:[]}),eB=O.atom({key:"FirstUserInteraction",default:void 0}),eF=O.atom({key:"User",default:void 0}),eL=O.atom({key:"ChainlitConfig",default:void 0}),eV=O.atom({key:"AuthConfig",default:void 0}),eU=O.atom({key:"ThreadHistory",default:{threads:void 0,currentThreadId:void 0,timeGroupedThreads:void 0,pageInfo:void 0},effects:[function(e){var t=e.setSelf,n=e.onSet;n(function(e,n){var r=e===null||e===void 0?void 0:e.timeGroupedThreads;(e===null||e===void 0?void 0:e.threads)&&!j.isEqual(e.threads,n===null||n===void 0?void 0:n.timeGroupedThreads)&&(r=z(e.threads)),t(A(b({},e),{timeGroupedThreads:r}))})}]}),eq=O.atom({key:"SideView",default:void 0}),eN=O.atom({key:"CurrentThreadId",default:void 0}),eW=function(e){return function(t){var n=t.setSelf,r=t.onSet;var a=localStorage.getItem(e);if(a!=null)try{n(JSON.parse(a))}catch(t){console.error('Error parsing localStorage value for key "'.concat(e,'":'),t)}r(function(t,n,r){r?localStorage.removeItem(e):localStorage.setItem(e,JSON.stringify(t))})}},ez=O.atom({key:"Mcp",default:[],effects:[eW("mcp_storage_key")]}),eH=O.atom({key:"favoriteMessagesState",default:[]});var eG=function(){var e=O.useRecoilValue(eR),t=O.useRecoilValue(eO),n=O.useRecoilValue(ej),r=O.useRecoilValue(ek),a=O.useRecoilValue(eg),o=O.useRecoilValue(eC),i=O.useRecoilValue(eP),s=O.useRecoilValue(eT),u=O.useRecoilValue(eD),c=O.useRecoilValue(eM),l=(a===null||a===void 0?void 0:a.socket.connected)&&!(a===null||a===void 0?void 0:a.error),f=!l||e||(o===null||o===void 0?void 0:o.spec.type)==="file"||(o===null||o===void 0?void 0:o.spec.type)==="action"||(o===null||o===void 0?void 0:o.spec.type)==="element";return{actions:r,askUser:o,callFn:i,chatSettingsDefaultValue:c,chatSettingsInputs:s,chatSettingsValue:u,connected:l,disabled:f,elements:t,error:a===null||a===void 0?void 0:a.error,loading:e,tasklists:n}};var eJ=function(e){var t=[];var n=true,r=false,a=undefined;try{for(var o=e[Symbol.iterator](),i;!(n=(i=o.next()).done);n=true){var s=i.value;t=e$(t,s)}}catch(e){r=true;a=e}finally{try{if(!n&&o.return!=null){o.return()}}finally{if(r){throw a}}}return t},eK=function(e,t){if(e.length-1===t)return!0;for(var n=t+1;n<e.length;n++)if(!e[n].streaming)return!1;return!0},e$=function(e,t){return eZ(e,t.id)?e0(e,t.id,t):"parentId"in t&&t.parentId?eY(e,t.parentId,t):"indent"in t&&t.indent&&t.indent>0?eQ(e,t.indent,t):_(e).concat([t])},eQ=function(e,t,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;if(e.length===0)return[n];var a=e.length-1,o=e[a],i=o.steps||[];if(r+1===t){var s=A(b({},o),{steps:_(i).concat([n])}),u=_(e);return u[a]=s,u}else{var c=eQ(i,t,n,r+1);if(c===i)return e;var l=_(e);return l[a]=A(b({},o),{steps:c}),l}},eY=function(e,t,n){var r=!1,a=e.map(function(a){if(j.isEqual(a.id,t))return r=!0,A(b({},a),{steps:a.steps?_(a.steps).concat([n]):[n]});if(eZ(e,t)&&a.steps){var o=eY(a.steps,t,n);if(o!==a.steps)return r=!0,A(b({},a),{steps:o})}return a});return r?a:e},eX=function(e,t){var n=true,r=false,a=undefined;try{for(var o=e[Symbol.iterator](),i;!(n=(i=o.next()).done);n=true){var s=i.value;if(j.isEqual(s.id,t))return s;if(s.steps&&s.steps.length>0){var u=eX(s.steps,t);if(u)return u}}}catch(e){r=true;a=e}finally{try{if(!n&&o.return!=null){o.return()}}finally{if(r){throw a}}}},eZ=function(e,t){return eX(e,t)!==void 0},e0=function(e,t,n){var r=!1,a=e.map(function(e){if(j.isEqual(e.id,t))return r=!0,b({},e,n);if(e.steps){var a=e0(e.steps,t,n);if(a!==e.steps)return r=!0,A(b({},e),{steps:a})}return e});return r?a:e},e1=function(e,t){var n=!1,r=e.reduce(function(e,r){if(r.id===t)return n=!0,e;if(r.steps){var a=e1(r.steps,t);if(a!==r.steps)return n=!0,e.push(A(b({},r),{steps:a})),e}return e.push(r),e},[]);return n?r:e},e2=function(e,t,n,r,a){var o=!1,i=e.map(function(e){if(j.isEqual(e.id,t)){o=!0;var i=b({},e);return"content"in i&&i.content!==void 0?r?i.content=n:i.content+=n:a?"input"in i&&i.input!==void 0&&(r?i.input=n:i.input+=n):"output"in i&&i.output!==void 0&&(r?i.output=n:i.output+=n),i}else if(e.steps){var s=e2(e.steps,t,n,r,a);if(s!==e.steps)return o=!0,A(b({},e),{steps:s})}return e});return o?i:e};var e3=function(){var e=x(O.useRecoilState(eV),2),t=e[0],n=e[1],r=x(O.useRecoilState(eF),2),a=r[0],o=r[1],i=O.useSetRecoilState(eU);return{authConfig:t,setAuthConfig:n,user:a,setUser:o,setThreadHistory:i}};var e4=function(){var e=o(function(e,t){var n;return D(this,function(r){switch(r.label){case 0:return[4,e.get(t)];case 1:return[2,(n=r.sent())===null||n===void 0?void 0:n.json()]}})});return function t(t,n){return e.apply(this,arguments)}}(),e6=function(e){var t=new tr("","webapp");return Object.assign(t,e),t};function e8(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};var n=f({},w(t));var r=F.useContext(to),a=e3(),o=a.setUser,i=F.useMemo(function(){return function(e){var t=x(e,1),a=t[0];n.onErrorRetry||(n.onErrorRetry=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++){t[n]=arguments[n]}var r;var a=x(t,1),i=a[0];if(i.status===401){o(null);return}return(r=L.SWRConfig.defaultValue).onErrorRetry.apply(r,_(t))});var i=e6(r);return i.on401=i.onError=void 0,e4(i,a)}},[r]),s=F.useMemo(function(){return e?[e]:null},[e]);return N.default(s,i,n)}var e5=function(){var e=e3(),t=e.authConfig,n=e.setAuthConfig,r=e8(t?null:"/auth/config"),a=r.data,o=r.isLoading;return F.useEffect(function(){a&&n(a)},[a,n]),{authConfig:t,isLoading:o}};var e7=function(){var e=F.useContext(to),t=e3(),n=t.setUser,r=t.setThreadHistory;return{logout:/*#__PURE__*/o(function(){var t;var a=arguments;return D(this,function(o){switch(o.label){case 0:t=a.length>0&&a[0]!==void 0?a[0]:!1;return[4,e.logout()];case 1:o.sent(),n(void 0),r(void 0),t&&window.location.reload();return[2]}})})}};var e9=function(){var e=e3(),t=e.user,n=e.setUser,r=e8("/user"),a=r.data,o=r.error,i=r.mutate;return F.useEffect(function(){a&&n(a)},[a,n]),F.useEffect(function(){o&&n(null)},[o]),{user:t,setUserFromAPI:i}};var te=function(){var e=e5(),t=e.authConfig,n=e7(),r=n.logout,a=e9(),o=a.user,i=a.setUserFromAPI,s=!!t&&(!t.requireLogin||o!==void 0);return t&&!t.requireLogin?{data:t,user:null,isReady:s,isAuthenticated:!0,logout:function(){return Promise.resolve()},setUserFromAPI:function(){return Promise.resolve()}}:{data:t,user:o,isReady:s,isAuthenticated:!!o,logout:r,setUserFromAPI:i}};var tt=/*#__PURE__*/function(e){h(n,e);var t=M(n);function n(e,r,a){i(this,n);var o;o=t.call(this,e);o.status=r,o.detail=a;return o}c(n,[{key:"toString",value:function e(){return this.detail?"".concat(this.message,": ").concat(this.detail):this.message}}]);return n}(P(Error)),tn=/*#__PURE__*/function(){function e(t,n,r,a,o){i(this,e);this.httpEndpoint=t;this.type=n;this.additionalQueryParams=r;this.on401=a;this.onError=o}c(e,[{key:"buildEndpoint",value:function e(e){var t="".concat(this.httpEndpoint).concat(e);this.httpEndpoint.endsWith("/")&&(t="".concat(this.httpEndpoint.slice(0,-1)).concat(e));var n=new URL(t);if(this.additionalQueryParams){var r=new URLSearchParams(this.additionalQueryParams),a=n.search?"&":"?";n.search=n.search+"".concat(a).concat(r.toString())}return n.toString()}},{key:"getDetailFromErrorResponse",value:function e(e){return o(function(){var t,n;return D(this,function(r){switch(r.label){case 0:r.trys.push([0,2,,3]);return[4,e.json()];case 1:return[2,(t=r.sent())===null||t===void 0?void 0:t.detail];case 2:n=r.sent();console.error("Unable to parse error response",n);return[3,3];case 3:return[2]}})})()}},{key:"handleRequestError",value:function e(e){v(e,tt)&&(e.status===401&&this.on401&&this.on401(),this.onError&&this.onError(e)),console.error(e)}},{key:"fetch",value:function e(e,t,n,r){var a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{};var i=this;return o(function(){var o,s,u,c;return D(this,function(l){switch(l.label){case 0:l.trys.push([0,4,,5]);v(n,FormData)?o=n:(a["Content-Type"]="application/json",o=n?JSON.stringify(n):null);return[4,fetch(i.buildEndpoint(t),{method:e,credentials:"include",headers:a,signal:r,body:o})];case 1:s=l.sent();if(!!s.ok)return[3,3];return[4,i.getDetailFromErrorResponse(s)];case 2:u=l.sent();throw new tt(s.statusText,s.status,u);case 3:return[2,s];case 4:c=l.sent();throw i.handleRequestError(c),c;case 5:return[2]}})})()}},{key:"get",value:function e(e){var t=this;return o(function(){return D(this,function(n){switch(n.label){case 0:return[4,t.fetch("GET",e)];case 1:return[2,n.sent()]}})})()}},{key:"post",value:function e(e,t,n){var r=this;return o(function(){return D(this,function(a){switch(a.label){case 0:return[4,r.fetch("POST",e,t,n)];case 1:return[2,a.sent()]}})})()}},{key:"put",value:function e(e,t){var n=this;return o(function(){return D(this,function(r){switch(r.label){case 0:return[4,n.fetch("PUT",e,t)];case 1:return[2,r.sent()]}})})()}},{key:"patch",value:function e(e,t){var n=this;return o(function(){return D(this,function(r){switch(r.label){case 0:return[4,n.fetch("PATCH",e,t)];case 1:return[2,r.sent()]}})})()}},{key:"delete",value:function e(e,t){var n=this;return o(function(){return D(this,function(r){switch(r.label){case 0:return[4,n.fetch("DELETE",e,t)];case 1:return[2,r.sent()]}})})()}}]);return e}(),tr=/*#__PURE__*/function(e){h(n,e);var t=M(n);function n(){i(this,n);return t.apply(this,arguments)}c(n,[{key:"headerAuth",value:function e(){var e=this;return o(function(){return D(this,function(t){switch(t.label){case 0:return[4,e.post("/auth/header",{})];case 1:return[2,t.sent().json()]}})})()}},{key:"jwtAuth",value:function e(e){var t=this;return o(function(){return D(this,function(n){switch(n.label){case 0:return[4,t.fetch("POST","/auth/jwt",void 0,void 0,{Authorization:"Bearer ".concat(e)})];case 1:return[2,n.sent().json()]}})})()}},{key:"stickyCookie",value:function e(e){var t=this;return o(function(){return D(this,function(n){switch(n.label){case 0:return[4,t.fetch("POST","/set-session-cookie",{session_id:e})];case 1:return[2,n.sent().json()]}})})()}},{key:"passwordAuth",value:function e(e){var t=this;return o(function(){return D(this,function(n){switch(n.label){case 0:return[4,t.post("/login",e)];case 1:return[2,n.sent().json()]}})})()}},{key:"getUser",value:function e(){var e=this;return o(function(){return D(this,function(t){switch(t.label){case 0:return[4,e.get("/user")];case 1:return[2,t.sent().json()]}})})()}},{key:"logout",value:function e(){var e=this;return o(function(){return D(this,function(t){switch(t.label){case 0:return[4,e.post("/logout",{})];case 1:return[2,t.sent().json()]}})})()}},{key:"setFeedback",value:function e(e,t){var n=this;return o(function(){return D(this,function(r){switch(r.label){case 0:return[4,n.put("/feedback",{feedback:e,sessionId:t})];case 1:return[2,r.sent().json()]}})})()}},{key:"deleteFeedback",value:function e(e){var t=this;return o(function(){return D(this,function(n){switch(n.label){case 0:return[4,t.delete("/feedback",{feedbackId:e})];case 1:return[2,n.sent().json()]}})})()}},{key:"listThreads",value:function e(e,t){var n=this;return o(function(){return D(this,function(r){switch(r.label){case 0:return[4,n.post("/project/threads",{pagination:e,filter:t})];case 1:return[2,r.sent().json()]}})})()}},{key:"renameThread",value:function e(e,t){var n=this;return o(function(){return D(this,function(r){switch(r.label){case 0:return[4,n.put("/project/thread",{threadId:e,name:t})];case 1:return[2,r.sent().json()]}})})()}},{key:"deleteThread",value:function e(e){var t=this;return o(function(){return D(this,function(n){switch(n.label){case 0:return[4,t.delete("/project/thread",{threadId:e})];case 1:return[2,n.sent().json()]}})})()}},{key:"uploadFile",value:function e(e,t,n,r){var a=this;var o=new XMLHttpRequest;o.withCredentials=!0;var i=new Promise(function(i,s){var u=new FormData;u.append("file",e);var c=r?"&ask_parent_id=".concat(r):"";o.open("POST",a.buildEndpoint("/project/file?session_id=".concat(n).concat(c)),!0),o.upload.onprogress=function(e){if(e.lengthComputable){var n=e.loaded/e.total*100;t(n)}},o.onload=function(){if(o.status===200){var e=JSON.parse(o.responseText);i(e);return}var t=o.getResponseHeader("Content-Type");if(t&&t.includes("application/json")){var n=JSON.parse(o.responseText);s(n.detail)}else s("Upload failed")},o.onerror=function(){s("Upload error")},o.send(u)});return{xhr:o,promise:i}}},{key:"callAction",value:function e(e,t){var n=this;return o(function(){return D(this,function(r){switch(r.label){case 0:return[4,n.post("/project/action",{sessionId:t,action:e})];case 1:return[2,r.sent().json()]}})})()}},{key:"updateElement",value:function e(e,t){var n=this;return o(function(){return D(this,function(r){switch(r.label){case 0:return[4,n.put("/project/element",{sessionId:t,element:e})];case 1:return[2,r.sent().json()]}})})()}},{key:"deleteElement",value:function e(e,t){var n=this;return o(function(){return D(this,function(r){switch(r.label){case 0:return[4,n.delete("/project/element",{sessionId:t,element:e})];case 1:return[2,r.sent().json()]}})})()}},{key:"connectStdioMCP",value:function e(e,t,n){var r=this;return o(function(){return D(this,function(a){switch(a.label){case 0:return[4,r.post("/mcp",{sessionId:e,name:t,fullCommand:n,clientType:"stdio"})];case 1:return[2,a.sent().json()]}})})()}},{key:"connectSseMCP",value:function e(e,t,n,r){var a=this;return o(function(){return D(this,function(o){switch(o.label){case 0:return[4,a.post("/mcp",A(b({sessionId:e,name:t,url:n},r?{headers:r}:{}),{clientType:"sse"}))];case 1:return[2,o.sent().json()]}})})()}},{key:"connectStreamableHttpMCP",value:function e(e,t,n,r){var a=this;return o(function(){return D(this,function(o){switch(o.label){case 0:return[4,a.post("/mcp",A(b({sessionId:e,name:t,url:n},r?{headers:r}:{}),{clientType:"streamable-http"}))];case 1:return[2,o.sent().json()]}})})()}},{key:"disconnectMcp",value:function e(e,t){var n=this;return o(function(){return D(this,function(r){switch(r.label){case 0:return[4,n.delete("/mcp",{sessionId:e,name:t})];case 1:return[2,r.sent().json()]}})})()}},{key:"getElementUrl",value:function e(e,t){var n="?session_id=".concat(t);return this.buildEndpoint("/project/file/".concat(e).concat(n))}},{key:"getLogoEndpoint",value:function e(e,t){return t||this.buildEndpoint("/logo?theme=".concat(e))}},{key:"getOAuthEndpoint",value:function e(e){return this.buildEndpoint("/auth/oauth/".concat(e))}},{key:"shareThread",value:function e(e,t){var n=this;return o(function(){return D(this,function(r){switch(r.label){case 0:return[4,n.put("/project/thread/share",{threadId:e,isShared:t})];case 1:return[2,r.sent().json()]}})})()}}]);return n}(tn);var ta=void 0,to=F.createContext(new tr("http://localhost:8000","webapp"));var ti=function(){var e=F.useContext(to),t=O.useRecoilValue(eg),n=O.useRecoilValue(eC),r=O.useRecoilValue(ey),a=O.useResetRecoilState(eT),o=O.useResetRecoilState(ey),i=O.useResetRecoilState(eD),s=O.useSetRecoilState(eB),u=O.useSetRecoilState(eR),c=O.useSetRecoilState(ew),l=O.useSetRecoilState(eO),f=O.useSetRecoilState(ej),d=O.useSetRecoilState(ek),h=O.useSetRecoilState(eA),v=O.useSetRecoilState(eh),p=O.useSetRecoilState(eq),m=O.useSetRecoilState(eN),y=O.useSetRecoilState(eH),g=F.useCallback(function(){t===null||t===void 0?void 0:t.socket.emit("clear_session"),t===null||t===void 0?void 0:t.socket.disconnect(),v(void 0),o(),s(void 0),c([]),l([]),f([]),d([]),h(0),a(),i(),p(void 0),m(void 0)},[t]),k=F.useCallback(function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];e.id||(e.id=B.v4()),e.createdAt||(e.createdAt=new Date().toISOString()),c(function(t){return e$(t,e)}),t===null||t===void 0?void 0:t.socket.emit("client_message",{message:e,fileReferences:n})},[t===null||t===void 0?void 0:t.socket]),w=F.useCallback(function(e){t===null||t===void 0?void 0:t.socket.emit("edit_message",{message:e})},[t===null||t===void 0?void 0:t.socket]),S=F.useCallback(function(e){var n;var r;var a=!((r=(n=e.metadata)===null||n===void 0?void 0:n.favorite)!==null&&r!==void 0?r:!1),o=A(b({},e),{metadata:A(b({},e.metadata||{}),{favorite:a})});c(function(t){return t.map(function(t){return t.id===e.id?o:t})}),y(function(t){if(a){var n=t.filter(function(t){return t.id!==e.id});return[o].concat(_(n))}return t.filter(function(t){return t.id!==e.id})}),t===null||t===void 0?void 0:t.socket.emit("message_favorite",{message:o})},[t===null||t===void 0?void 0:t.socket,y,c]),R=F.useCallback(function(e){t===null||t===void 0?void 0:t.socket.emit("window_message",e)},[t===null||t===void 0?void 0:t.socket]),C=F.useCallback(function(){t===null||t===void 0?void 0:t.socket.emit("audio_start")},[t===null||t===void 0?void 0:t.socket]),x=F.useCallback(function(e,n,r,a){t===null||t===void 0?void 0:t.socket.emit("audio_chunk",{isStart:e,mimeType:n,elapsedTime:r,data:a})},[t===null||t===void 0?void 0:t.socket]),I=F.useCallback(function(){t===null||t===void 0?void 0:t.socket.emit("audio_end")},[t===null||t===void 0?void 0:t.socket]),E=F.useCallback(function(e){n&&(n.parentId&&(e.parentId=n.parentId),c(function(t){return e$(t,e)}),n.callback(e))},[n]),P=F.useCallback(function(e){t===null||t===void 0?void 0:t.socket.emit("chat_settings_change",e)},[t===null||t===void 0?void 0:t.socket]),T=F.useCallback(function(e){t===null||t===void 0?void 0:t.socket.emit("chat_settings_edit",e)},[t===null||t===void 0?void 0:t.socket]),M=F.useCallback(function(){c(function(e){return e.map(function(e){return e.streaming=!1,e})}),u(!1),t===null||t===void 0?void 0:t.socket.emit("stop")},[t===null||t===void 0?void 0:t.socket]);return{uploadFile:F.useCallback(function(t,n,a){return e.uploadFile(t,n,r,a)},[r]),clear:g,replyMessage:E,sendMessage:k,editMessage:w,windowMessage:R,startAudioStream:C,sendAudioChunk:x,endAudioStream:I,stopTask:M,setIdToResume:v,updateChatSettings:P,editChatSettings:T,toggleMessageFavorite:S}};var ts=function(){var e=O.useRecoilValue(ew),t=O.useRecoilValue(eB);return{threadId:O.useRecoilValue(eN),messages:e,firstInteraction:t}};var tu=function(){var e=F.useContext(to),t=O.useRecoilValue(ey),n=x(O.useRecoilState(eg),2),r=n[0],a=n[1],i=O.useSetRecoilState(eE),s=O.useSetRecoilState(eI),u=O.useResetRecoilState(eD),c=O.useSetRecoilState(eD),l=O.useSetRecoilState(eB),f=O.useSetRecoilState(eR),d=O.useSetRecoilState(ez),h=O.useRecoilValue(e_),v=O.useRecoilValue(ex),p=O.useSetRecoilState(ew),m=O.useSetRecoilState(eC),y=O.useSetRecoilState(eP),g=O.useSetRecoilState(eb),k=O.useSetRecoilState(eS),w=O.useSetRecoilState(eq),S=O.useSetRecoilState(eO),R=O.useSetRecoilState(ej),C=O.useSetRecoilState(ek),I=O.useSetRecoilState(eT),E=O.useSetRecoilState(eA),P=x(O.useRecoilState(ep),2),T=P[0],M=P[1],B=O.useRecoilValue(eh),L=O.useSetRecoilState(ev),V=O.useSetRecoilState(eH),q=x(O.useRecoilState(eN),2),N=q[0],z=q[1];F.useEffect(function(){(r===null||r===void 0?void 0:r.socket)&&(r.socket.auth.threadId=N||"")},[N]);var H=F.useCallback(function(){var n=o(function(n){var r,x,P,O,j,F,q,N,H,G;return D(this,function(J){switch(J.label){case 0:r=n.transports,x=n.userEnv;P=new URL(e.httpEndpoint),O=P.protocol,j=P.host,F=P.pathname,q="".concat(O,"//").concat(j),N=F&&F!=="/"?"".concat(F,"/ws/socket.io"):"/ws/socket.io";J.label=1;case 1:J.trys.push([1,3,,4]);return[4,e.stickyCookie(t)];case 2:J.sent();return[3,4];case 3:H=J.sent();console.error("Failed to set sticky session cookie: ".concat(H));return[3,4];case 4:G=W.default(q,{path:N,withCredentials:!0,transports:r,auth:{clientType:e.type,sessionId:t,threadId:B||"",userEnv:JSON.stringify(x),chatProfile:T?encodeURIComponent(T):""}});a(function(e){var t,n;return e===null||e===void 0?void 0:(t=e.socket)===null||t===void 0?void 0:t.removeAllListeners(),e===null||e===void 0?void 0:(n=e.socket)===null||n===void 0?void 0:n.close(),{socket:G}}),G.on("connect",function(){G.emit("connection_successful"),a(function(e){return A(b({},e),{error:!1})}),G.emit("fetch_favorites"),d(function(n){return n.map(function(n){var r;return n.clientType==="sse"?r=e.connectSseMCP(t,n.name,n.url):n.clientType==="streamable-http"?r=e.connectStreamableHttpMCP(t,n.name,n.url,n.headers||{}):r=e.connectStdioMCP(t,n.name,n.command),r.then(function(){var e=o(function(e){var t,n;return D(this,function(r){t=e.success,n=e.mcp;d(function(e){return e.map(function(e){return e.name===n.name?A(b({},e),{status:t?"connected":"failed",tools:n?n.tools:e.tools}):e})});return[2]})});return function(t){return e.apply(this,arguments)}}()).catch(function(){d(function(e){return e.map(function(e){return e.name===n.name?A(b({},e),{status:"failed"}):e})})}),A(b({},n),{status:"connecting"})})})}),G.on("connect_error",function(e){a(function(e){return A(b({},e),{error:!0})})}),G.on("task_start",function(){f(!0)}),G.on("task_end",function(){f(!1)}),G.on("reload",function(){G.emit("clear_session"),window.location.reload()}),G.on("audio_connection",function(){var e=o(function(e){var t,n,r,a,u;return D(this,function(c){switch(c.label){case 0:if(!(e==="on"))return[3,12];t=!0,n=Date.now(),r="pcm16";c.label=1;case 1:c.trys.push([1,5,,11]);return[4,v.begin()];case 2:c.sent();return[4,h.connect()];case 3:c.sent();return[4,v.record(function(){var e=o(function(e){var a;return D(this,function(o){a=Date.now()-n;G.emit("audio_chunk",{isStart:t,mimeType:r,elapsedTime:a,data:e.mono}),t=!1;return[2]})});return function(t){return e.apply(this,arguments)}}())];case 4:c.sent(),h.onStop=function(){return i(!1)};return[3,11];case 5:a=c.sent();c.label=6;case 6:c.trys.push([6,8,,9]);return[4,v.end()];case 7:c.sent();return[3,9];case 8:u=c.sent();return[3,9];case 9:return[4,h.interrupt()];case 10:c.sent(),G.emit("audio_end"),s("off");return[2];case 11:return[3,15];case 12:return[4,v.end()];case 13:c.sent();return[4,h.interrupt()];case 14:c.sent();c.label=15;case 15:s(e);return[2]}})});return function(t){return e.apply(this,arguments)}}()),G.on("audio_chunk",function(e){h.add16BitPCM(e.data,e.track),i(!0)}),G.on("audio_interrupt",function(){h.interrupt()}),G.on("resume_thread",function(e){var t,n,r,a,o;var i=!!(e===null||e===void 0?void 0:(t=e.metadata)===null||t===void 0?void 0:t.viewer_read_only);!i&&B&&e.id!==B&&(window.location.href="/thread/".concat(e.id)),!i&&B&&z(e.id);var s=[];var u=true,l=false,f=undefined;try{for(var d=e.steps[Symbol.iterator](),h;!(u=(h=d.next()).done);u=true){var v=h.value;s=e$(s,v)}}catch(e){l=true;f=e}finally{try{if(!u&&d.return!=null){d.return()}}finally{if(l){throw f}}}((n=e.metadata)===null||n===void 0?void 0:n.chat_profile)&&M((r=e.metadata)===null||r===void 0?void 0:r.chat_profile),((a=e.metadata)===null||a===void 0?void 0:a.chat_settings)&&c((o=e.metadata)===null||o===void 0?void 0:o.chat_settings),p(s);var m=e.elements||[];R(m.filter(function(e){return e.type==="tasklist"})),S(m.filter(function(e){return["avatar","tasklist"].indexOf(e.type)===-1}))}),G.on("resume_thread_error",function(e){L(e)}),G.on("new_message",function(e){p(function(t){return e$(t,e)})}),G.on("first_interaction",function(e){l(e.interaction),z(e.thread_id)}),G.on("update_message",function(e){p(function(t){return e0(t,e.id,e)})}),G.on("delete_message",function(e){p(function(t){return e1(t,e.id)})}),G.on("stream_start",function(e){p(function(t){return e$(t,e)})}),G.on("stream_token",function(e){var t=e.id,n=e.token,r=e.isSequence,a=e.isInput;p(function(e){return e2(e,t,n,r,a)})}),G.on("ask",function(e,t){var n=e.msg,r=e.spec;m({spec:r,callback:t,parentId:n.parentId}),p(function(e){return e$(e,n)}),f(!1)}),G.on("ask_timeout",function(){m(void 0),f(!1)}),G.on("clear_ask",function(){m(void 0)}),G.on("call_fn",function(e,t){var n=e.name,r=e.args;y({name:n,args:r,callback:t})}),G.on("clear_call_fn",function(){y(void 0)}),G.on("call_fn_timeout",function(){y(void 0)}),G.on("chat_settings",function(e){I(e),u()}),G.on("set_commands",function(e){g(e)}),G.on("set_modes",function(e){k(e)}),G.on("set_favorites",function(e){V(e)}),G.on("set_sidebar_title",function(e){w(function(t){return(t===null||t===void 0?void 0:t.title)===e?t:{title:e,elements:(t===null||t===void 0?void 0:t.elements)||[]}})}),G.on("set_sidebar_elements",function(n){var r=n.elements,a=n.key;r.length?(r.forEach(function(n){!n.url&&n.chainlitKey&&(n.url=e.getElementUrl(n.chainlitKey,t))}),w(function(e){return(e===null||e===void 0?void 0:e.key)===a?e:{title:(e===null||e===void 0?void 0:e.title)||"",elements:r,key:a}})):w(void 0)}),G.on("element",function(n){!n.url&&n.chainlitKey&&(n.url=e.getElementUrl(n.chainlitKey,t)),n.type==="tasklist"?R(function(e){var t=e.findIndex(function(e){return e.id===n.id});return t===-1?_(e).concat([n]):_(e.slice(0,t)).concat([n],_(e.slice(t+1)))}):S(function(e){var t=e.findIndex(function(e){return e.id===n.id});return t===-1?_(e).concat([n]):_(e.slice(0,t)).concat([n],_(e.slice(t+1)))})}),G.on("remove_element",function(e){S(function(t){return t.filter(function(t){return t.id!==e.id})}),R(function(t){return t.filter(function(t){return t.id!==e.id})})}),G.on("action",function(e){C(function(t){return _(t).concat([e])})}),G.on("remove_action",function(e){C(function(t){var n=t.findIndex(function(t){return t.id===e.id});return n===-1?t:_(t.slice(0,n)).concat(_(t.slice(n+1)))})}),G.on("token_usage",function(e){E(function(t){return t+e})}),G.on("window_message",function(e){window.parent&&window.parent.postMessage(e,"*")}),G.on("toast",function(e){if(!e.message){console.warn("No message received for toast.");return}switch(e.type){case"info":U.toast.info(e.message);break;case"error":U.toast.error(e.message);break;case"success":U.toast.success(e.message);break;case"warning":U.toast.warning(e.message);break;default:U.toast(e.message);break}});return[2]}})});return function(e){return n.apply(this,arguments)}}(),[a,t,B,T]),G=F.useCallback(j.debounce(H,200),[H]),J=F.useCallback(function(){(r===null||r===void 0?void 0:r.socket)&&(r.socket.removeAllListeners(),r.socket.close())},[r]);return{connect:G,disconnect:J,session:r,sessionId:t,chatProfile:T,idToResume:B,setChatProfile:M}};var tc=function(){var e=x(O.useRecoilState(eI),2),t=e[0],n=e[1],r=O.useRecoilValue(ex),a=O.useRecoilValue(e_),i=O.useRecoilValue(eE),s=ti(),u=s.startAudioStream,c=s.endAudioStream,l=F.useCallback(/*#__PURE__*/o(function(){return D(this,function(e){switch(e.label){case 0:n("connecting");return[4,u()];case 1:e.sent();return[2]}})}),[u]),f=F.useCallback(/*#__PURE__*/o(function(){return D(this,function(e){switch(e.label){case 0:n("off");return[4,r.end()];case 1:e.sent();return[4,a.interrupt()];case 2:e.sent();return[4,c()];case 3:e.sent();return[2]}})}),[c,r,a]);return{startConversation:l,endConversation:f,audioConnection:t,isAiSpeaking:i,wavRecorder:r,wavStreamPlayer:a}};var tl=function(){var e=x(O.useRecoilState(eL),2),t=e[0],n=e[1],r=te(),a=r.isAuthenticated,o=O.useRecoilValue(ep),i=navigator.language||"en-US",s=F.useRef(o),u=a?"/project/settings?language=".concat(i).concat(o?"&chat_profile=".concat(encodeURIComponent(o)):""):null,c=a&&!t,l=e8(c?u:null),f=l.data,d=l.error,h=l.isLoading;return F.useEffect(function(){f&&n(f)},[f,n]),F.useEffect(function(){s.current!==o&&(n(void 0),s.current=o)},[o,n]),{config:t,error:d,isLoading:h,language:i}};var tf=new WeakMap,td=function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;var a,o,i;if(r&&(o=t.toString(),i=n.toString(),a=tf.has(e)?tf.get(e):{},tf.set(e,a),a[o]=a[o]||{},a[o][i]))return a[o][i];var s=e.length,u=new Array(t);if(t<=s){u.fill(0);var c=new Array(t).fill(0);for(var l=0;l<s;l++){var f=Math.floor(l*(t/s));n?u[f]=Math.max(u[f],Math.abs(e[l])):u[f]+=Math.abs(e[l]),c[f]++}if(!n)for(var d=0;d<u.length;d++)u[d]=u[d]/c[d]}else for(var h=0;h<t;h++){var v=h*(s-1)/(t-1),p=Math.floor(v),m=Math.ceil(v),y=v-p;m>=s?u[h]=e[s-1]:u[h]=e[p]*(1-y)+e[m]*y}return r&&(a[o][i]=u),u},th={drawBars:function(e,t,n,r,a){var o=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0,i=arguments.length>6&&arguments[6]!==void 0?arguments[6]:0,s=arguments.length>7&&arguments[7]!==void 0?arguments[7]:0,u=arguments.length>8&&arguments[8]!==void 0?arguments[8]:!1;o=Math.floor(Math.min(o,(n-s)/(Math.max(i,1)+s))),o||(o=Math.floor((n-s)/(Math.max(i,1)+s))),i||(i=(n-s)/o-s);var c=td(t,o,!0);for(var l=0;l<o;l++){var f=Math.abs(c[l]),d=Math.max(1,f*r),h=s+l*(i+s),v=u?(r-d)/2:r-d,p=Math.min(i/2,d/2);e.fillStyle=a,e.beginPath(),e.moveTo(h+p,v),e.lineTo(h+i-p,v),e.arcTo(h+i,v,h+i,v+p,p),e.lineTo(h+i,v+d-p),e.arcTo(h+i,v+d,h+i-p,v+d,p),e.lineTo(h+p,v+d),e.arcTo(h,v+d,h,v+d-p,p),e.lineTo(h,v+p),e.arcTo(h,v,h+p,v,p),e.closePath(),e.fill()}}};Object.defineProperty(exports,"Socket",{enumerable:true,get:function e(){return V.Socket}});exports.APIBase=tn;exports.ChainlitAPI=tr;exports.ChainlitContext=to;exports.ClientError=tt;exports.WavRenderer=th;exports.actionState=ek;exports.addMessage=e$;exports.addMessageToParent=eY;exports.askUserState=eC;exports.audioConnectionState=eI;exports.authState=eV;exports.callFnState=eP;exports.chatProfileState=ep;exports.chatSettingsDefaultValueSelector=eM;exports.chatSettingsInputsState=eT;exports.chatSettingsValueState=eD;exports.commandsState=eb;exports.configState=eL;exports.currentThreadIdState=eN;exports.defaultChainlitContext=ta;exports.deleteMessageById=e1;exports.elementState=eO;exports.favoriteMessagesState=eH;exports.fetcher=e4;exports.firstUserInteraction=eB;exports.hasMessageById=eZ;exports.isAiSpeakingState=eE;exports.isLastMessage=eK;exports.loadingState=eR;exports.mcpState=ez;exports.messagesState=ew;exports.modesState=eS;exports.nestMessages=eJ;exports.resumeThreadErrorState=ev;exports.sessionIdState=ey;exports.sessionState=eg;exports.sideViewState=eq;exports.tasklistState=ej;exports.threadHistoryState=eU;exports.threadIdToResumeState=eh;exports.tokenCountState=eA;exports.updateMessageById=e0;exports.updateMessageContentById=e2;exports.useApi=e8;exports.useAudio=tc;exports.useAuth=te;exports.useChatData=eG;exports.useChatInteract=ti;exports.useChatMessages=ts;exports.useChatSession=tu;exports.useConfig=tl;exports.userState=eF;exports.wavRecorderState=ex;exports.wavStreamPlayerState=e_;//# sourceMappingURL=out.js.map
2
2
  //# sourceMappingURL=index.js.map