@marimo-team/frontend 0.19.8-dev16 → 0.19.8-dev18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/assets/{CellStatus-DbwQRhK0.js → CellStatus-BU_cY1M-.js} +1 -1
  2. package/dist/assets/{JsonOutput-BTXiwFjF.js → JsonOutput-BSoo6rnn.js} +5 -5
  3. package/dist/assets/{MarimoErrorOutput-lr6vqAph.js → MarimoErrorOutput-CAX5i2GE.js} +5 -5
  4. package/dist/assets/{RenderHTML-hMZtS42w.js → RenderHTML-D9vJ9neG.js} +1 -1
  5. package/dist/assets/{add-cell-with-ai-DdyvzMmu.js → add-cell-with-ai-BN_m4VjP.js} +8 -8
  6. package/dist/assets/{add-database-form-CUZKNC1e.js → add-database-form-CvczP0Mq.js} +1 -1
  7. package/dist/assets/{agent-panel-IMNT3-jn.js → agent-panel-CbBdQTaH.js} +3 -3
  8. package/dist/assets/{ai-model-dropdown-C_Fhvna-.js → ai-model-dropdown-Bfoz25CZ.js} +4 -4
  9. package/dist/assets/{app-config-button-BqV8GA-q.js → app-config-button-CrXbU4T9.js} +1 -1
  10. package/dist/assets/{cell-editor-BOEKMtAl.js → cell-editor-BAqUkTV8.js} +9 -9
  11. package/dist/assets/cell-link-BoOn0OpK.js +1 -0
  12. package/dist/assets/{cells-DdLMh4kY.js → cells-DbD2lYze.js} +46 -46
  13. package/dist/assets/{chat-components-jnrAy95o.js → chat-components-C2rqCcnp.js} +1 -1
  14. package/dist/assets/{chat-display-rXqWwmbx.js → chat-display-CKRYf3fp.js} +1 -1
  15. package/dist/assets/chat-panel-CYVu9MUa.js +3 -0
  16. package/dist/assets/{column-preview-t0CyBVJf.js → column-preview-DtEv_bAg.js} +1 -1
  17. package/dist/assets/{command-cs3Dd1TU.js → command-PbcrObnK.js} +1 -1
  18. package/dist/assets/{command-palette-CPnBRjW3.js → command-palette-A_nn_y2h.js} +1 -1
  19. package/dist/assets/{common-VAE3DrnP.js → common-DRWuidzm.js} +1 -1
  20. package/dist/assets/{datasource-BBMMxrje.js → datasource-Dkywo3Kg.js} +2 -2
  21. package/dist/assets/{dependency-graph-panel-D16tZkyM.js → dependency-graph-panel-ZnsWxFY3.js} +2 -2
  22. package/dist/assets/{documentation-panel-0BCnCatP.js → documentation-panel-CZJavCAM.js} +1 -1
  23. package/dist/assets/{download-BodpSpiQ.js → download-CmdFQXRz.js} +1 -1
  24. package/dist/assets/{edit-page-DEmceOIJ.js → edit-page-COE4a7-G.js} +7 -7
  25. package/dist/assets/{error-panel-D7CVHSby.js → error-panel-B1n50cDF.js} +1 -1
  26. package/dist/assets/{file-explorer-panel-d9LDZt_k.js → file-explorer-panel-Ctq6A5l_.js} +1 -1
  27. package/dist/assets/{floating-outline-C8UBGhNL.js → floating-outline-BULIQxKU.js} +1 -1
  28. package/dist/assets/{focus-Bd_p77qK.js → focus-BEf2RhRf.js} +1 -1
  29. package/dist/assets/{form-D23zs2fF.js → form-94alAnRh.js} +2 -2
  30. package/dist/assets/{globals-BgJBhxFI.js → globals-BXYmO-WL.js} +1 -1
  31. package/dist/assets/{home-page-DXMa3CyZ.js → home-page-CyLRJEZg.js} +2 -2
  32. package/dist/assets/{hooks-BelJFeV-.js → hooks-DfBLwtVf.js} +1 -1
  33. package/dist/assets/{html-to-image-Bc6qDa9c.js → html-to-image-DrmKVKna.js} +1 -1
  34. package/dist/assets/{index-CNSzdqo2.js → index-Ud-15Gp2.js} +10 -10
  35. package/dist/assets/{kiosk-mode-BlAqMmYG.js → kiosk-mode-BWCEjQ_F.js} +1 -1
  36. package/dist/assets/{layout-DQygoZG8.js → layout-DFhAD73H.js} +3 -3
  37. package/dist/assets/{logs-panel-B3aMPrwV.js → logs-panel-y2i-7VQF.js} +1 -1
  38. package/dist/assets/{markdown-renderer-Dy-FX527.js → markdown-renderer-D8AmLSIR.js} +1 -1
  39. package/dist/assets/{mode-BfhhQnCm.js → mode-CjmQoGEk.js} +1 -1
  40. package/dist/assets/{name-cell-input-DvFZv__e.js → name-cell-input-BthamWJY.js} +1 -1
  41. package/dist/assets/{outline-panel-DH2X9Yaa.js → outline-panel-DsM57ZnT.js} +1 -1
  42. package/dist/assets/{packages-panel-BWx1vxzx.js → packages-panel-BMqAMJxC.js} +1 -1
  43. package/dist/assets/{panels-COeRVsZl.js → panels-BPRD9NT1.js} +1 -1
  44. package/dist/assets/{process-output-CHXcfo-X.js → process-output-OTqBNunj.js} +1 -1
  45. package/dist/assets/{readonly-python-code-iXJtea8u.js → readonly-python-code-C_8a4fwz.js} +1 -1
  46. package/dist/assets/{run-page-DY_aoUra.js → run-page-CPt0ml4p.js} +1 -1
  47. package/dist/assets/{scratchpad-panel-B_QupDvF.js → scratchpad-panel-DJdZVxe5.js} +1 -1
  48. package/dist/assets/{session-panel-IeLEqwsB.js → session-panel-Bqe3Jmko.js} +1 -1
  49. package/dist/assets/{snippets-panel-nld0VX-j.js → snippets-panel-WBcYsSsb.js} +1 -1
  50. package/dist/assets/{state-yRkQ_uSW.js → state-DlF73owK.js} +1 -1
  51. package/dist/assets/{switch-D-TxHKpg.js → switch-BUKXfBTu.js} +1 -1
  52. package/dist/assets/{textarea-BFfMAEaQ.js → textarea-8F9GOEGf.js} +1 -1
  53. package/dist/assets/{tracing-DB7ckaG0.js → tracing-DGYwY__a.js} +1 -1
  54. package/dist/assets/{tracing-panel-CxTR1RYC.js → tracing-panel-BHnlOWW9.js} +2 -2
  55. package/dist/assets/{types-D-xsoOE8.js → types-7nV0hgXj.js} +1 -1
  56. package/dist/assets/{useAddCell-Bc2_jloT.js → useAddCell-Cx99GRHQ.js} +1 -1
  57. package/dist/assets/{useCellActionButton-DUpWwYW8.js → useCellActionButton-VRGP_KkG.js} +1 -1
  58. package/dist/assets/{useDeleteCell-6jBNYEDG.js → useDeleteCell-DHPNhAtW.js} +1 -1
  59. package/dist/assets/{useDependencyPanelTab-Dq7NTXk8.js → useDependencyPanelTab-UoJrnugs.js} +1 -1
  60. package/dist/assets/{useNotebookActions-BJzm4sz2.js → useNotebookActions-DY_TVOaP.js} +1 -1
  61. package/dist/assets/useRunCells-BOowME8Z.js +1 -0
  62. package/dist/assets/{useSplitCell-DE71CDKv.js → useSplitCell-h8RpNtuv.js} +1 -1
  63. package/dist/assets/{utilities.esm-DHgCWD2S.js → utilities.esm-D1YtU9uV.js} +3 -3
  64. package/dist/index.html +31 -31
  65. package/package.json +1 -1
  66. package/src/components/app-config/user-config-form.tsx +0 -54
  67. package/src/components/chat/chat-panel.tsx +23 -26
  68. package/src/core/config/feature-flag.tsx +0 -4
  69. package/dist/assets/cell-link-OwIbBa8Q.js +0 -1
  70. package/dist/assets/chat-panel-ims98I-K.js +0 -3
  71. package/dist/assets/useRunCells-CmbQTUeO.js +0 -1
@@ -1296,34 +1296,6 @@ export const UserConfigForm: React.FC = () => {
1296
1296
  </div>
1297
1297
  )}
1298
1298
  />
1299
- <FormField
1300
- control={form.control}
1301
- name="experimental.performant_table_charts"
1302
- render={({ field }) => (
1303
- <div className="flex flex-col gap-y-1">
1304
- <FormItem className={formItemClasses}>
1305
- <FormLabel className="font-normal">
1306
- Performant Table Charts
1307
- </FormLabel>
1308
- <FormControl>
1309
- <Checkbox
1310
- data-testid="performant-table-charts-checkbox"
1311
- checked={field.value === true}
1312
- onCheckedChange={field.onChange}
1313
- />
1314
- </FormControl>
1315
- </FormItem>
1316
- <IsOverridden
1317
- userConfig={config}
1318
- name="experimental.performant_table_charts"
1319
- />
1320
- <FormDescription>
1321
- Enable experimental table charts which are computed on the
1322
- backend.
1323
- </FormDescription>
1324
- </div>
1325
- )}
1326
- />
1327
1299
  <FormField
1328
1300
  control={form.control}
1329
1301
  name="experimental.external_agents"
@@ -1356,32 +1328,6 @@ export const UserConfigForm: React.FC = () => {
1356
1328
  </div>
1357
1329
  )}
1358
1330
  />
1359
- <FormField
1360
- control={form.control}
1361
- name="experimental.chat_modes"
1362
- render={({ field }) => (
1363
- <div className="flex flex-col gap-y-1">
1364
- <FormItem className={formItemClasses}>
1365
- <FormLabel className="font-normal">Chat Mode</FormLabel>
1366
- <FormControl>
1367
- <Checkbox
1368
- data-testid="chat-mode-checkbox"
1369
- checked={field.value === true}
1370
- onCheckedChange={field.onChange}
1371
- />
1372
- </FormControl>
1373
- </FormItem>
1374
- <IsOverridden
1375
- userConfig={config}
1376
- name="experimental.chat_modes"
1377
- />
1378
- <FormDescription>
1379
- Switch between different modes in the Chat sidebar, to
1380
- enable tool use.
1381
- </FormDescription>
1382
- </div>
1383
- )}
1384
- />
1385
1331
  <FormField
1386
1332
  control={form.control}
1387
1333
  name="experimental.server_side_pdf_export"
@@ -45,7 +45,6 @@ import {
45
45
  import { useCellActions } from "@/core/cells/cells";
46
46
  import { aiAtom, aiEnabledAtom } from "@/core/config/config";
47
47
  import { DEFAULT_AI_MODEL } from "@/core/config/config-schema";
48
- import { FeatureFlagged } from "@/core/config/feature-flag";
49
48
  import { useRequestClient } from "@/core/network/requests";
50
49
  import { useRuntimeManager } from "@/core/runtime/config";
51
50
  import { ErrorBanner } from "@/plugins/impl/common/error-banner";
@@ -264,32 +263,30 @@ const ChatInputFooter: React.FC<ChatInputFooterProps> = memo(
264
263
  <TooltipProvider>
265
264
  <div className="px-3 py-2 border-t border-border/20 flex flex-row flex-wrap items-center justify-between gap-1">
266
265
  <div className="flex items-center gap-2">
267
- <FeatureFlagged feature="chat_modes">
268
- <Select value={currentMode} onValueChange={saveModeChange}>
269
- <SelectTrigger className="h-6 text-xs border-border shadow-none! ring-0! bg-muted hover:bg-muted/30 py-0 px-2 gap-1 capitalize">
270
- {currentMode}
271
- </SelectTrigger>
272
- <SelectContent>
273
- <SelectGroup>
274
- <SelectLabel>AI Mode</SelectLabel>
275
- {modeOptions.map((option) => (
276
- <SelectItem
277
- key={option.value}
278
- value={option.value}
279
- className="text-xs"
280
- >
281
- <div className="flex flex-col">
282
- {option.label}
283
- <div className="text-muted-foreground text-xs pt-1 block">
284
- {option.subtitle}
285
- </div>
266
+ <Select value={currentMode} onValueChange={saveModeChange}>
267
+ <SelectTrigger className="h-6 text-xs border-border shadow-none! ring-0! bg-muted hover:bg-muted/30 py-0 px-2 gap-1 capitalize">
268
+ {currentMode}
269
+ </SelectTrigger>
270
+ <SelectContent>
271
+ <SelectGroup>
272
+ <SelectLabel>AI Mode</SelectLabel>
273
+ {modeOptions.map((option) => (
274
+ <SelectItem
275
+ key={option.value}
276
+ value={option.value}
277
+ className="text-xs"
278
+ >
279
+ <div className="flex flex-col">
280
+ {option.label}
281
+ <div className="text-muted-foreground text-xs pt-1 block">
282
+ {option.subtitle}
286
283
  </div>
287
- </SelectItem>
288
- ))}
289
- </SelectGroup>
290
- </SelectContent>
291
- </Select>
292
- </FeatureFlagged>
284
+ </div>
285
+ </SelectItem>
286
+ ))}
287
+ </SelectGroup>
288
+ </SelectContent>
289
+ </Select>
293
290
  <AIModelDropdown
294
291
  placeholder="Model"
295
292
  triggerClassName="h-6 text-xs shadow-none! ring-0! bg-muted hover:bg-muted/30 rounded-sm"
@@ -9,8 +9,6 @@ export interface ExperimentalFeatures {
9
9
  markdown: boolean; // Used in playground (community cloud)
10
10
  wasm_layouts: boolean; // Used in playground (community cloud)
11
11
  rtc_v2: boolean;
12
- performant_table_charts: boolean;
13
- chat_modes: boolean;
14
12
  cache_panel: boolean;
15
13
  external_agents: boolean;
16
14
  server_side_pdf_export: boolean;
@@ -21,8 +19,6 @@ const defaultValues: ExperimentalFeatures = {
21
19
  markdown: true,
22
20
  wasm_layouts: false,
23
21
  rtc_v2: false,
24
- performant_table_charts: false,
25
- chat_modes: false,
26
22
  cache_panel: false,
27
23
  external_agents: import.meta.env.DEV,
28
24
  server_side_pdf_export: true,
@@ -1 +0,0 @@
1
- import{s as j}from"./chunk-LvLJmgfZ.js";import{d as P,l as w,n as y,u as L}from"./useEvent-BhXAndur.js";import{Jt as O,Kr as _,j as A,k as E,ri as S,vt as T,w as $}from"./cells-DdLMh4kY.js";import{t as b}from"./compiler-runtime-B3qBwwSJ.js";import{d as D}from"./hotkeys-BHHWjLlp.js";import{d as F}from"./utils-YqBXNpsM.js";import{r as x}from"./constants-B6Cb__3x.js";import{h as q,x as B}from"./config-D2-Bw6QC.js";import{t as H}from"./jsx-runtime-ZmTK25f3.js";import{t as J}from"./cn-BKtXLv3a.js";import{r as K}from"./requests-B4FYHTZl.js";import{n as M}from"./paths-Dfii2bN8.js";import{s as R}from"./session-fBtIbMpB.js";import{n as U}from"./ImperativeModal-DZr52ffu.js";var V=b();function I(){return L(_)}function z(){let r=(0,V.c)(5),[t]=w(q),e=P(_),{openAlert:o}=U(),{sendRename:s}=K(),a;return r[0]!==t.state||r[1]!==o||r[2]!==s||r[3]!==e?(a=async l=>{let n=F();return t.state===B.OPEN?(R(i=>{l===null?i.delete(x.filePath):i.set(x.filePath,l)}),s({filename:l}).then(()=>(e(l),document.title=n.app_title||M.basename(l)||"Untitled Notebook",l)).catch(i=>(o(i.message),null))):(o("Failed to save notebook: not connected to a kernel."),null)},r[0]=t.state,r[1]=o,r[2]=s,r[3]=e,r[4]=a):a=r[4],y(a)}var p=b(),v=j(H(),1);const k=r=>{let t=(0,p.c)(12),{className:e,cellId:o,variant:s,onClick:a,formatCellName:l,skipScroll:n}=r,i=A()[o]??"",C=E().inOrderIds.indexOf(o),{showCellIfHidden:d}=$(),g=l??W,c;t[0]===e?c=t[1]:(c=J("inline-block cursor-pointer text-link hover:underline",e),t[0]=e,t[1]=c);let m;t[2]!==o||t[3]!==a||t[4]!==d||t[5]!==n||t[6]!==s?(m=h=>{if(o==="__scratch__")return!1;d({cellId:o}),h.stopPropagation(),h.preventDefault(),requestAnimationFrame(()=>{N(o,s,n)&&(a==null||a())})},t[2]=o,t[3]=a,t[4]=d,t[5]=n,t[6]=s,t[7]=m):m=t[7];let f=g(T(i,C)),u;return t[8]!==c||t[9]!==m||t[10]!==f?(u=(0,v.jsx)("div",{className:c,role:"link",tabIndex:-1,onClick:m,children:f}),t[8]=c,t[9]=m,t[10]=f,t[11]=u):u=t[11],u},G=r=>{let t=(0,p.c)(2),e;return t[0]===r?e=t[1]:(e=(0,v.jsx)(k,{...r,variant:"destructive"}),t[0]=r,t[1]=e),e},Q=r=>{let t=(0,p.c)(10),{cellId:e,lineNumber:o}=r,s=I(),a;t[0]!==e||t[1]!==o?(a=()=>O(e,o),t[0]=e,t[1]=o,t[2]=a):a=t[2];let l;t[3]!==e||t[4]!==s?(l=i=>e==="__scratch__"?"scratch":`marimo://${s||"untitled"}#cell=${i}`,t[3]=e,t[4]=s,t[5]=l):l=t[5];let n;return t[6]!==e||t[7]!==a||t[8]!==l?(n=(0,v.jsx)(k,{cellId:e,onClick:a,skipScroll:!0,variant:"destructive",className:"traceback-cell-link",formatCellName:l}),t[6]=e,t[7]=a,t[8]=l,t[9]=n):n=t[9],n};function N(r,t,e){let o=S.create(r),s=document.getElementById(o);return s===null?(D.error(`Cell ${o} not found on page.`),!1):(e||s.scrollIntoView({behavior:"smooth",block:"center"}),t==="destructive"&&(s.classList.add("error-outline"),setTimeout(()=>{s.classList.remove("error-outline")},2e3)),t==="focus"&&(s.classList.add("focus-outline"),setTimeout(()=>{s.classList.remove("focus-outline")},2e3)),!0)}function W(r){return r}export{I as a,N as i,G as n,z as o,Q as r,k as t};
@@ -1,3 +0,0 @@
1
- import{s as et}from"./chunk-LvLJmgfZ.js";import{d as It,f as zt,l as kt,n as V,u as Ve}from"./useEvent-BhXAndur.js";import{t as Dt}from"./react-Bj1aDYRI.js";import{Gn as Mt,fn as Ft,w as Ht}from"./cells-DdLMh4kY.js";import"./react-dom-CSu739Rf.js";import{t as tt}from"./compiler-runtime-B3qBwwSJ.js";import{T as Ot,o as Wt,r as rt,t as Yt,w as Ut}from"./ai-model-dropdown-C_Fhvna-.js";import{d as Ie}from"./hotkeys-BHHWjLlp.js";import{n as lt,r as Xt}from"./utils-YqBXNpsM.js";import{o as Bt}from"./config-D2-Bw6QC.js";import{r as ae}from"./useEventListener-Cb-RVVEn.js";import{t as Vt}from"./jsx-runtime-ZmTK25f3.js";import{t as B}from"./button-CZ3Cs4qb.js";import{t as se}from"./cn-BKtXLv3a.js";import"./dist-DBwNzi3C.js";import"./cjs-CH5Rj0g8.js";import"./main-U5Goe76G.js";import"./useNonce-CS26E0hA.js";import{r as qt}from"./requests-B4FYHTZl.js";import{E as $t,O as Gt,c as Jt,d as Kt,f as Qt,g as Zt,k as er,l as ot,n as nt,p as tr,s as at,u as rr,v as lr,w as or,x as nr}from"./add-cell-with-ai-DdyvzMmu.js";import{i as st,n as ar,r as sr,t as ir}from"./chat-components-jnrAy95o.js";import"./markdown-renderer-Dy-FX527.js";import{n as cr}from"./spinner-DA8-7wQv.js";import{t as dr}from"./plus-B7DF33lD.js";import{lt as ur,r as it}from"./input-DHHmNa19.js";import{t as mr}from"./settings-OBbrbhij.js";import{r as ct,t as pr}from"./state-yRkQ_uSW.js";import{t as hr}from"./square-DPZjfUaq.js";import"./dist-Cayq-K1c.js";import"./dist-TiFCI16_.js";import"./dist-BIKFl48f.js";import"./dist-B0VqT_4z.js";import"./dist-BYyu59D8.js";import{t as fr}from"./use-toast-T0_cQDma.js";import"./session-fBtIbMpB.js";import{C as xr,E as vr,_ as he,g as q,w as $,x as ze}from"./Combination-izwufzWe.js";import{a as gr,i as wr,n as br,p as yr,r as jr,s as Sr,t as Cr}from"./select-B7bfltkI.js";import{i as dt,t as ie}from"./tooltip-C_WgOOcZ.js";import{u as Nr}from"./menu-items-vwmjPhjW.js";import{i as _r}from"./dates-CT5PUuFo.js";import{t as Rr}from"./context-Ga_vV5mE.js";import{i as Ar,r as Tr,t as Er}from"./popover-B-131r4d.js";import{t as Lr}from"./copy-icon-B9w72gBC.js";import{n as Pr}from"./error-banner-Dlrzo_Ay.js";import"./chunk-5FQGJX7Z-CwvgJCug.js";import"./katex-CDLTCvjQ.js";import"./html-to-image-Bc6qDa9c.js";import{t as Ir}from"./chat-display-rXqWwmbx.js";import"./esm-C-53tlK5.js";import{t as qe}from"./empty-state-DrmGF88A.js";var ut=tt(),m=et(Dt(),1);const zr=({chatState:e,chatId:t,messages:r})=>{if(!t)return Ie.warn("No active chat"),e;let a=e.chats.get(t);if(!a)return Ie.warn("No active chat"),e;let o=new Map(e.chats),n=Date.now();return o.set(a.id,{...a,messages:r,updatedAt:n}),{...e,chats:o}};var l=et(Vt(),1);function kr(e,t){return m.useReducer((r,a)=>t[r][a]??r,e)}var $e="ScrollArea",[mt,fo]=vr($e),[Dr,F]=mt($e),pt=m.forwardRef((e,t)=>{let{__scopeScrollArea:r,type:a="hover",dir:o,scrollHideDelay:n=600,...s}=e,[c,i]=m.useState(null),[d,u]=m.useState(null),[p,h]=m.useState(null),[f,g]=m.useState(null),[y,L]=m.useState(null),[b,C]=m.useState(0),[j,S]=m.useState(0),[_,N]=m.useState(!1),[P,I]=m.useState(!1),w=ae(t,k=>i(k)),T=Nr(o);return(0,l.jsx)(Dr,{scope:r,type:a,dir:T,scrollHideDelay:n,scrollArea:c,viewport:d,onViewportChange:u,content:p,onContentChange:h,scrollbarX:f,onScrollbarXChange:g,scrollbarXEnabled:_,onScrollbarXEnabledChange:N,scrollbarY:y,onScrollbarYChange:L,scrollbarYEnabled:P,onScrollbarYEnabledChange:I,onCornerWidthChange:C,onCornerHeightChange:S,children:(0,l.jsx)(he.div,{dir:T,...s,ref:w,style:{position:"relative","--radix-scroll-area-corner-width":b+"px","--radix-scroll-area-corner-height":j+"px",...e.style}})})});pt.displayName=$e;var ht="ScrollAreaViewport",ft=m.forwardRef((e,t)=>{let{__scopeScrollArea:r,children:a,nonce:o,...n}=e,s=F(ht,r),c=ae(t,m.useRef(null),s.onViewportChange);return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:o}),(0,l.jsx)(he.div,{"data-radix-scroll-area-viewport":"",...n,ref:c,style:{overflowX:s.scrollbarXEnabled?"scroll":"hidden",overflowY:s.scrollbarYEnabled?"scroll":"hidden",...e.style},children:(0,l.jsx)("div",{ref:s.onContentChange,style:{minWidth:"100%",display:"table"},children:a})})]})});ft.displayName=ht;var Y="ScrollAreaScrollbar",Ge=m.forwardRef((e,t)=>{let{forceMount:r,...a}=e,o=F(Y,e.__scopeScrollArea),{onScrollbarXEnabledChange:n,onScrollbarYEnabledChange:s}=o,c=e.orientation==="horizontal";return m.useEffect(()=>(c?n(!0):s(!0),()=>{c?n(!1):s(!1)}),[c,n,s]),o.type==="hover"?(0,l.jsx)(Mr,{...a,ref:t,forceMount:r}):o.type==="scroll"?(0,l.jsx)(Fr,{...a,ref:t,forceMount:r}):o.type==="auto"?(0,l.jsx)(xt,{...a,ref:t,forceMount:r}):o.type==="always"?(0,l.jsx)(Je,{...a,ref:t}):null});Ge.displayName=Y;var Mr=m.forwardRef((e,t)=>{let{forceMount:r,...a}=e,o=F(Y,e.__scopeScrollArea),[n,s]=m.useState(!1);return m.useEffect(()=>{let c=o.scrollArea,i=0;if(c){let d=()=>{window.clearTimeout(i),s(!0)},u=()=>{i=window.setTimeout(()=>s(!1),o.scrollHideDelay)};return c.addEventListener("pointerenter",d),c.addEventListener("pointerleave",u),()=>{window.clearTimeout(i),c.removeEventListener("pointerenter",d),c.removeEventListener("pointerleave",u)}}},[o.scrollArea,o.scrollHideDelay]),(0,l.jsx)(ze,{present:r||n,children:(0,l.jsx)(xt,{"data-state":n?"visible":"hidden",...a,ref:t})})}),Fr=m.forwardRef((e,t)=>{let{forceMount:r,...a}=e,o=F(Y,e.__scopeScrollArea),n=e.orientation==="horizontal",s=Fe(()=>i("SCROLL_END"),100),[c,i]=kr("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}});return m.useEffect(()=>{if(c==="idle"){let d=window.setTimeout(()=>i("HIDE"),o.scrollHideDelay);return()=>window.clearTimeout(d)}},[c,o.scrollHideDelay,i]),m.useEffect(()=>{let d=o.viewport,u=n?"scrollLeft":"scrollTop";if(d){let p=d[u],h=()=>{let f=d[u];p!==f&&(i("SCROLL"),s()),p=f};return d.addEventListener("scroll",h),()=>d.removeEventListener("scroll",h)}},[o.viewport,n,i,s]),(0,l.jsx)(ze,{present:r||c!=="hidden",children:(0,l.jsx)(Je,{"data-state":c==="hidden"?"hidden":"visible",...a,ref:t,onPointerEnter:$(e.onPointerEnter,()=>i("POINTER_ENTER")),onPointerLeave:$(e.onPointerLeave,()=>i("POINTER_LEAVE"))})})}),xt=m.forwardRef((e,t)=>{let r=F(Y,e.__scopeScrollArea),{forceMount:a,...o}=e,[n,s]=m.useState(!1),c=e.orientation==="horizontal",i=Fe(()=>{if(r.viewport){let d=r.viewport.offsetWidth<r.viewport.scrollWidth,u=r.viewport.offsetHeight<r.viewport.scrollHeight;s(c?d:u)}},10);return ce(r.viewport,i),ce(r.content,i),(0,l.jsx)(ze,{present:a||n,children:(0,l.jsx)(Je,{"data-state":n?"visible":"hidden",...o,ref:t})})}),Je=m.forwardRef((e,t)=>{let{orientation:r="vertical",...a}=e,o=F(Y,e.__scopeScrollArea),n=m.useRef(null),s=m.useRef(0),[c,i]=m.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),d=yt(c.viewport,c.content),u={...a,sizes:c,onSizesChange:i,hasThumb:d>0&&d<1,onThumbChange:h=>n.current=h,onThumbPointerUp:()=>s.current=0,onThumbPointerDown:h=>s.current=h};function p(h,f){return Xr(h,s.current,c,f)}return r==="horizontal"?(0,l.jsx)(Hr,{...u,ref:t,onThumbPositionChange:()=>{if(o.viewport&&n.current){let h=o.viewport.scrollLeft,f=jt(h,c,o.dir);n.current.style.transform=`translate3d(${f}px, 0, 0)`}},onWheelScroll:h=>{o.viewport&&(o.viewport.scrollLeft=h)},onDragScroll:h=>{o.viewport&&(o.viewport.scrollLeft=p(h,o.dir))}}):r==="vertical"?(0,l.jsx)(Or,{...u,ref:t,onThumbPositionChange:()=>{if(o.viewport&&n.current){let h=o.viewport.scrollTop,f=jt(h,c);n.current.style.transform=`translate3d(0, ${f}px, 0)`}},onWheelScroll:h=>{o.viewport&&(o.viewport.scrollTop=h)},onDragScroll:h=>{o.viewport&&(o.viewport.scrollTop=p(h))}}):null}),Hr=m.forwardRef((e,t)=>{let{sizes:r,onSizesChange:a,...o}=e,n=F(Y,e.__scopeScrollArea),[s,c]=m.useState(),i=m.useRef(null),d=ae(t,i,n.onScrollbarXChange);return m.useEffect(()=>{i.current&&c(getComputedStyle(i.current))},[i]),(0,l.jsx)(gt,{"data-orientation":"horizontal",...o,ref:d,sizes:r,style:{bottom:0,left:n.dir==="rtl"?"var(--radix-scroll-area-corner-width)":0,right:n.dir==="ltr"?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":Me(r)+"px",...e.style},onThumbPointerDown:u=>e.onThumbPointerDown(u.x),onDragScroll:u=>e.onDragScroll(u.x),onWheelScroll:(u,p)=>{if(n.viewport){let h=n.viewport.scrollLeft+u.deltaX;e.onWheelScroll(h),Ct(h,p)&&u.preventDefault()}},onResize:()=>{i.current&&n.viewport&&s&&a({content:n.viewport.scrollWidth,viewport:n.viewport.offsetWidth,scrollbar:{size:i.current.clientWidth,paddingStart:De(s.paddingLeft),paddingEnd:De(s.paddingRight)}})}})}),Or=m.forwardRef((e,t)=>{let{sizes:r,onSizesChange:a,...o}=e,n=F(Y,e.__scopeScrollArea),[s,c]=m.useState(),i=m.useRef(null),d=ae(t,i,n.onScrollbarYChange);return m.useEffect(()=>{i.current&&c(getComputedStyle(i.current))},[i]),(0,l.jsx)(gt,{"data-orientation":"vertical",...o,ref:d,sizes:r,style:{top:0,right:n.dir==="ltr"?0:void 0,left:n.dir==="rtl"?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":Me(r)+"px",...e.style},onThumbPointerDown:u=>e.onThumbPointerDown(u.y),onDragScroll:u=>e.onDragScroll(u.y),onWheelScroll:(u,p)=>{if(n.viewport){let h=n.viewport.scrollTop+u.deltaY;e.onWheelScroll(h),Ct(h,p)&&u.preventDefault()}},onResize:()=>{i.current&&n.viewport&&s&&a({content:n.viewport.scrollHeight,viewport:n.viewport.offsetHeight,scrollbar:{size:i.current.clientHeight,paddingStart:De(s.paddingTop),paddingEnd:De(s.paddingBottom)}})}})}),[Wr,vt]=mt(Y),gt=m.forwardRef((e,t)=>{let{__scopeScrollArea:r,sizes:a,hasThumb:o,onThumbChange:n,onThumbPointerUp:s,onThumbPointerDown:c,onThumbPositionChange:i,onDragScroll:d,onWheelScroll:u,onResize:p,...h}=e,f=F(Y,r),[g,y]=m.useState(null),L=ae(t,w=>y(w)),b=m.useRef(null),C=m.useRef(""),j=f.viewport,S=a.content-a.viewport,_=q(u),N=q(i),P=Fe(p,10);function I(w){b.current&&d({x:w.clientX-b.current.left,y:w.clientY-b.current.top})}return m.useEffect(()=>{let w=T=>{let k=T.target;g!=null&&g.contains(k)&&_(T,S)};return document.addEventListener("wheel",w,{passive:!1}),()=>document.removeEventListener("wheel",w,{passive:!1})},[j,g,S,_]),m.useEffect(N,[a,N]),ce(g,P),ce(f.content,P),(0,l.jsx)(Wr,{scope:r,scrollbar:g,hasThumb:o,onThumbChange:q(n),onThumbPointerUp:q(s),onThumbPositionChange:N,onThumbPointerDown:q(c),children:(0,l.jsx)(he.div,{...h,ref:L,style:{position:"absolute",...h.style},onPointerDown:$(e.onPointerDown,w=>{w.button===0&&(w.target.setPointerCapture(w.pointerId),b.current=g.getBoundingClientRect(),C.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",f.viewport&&(f.viewport.style.scrollBehavior="auto"),I(w))}),onPointerMove:$(e.onPointerMove,I),onPointerUp:$(e.onPointerUp,w=>{let T=w.target;T.hasPointerCapture(w.pointerId)&&T.releasePointerCapture(w.pointerId),document.body.style.webkitUserSelect=C.current,f.viewport&&(f.viewport.style.scrollBehavior=""),b.current=null})})})}),ke="ScrollAreaThumb",wt=m.forwardRef((e,t)=>{let{forceMount:r,...a}=e,o=vt(ke,e.__scopeScrollArea);return(0,l.jsx)(ze,{present:r||o.hasThumb,children:(0,l.jsx)(Yr,{ref:t,...a})})}),Yr=m.forwardRef((e,t)=>{let{__scopeScrollArea:r,style:a,...o}=e,n=F(ke,r),s=vt(ke,r),{onThumbPositionChange:c}=s,i=ae(t,p=>s.onThumbChange(p)),d=m.useRef(void 0),u=Fe(()=>{d.current&&(d.current=(d.current(),void 0))},100);return m.useEffect(()=>{let p=n.viewport;if(p){let h=()=>{u(),d.current||(d.current=Br(p,c),c())};return c(),p.addEventListener("scroll",h),()=>p.removeEventListener("scroll",h)}},[n.viewport,u,c]),(0,l.jsx)(he.div,{"data-state":s.hasThumb?"visible":"hidden",...o,ref:i,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...a},onPointerDownCapture:$(e.onPointerDownCapture,p=>{let h=p.target.getBoundingClientRect(),f=p.clientX-h.left,g=p.clientY-h.top;s.onThumbPointerDown({x:f,y:g})}),onPointerUp:$(e.onPointerUp,s.onThumbPointerUp)})});wt.displayName=ke;var Ke="ScrollAreaCorner",bt=m.forwardRef((e,t)=>{let r=F(Ke,e.__scopeScrollArea),a=!!(r.scrollbarX&&r.scrollbarY);return r.type!=="scroll"&&a?(0,l.jsx)(Ur,{...e,ref:t}):null});bt.displayName=Ke;var Ur=m.forwardRef((e,t)=>{let{__scopeScrollArea:r,...a}=e,o=F(Ke,r),[n,s]=m.useState(0),[c,i]=m.useState(0),d=!!(n&&c);return ce(o.scrollbarX,()=>{var p;let u=((p=o.scrollbarX)==null?void 0:p.offsetHeight)||0;o.onCornerHeightChange(u),i(u)}),ce(o.scrollbarY,()=>{var p;let u=((p=o.scrollbarY)==null?void 0:p.offsetWidth)||0;o.onCornerWidthChange(u),s(u)}),d?(0,l.jsx)(he.div,{...a,ref:t,style:{width:n,height:c,position:"absolute",right:o.dir==="ltr"?0:void 0,left:o.dir==="rtl"?0:void 0,bottom:0,...e.style}}):null});function De(e){return e?parseInt(e,10):0}function yt(e,t){let r=e/t;return isNaN(r)?0:r}function Me(e){let t=yt(e.viewport,e.content),r=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,a=(e.scrollbar.size-r)*t;return Math.max(a,18)}function Xr(e,t,r,a="ltr"){let o=Me(r),n=o/2,s=t||n,c=o-s,i=r.scrollbar.paddingStart+s,d=r.scrollbar.size-r.scrollbar.paddingEnd-c,u=r.content-r.viewport,p=a==="ltr"?[0,u]:[u*-1,0];return St([i,d],p)(e)}function jt(e,t,r="ltr"){let a=Me(t),o=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,n=t.scrollbar.size-o,s=t.content-t.viewport,c=n-a,i=yr(e,r==="ltr"?[0,s]:[s*-1,0]);return St([0,s],[0,c])(i)}function St(e,t){return r=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let a=(t[1]-t[0])/(e[1]-e[0]);return t[0]+a*(r-e[0])}}function Ct(e,t){return e>0&&e<t}var Br=(e,t=()=>{})=>{let r={left:e.scrollLeft,top:e.scrollTop},a=0;return(function o(){let n={left:e.scrollLeft,top:e.scrollTop},s=r.left!==n.left,c=r.top!==n.top;(s||c)&&t(),r=n,a=window.requestAnimationFrame(o)})(),()=>window.cancelAnimationFrame(a)};function Fe(e,t){let r=q(e),a=m.useRef(0);return m.useEffect(()=>()=>window.clearTimeout(a.current),[]),m.useCallback(()=>{window.clearTimeout(a.current),a.current=window.setTimeout(r,t)},[r,t])}function ce(e,t){let r=q(t);xr(()=>{let a=0;if(e){let o=new ResizeObserver(()=>{cancelAnimationFrame(a),a=window.requestAnimationFrame(r)});return o.observe(e),()=>{window.cancelAnimationFrame(a),o.unobserve(e)}}},[e,r])}var Nt=pt,Vr=ft,qr=bt,_t=m.forwardRef((e,t)=>{let r=(0,ut.c)(15),a,o,n;r[0]===e?(a=r[1],o=r[2],n=r[3]):({className:o,children:a,...n}=e,r[0]=e,r[1]=a,r[2]=o,r[3]=n);let s;r[4]===o?s=r[5]:(s=se("relative overflow-hidden",o),r[4]=o,r[5]=s);let c;r[6]===a?c=r[7]:(c=(0,l.jsx)(Vr,{className:"h-full w-full rounded-[inherit]",children:a}),r[6]=a,r[7]=c);let i,d;r[8]===Symbol.for("react.memo_cache_sentinel")?(i=(0,l.jsx)(Rt,{}),d=(0,l.jsx)(qr,{}),r[8]=i,r[9]=d):(i=r[8],d=r[9]);let u;return r[10]!==n||r[11]!==t||r[12]!==s||r[13]!==c?(u=(0,l.jsxs)(Nt,{ref:t,className:s,...n,children:[c,i,d]}),r[10]=n,r[11]=t,r[12]=s,r[13]=c,r[14]=u):u=r[14],u});_t.displayName=Nt.displayName;var Rt=m.forwardRef((e,t)=>{let r=(0,ut.c)(14),a,o,n;r[0]===e?(a=r[1],o=r[2],n=r[3]):({className:a,orientation:n,...o}=e,r[0]=e,r[1]=a,r[2]=o,r[3]=n);let s=n===void 0?"vertical":n,c=s==="vertical"&&"h-full w-2.5 border-l border-l-transparent p-px",i=s==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent p-px",d;r[4]!==a||r[5]!==c||r[6]!==i?(d=se("flex touch-none select-none transition-colors",c,i,a),r[4]=a,r[5]=c,r[6]=i,r[7]=d):d=r[7];let u;r[8]===Symbol.for("react.memo_cache_sentinel")?(u=(0,l.jsx)(wt,{className:"relative flex-1 rounded-full bg-border"}),r[8]=u):u=r[8];let p;return r[9]!==s||r[10]!==o||r[11]!==t||r[12]!==d?(p=(0,l.jsx)(Ge,{ref:t,orientation:s,className:d,...o,children:u}),r[9]=s,r[10]=o,r[11]=t,r[12]=d,r[13]=p):p=r[13],p});Rt.displayName=Ge.displayName;var $r=[{label:"Today",days:0},{label:"Yesterday",days:1},{label:"2d ago",days:2},{label:"3d ago",days:3},{label:"This week",days:7},{label:"This month",days:30}];const Gr=e=>{let t=Date.now(),r=$r.map(n=>({...n,chats:[]})),a={label:"Older",days:1/0,chats:[]},o=n=>{switch(n){case 0:return r[0];case 1:return r[1];case 2:return r[2];case 3:return r[3];default:return n>=4&&n<=7?r[4]:n>=8&&n<=30?r[5]:a}};for(let n of e)o(Math.floor((t-n.updatedAt)/864e5)).chats.push(n);return[...r,a].filter(n=>n.chats.length>0)},Jr=({activeChatId:e,setActiveChat:t})=>{let r=Ve(ct),{locale:a}=Rr(),[o,n]=(0,m.useState)(""),s=(0,m.useMemo)(()=>[...r.chats.values()].sort((d,u)=>u.updatedAt-d.updatedAt),[r.chats]),c=(0,m.useMemo)(()=>o.trim()?s.filter(d=>d.title.toLowerCase().includes(o.toLowerCase())):s,[s,o]),i=(0,m.useMemo)(()=>Gr(c),[c]);return(0,l.jsxs)(Er,{children:[(0,l.jsx)(ie,{content:"Previous chats",children:(0,l.jsx)(Ar,{asChild:!0,children:(0,l.jsx)(B,{variant:"text",size:"icon",children:(0,l.jsx)(Mt,{className:"h-4 w-4"})})})}),(0,l.jsxs)(Tr,{className:"w-[480px] p-0",align:"start",side:"right",children:[(0,l.jsx)("div",{className:"pt-3 px-3 w-full",children:(0,l.jsx)(it,{placeholder:"Search chat history...",value:o,onChange:d=>n(d.target.value),className:"text-xs"})}),(0,l.jsx)(_t,{className:"h-[450px] p-2",children:(0,l.jsxs)("div",{className:"space-y-3",children:[s.length===0&&(0,l.jsx)(qe,{title:"No chats yet",description:"Start a new chat to get started",icon:(0,l.jsx)(st,{})}),c.length===0&&o&&s.length>0&&(0,l.jsx)(qe,{title:"No chats found",description:`No chats match "${o}"`,icon:(0,l.jsx)(ur,{})}),i.map((d,u)=>(0,l.jsxs)("div",{className:"space-y-2",children:[(0,l.jsx)("div",{className:"text-xs px-1 text-muted-foreground/60",children:d.label}),(0,l.jsx)("div",{children:d.chats.map(p=>(0,l.jsxs)("button",{className:se("w-full p-1 rounded-md cursor-pointer text-left flex items-center justify-between",p.id===e&&"bg-accent",p.id!==e&&"hover:bg-muted/20"),onClick:()=>{t(p.id)},type:"button",children:[(0,l.jsx)("div",{className:"flex-1 min-w-0",children:(0,l.jsx)("div",{className:"text-sm truncate",children:p.title})}),(0,l.jsx)("div",{className:"text-xs text-muted-foreground/60 ml-2 flex-shrink-0",children:_r(p.updatedAt,a)})]},p.id))}),u!==i.length-1&&(0,l.jsx)("hr",{})]},d.label))]})})]})]})};var de=tt(),At="manual",Kr=new Set(["openai","google","anthropic"]),Qr=["image/*","text/*"],Zr=1024*1024*50,el=e=>{let t=(0,de.c)(18),{onNewChat:r,activeChatId:a,setActiveChat:o}=e,{handleClick:n}=rt(),s;t[0]===Symbol.for("react.memo_cache_sentinel")?(s=(0,l.jsx)(dr,{className:"h-4 w-4"}),t[0]=s):s=t[0];let c;t[1]===r?c=t[2]:(c=(0,l.jsx)(ie,{content:"New chat",children:(0,l.jsx)(B,{variant:"text",size:"icon",onClick:r,children:s})}),t[1]=r,t[2]=c);let i;t[3]===Symbol.for("react.memo_cache_sentinel")?(i=(0,l.jsx)(Wt,{}),t[3]=i):i=t[3];let d;t[4]===n?d=t[5]:(d=()=>n("ai"),t[4]=n,t[5]=d);let u;t[6]===Symbol.for("react.memo_cache_sentinel")?(u=(0,l.jsx)(mr,{className:"h-4 w-4"}),t[6]=u):u=t[6];let p;t[7]===d?p=t[8]:(p=(0,l.jsx)(ie,{content:"AI Settings",children:(0,l.jsx)(B,{variant:"text",size:"xs",className:"hover:bg-foreground/10 py-2",onClick:d,children:u})}),t[7]=d,t[8]=p);let h;t[9]!==a||t[10]!==o?(h=(0,l.jsx)(Jr,{activeChatId:a,setActiveChat:o}),t[9]=a,t[10]=o,t[11]=h):h=t[11];let f;t[12]!==p||t[13]!==h?(f=(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[i,p,h]}),t[12]=p,t[13]=h,t[14]=f):f=t[14];let g;return t[15]!==c||t[16]!==f?(g=(0,l.jsxs)("div",{className:"flex border-b px-2 py-1 justify-between shrink-0 items-center",children:[c,f]}),t[15]=c,t[16]=f,t[17]=g):g=t[17],g},Tt=(0,m.memo)(e=>{let t=(0,de.c)(15),{message:r,index:a,onEdit:o,isStreamingReasoning:n,isLast:s}=e,c;t[0]!==a||t[1]!==o?(c=y=>{var C,j,S;let L=(j=(C=y.parts)==null?void 0:C.filter(ol))==null?void 0:j.map(nl).join(`
2
- `),b=(S=y.parts)==null?void 0:S.filter(al);return(0,l.jsxs)("div",{className:"w-[95%] bg-background border p-1 rounded-sm",children:[b==null?void 0:b.map(sl),(0,l.jsx)(nt,{value:L,placeholder:"Type your message...",onChange:il,onSubmit:(_,N)=>{N.trim()&&o(a,N)},onClose:cl},y.id)]})},t[0]=a,t[1]=o,t[2]=c):c=t[2];let i=c,d;t[3]!==s||t[4]!==n?(d=y=>(0,l.jsxs)("div",{className:"w-[95%] wrap-break-word",children:[(0,l.jsx)("div",{className:"absolute right-1 top-1 opacity-0 group-hover:opacity-100 transition-opacity",children:(0,l.jsx)(Lr,{className:"h-3 w-3",value:y.parts.filter(dl).map(ul).join(`
3
- `)||""})}),Ir({message:y,isStreamingReasoning:n,isLast:s})]}),t[3]=s,t[4]=n,t[5]=d):d=t[5];let u=d,p=r.role==="user"?"justify-end":"justify-start",h;t[6]===p?h=t[7]:(h=se("flex group relative",p),t[6]=p,t[7]=h);let f;t[8]!==r||t[9]!==u||t[10]!==i?(f=r.role==="user"?i(r):u(r),t[8]=r,t[9]=u,t[10]=i,t[11]=f):f=t[11];let g;return t[12]!==h||t[13]!==f?(g=(0,l.jsx)("div",{className:h,children:f}),t[12]=h,t[13]=f,t[14]=g):g=t[14],g});Tt.displayName="ChatMessage";var Et=(0,m.memo)(e=>{var fe;let t=(0,de.c)(39),{isEmpty:r,onSendClick:a,isLoading:o,onStop:n,fileInputRef:s,onAddFiles:c,onAddContext:i}=e,d=Ve(lt),u=(d==null?void 0:d.mode)||At,p=((fe=d==null?void 0:d.models)==null?void 0:fe.chat_model)||"openai/gpt-4o",h=Ut.parse(p).providerId,{saveModeChange:f}=Ot(),g;t[0]===Symbol.for("react.memo_cache_sentinel")?(g=[{value:"ask",label:"Ask",subtitle:"Use AI with access to read-only tools like documentation search"},{value:"manual",label:"Manual",subtitle:"Pure chat, no tool usage"},{value:"agent",label:"Agent (beta)",subtitle:"Use AI with access to read and write tools"}],t[0]=g):g=t[0];let y=g,L=Kr.has(h),b;t[1]===u?b=t[2]:(b=(0,l.jsx)(Sr,{className:"h-6 text-xs border-border shadow-none! ring-0! bg-muted hover:bg-muted/30 py-0 px-2 gap-1 capitalize",children:u}),t[1]=u,t[2]=b);let C;t[3]===Symbol.for("react.memo_cache_sentinel")?(C=(0,l.jsx)(gr,{children:"AI Mode"}),t[3]=C):C=t[3];let j;t[4]===y?j=t[5]:(j=(0,l.jsx)(br,{children:(0,l.jsxs)(jr,{children:[C,y.map(ml)]})}),t[4]=y,t[5]=j);let S;t[6]!==u||t[7]!==f||t[8]!==b||t[9]!==j?(S=(0,l.jsx)(Ft,{feature:"chat_modes",children:(0,l.jsxs)(Cr,{value:u,onValueChange:f,children:[b,j]})}),t[6]=u,t[7]=f,t[8]=b,t[9]=j,t[10]=S):S=t[10];let _;t[11]===Symbol.for("react.memo_cache_sentinel")?(_=(0,l.jsx)(Yt,{placeholder:"Model",triggerClassName:"h-6 text-xs shadow-none! ring-0! bg-muted hover:bg-muted/30 rounded-sm",iconSize:"small",showAddCustomModelDocs:!0,forRole:"chat"}),t[11]=_):_=t[11];let N;t[12]===S?N=t[13]:(N=(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[S,_]}),t[12]=S,t[13]=N);let P;t[14]===Symbol.for("react.memo_cache_sentinel")?(P=(0,l.jsx)(er,{className:"h-3.5 w-3.5"}),t[14]=P):P=t[14];let I;t[15]!==o||t[16]!==i?(I=(0,l.jsx)(ie,{content:"Add context",children:(0,l.jsx)(B,{variant:"text",size:"icon",onClick:i,disabled:o,children:P})}),t[15]=o,t[16]=i,t[17]=I):I=t[17];let w;t[18]!==s||t[19]!==L||t[20]!==o||t[21]!==c?(w=L&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(ie,{content:"Attach a file",children:(0,l.jsx)(B,{variant:"text",size:"icon",className:"cursor-pointer",onClick:()=>{var X;return(X=s.current)==null?void 0:X.click()},title:"Attach a file",disabled:o,children:(0,l.jsx)(sr,{className:"h-3.5 w-3.5"})})}),(0,l.jsx)(it,{ref:s,type:"file",multiple:!0,hidden:!0,onChange:X=>{X.target.files&&c([...X.target.files])},accept:Qr.join(",")})]}),t[18]=s,t[19]=L,t[20]=o,t[21]=c,t[22]=w):w=t[22];let T=o?"Stop":"Submit",k=o?n:a,A=o?!1:r,E;t[23]===o?E=t[24]:(E=o?(0,l.jsx)(hr,{className:"h-3 w-3 fill-current"}):(0,l.jsx)(Gt,{className:"h-3 w-3"}),t[23]=o,t[24]=E);let H;t[25]!==k||t[26]!==A||t[27]!==E?(H=(0,l.jsx)(B,{variant:"text",size:"sm",className:"h-6 w-6 p-0 hover:bg-muted/30 cursor-pointer",onClick:k,disabled:A,children:E}),t[25]=k,t[26]=A,t[27]=E,t[28]=H):H=t[28];let U;t[29]!==T||t[30]!==H?(U=(0,l.jsx)(ie,{content:T,children:H}),t[29]=T,t[30]=H,t[31]=U):U=t[31];let O;t[32]!==w||t[33]!==U||t[34]!==I?(O=(0,l.jsxs)("div",{className:"flex flex-row",children:[I,w,U]}),t[32]=w,t[33]=U,t[34]=I,t[35]=O):O=t[35];let D;return t[36]!==O||t[37]!==N?(D=(0,l.jsx)(dt,{children:(0,l.jsxs)("div",{className:"px-3 py-2 border-t border-border/20 flex flex-row flex-wrap items-center justify-between gap-1",children:[N,O]})}),t[36]=O,t[37]=N,t[38]=D):D=t[38],D});Et.displayName="ChatInputFooter";var Qe=(0,m.memo)(e=>{let t=(0,de.c)(29),{placeholder:r,input:a,inputClassName:o,setInput:n,onSubmit:s,inputRef:c,isLoading:i,onStop:d,fileInputRef:u,onAddFiles:p,onClose:h}=e,f;t[0]!==a||t[1]!==s?(f=()=>{a.trim()&&s(void 0,a)},t[0]=a,t[1]=s,t[2]=f):f=t[2];let g=V(f),y;t[3]===o?y=t[4]:(y=se("px-2 py-3 flex-1",o),t[3]=o,t[4]=y);let L=r||"Type your message...",b;t[5]!==a||t[6]!==c||t[7]!==p||t[8]!==h||t[9]!==s||t[10]!==n||t[11]!==L?(b=(0,l.jsx)(nt,{inputRef:c,value:a,onChange:n,onSubmit:s,onClose:h,onAddFiles:p,placeholder:L}),t[5]=a,t[6]=c,t[7]=p,t[8]=h,t[9]=s,t[10]=n,t[11]=L,t[12]=b):b=t[12];let C;t[13]!==y||t[14]!==b?(C=(0,l.jsx)("div",{className:y,children:b}),t[13]=y,t[14]=b,t[15]=C):C=t[15];let j=!a.trim(),S;t[16]===c?S=t[17]:(S=()=>nr(c),t[16]=c,t[17]=S);let _;t[18]!==u||t[19]!==g||t[20]!==i||t[21]!==p||t[22]!==d||t[23]!==j||t[24]!==S?(_=(0,l.jsx)(Et,{isEmpty:j,onAddContext:S,onSendClick:g,isLoading:i,onStop:d,fileInputRef:u,onAddFiles:p}),t[18]=u,t[19]=g,t[20]=i,t[21]=p,t[22]=d,t[23]=j,t[24]=S,t[25]=_):_=t[25];let N;return t[26]!==C||t[27]!==_?(N=(0,l.jsxs)("div",{className:"relative shrink-0 min-h-[80px] flex flex-col border-t",children:[C,_]}),t[26]=C,t[27]=_,t[28]=N):N=t[28],N});Qe.displayName="ChatInput";var tl=()=>{let e=(0,de.c)(6),t=Ve(Xt),{handleClick:r}=rt();if(!t){let o;e[0]===r?o=e[1]:(o=(0,l.jsx)(B,{variant:"outline",size:"sm",onClick:()=>r("ai","ai-providers"),children:"Edit AI settings"}),e[0]=r,e[1]=o);let n;e[2]===Symbol.for("react.memo_cache_sentinel")?(n=(0,l.jsx)(st,{}),e[2]=n):n=e[2];let s;return e[3]===o?s=e[4]:(s=(0,l.jsx)(qe,{title:"Chat with AI",description:"No AI provider configured or Chat model not selected",action:o,icon:n}),e[3]=o,e[4]=s),s}let a;return e[5]===Symbol.for("react.memo_cache_sentinel")?(a=(0,l.jsx)(rl,{}),e[5]=a):a=e[5],a},rl=()=>{let e=(0,de.c)(95),t=It(ct),[r,a]=kt(pr),[o,n]=(0,m.useState)(""),[s,c]=(0,m.useState)(""),[i,d]=(0,m.useState)(),u=(0,m.useRef)(null),p=(0,m.useRef)(null),h=(0,m.useRef)(null),f=(0,m.useRef)(null),g=(0,m.useRef)(null),y=Bt(),{invokeAiTool:L,sendRun:b}=qt(),C=r==null?void 0:r.id,j=zt(),{addStagedCell:S}=lr(),{createNewCell:_,prepareForRun:N}=Ht(),P;e[0]!==S||e[1]!==_||e[2]!==N||e[3]!==b||e[4]!==j?(P={addStagedCell:S,createNewCell:_,prepareForRun:N,sendRun:b,store:j},e[0]=S,e[1]=_,e[2]=N,e[3]=b,e[4]=j,e[5]=P):P=e[5];let I=P,w;e[6]===(r==null?void 0:r.messages)?w=e[7]:(w=(r==null?void 0:r.messages)||[],e[6]=r==null?void 0:r.messages,e[7]=w);let T;if(e[8]!==y||e[9]!==j){let x;e[11]===j?x=e[12]:(x=async v=>{var ne;let R=await Jt(v.messages),W=((ne=j.get(lt))==null?void 0:ne.mode)||At;return{body:{tools:Zt.getToolSchemas(W),...v,...R}}},e[11]=j,e[12]=x),T=new $t({api:y.getAiURL("chat").toString(),headers:y.headers(),prepareSendMessagesRequest:x}),e[8]=y,e[9]=j,e[10]=T}else T=e[10];let k;e[13]===t?k=e[14]:(k=x=>{let{messages:v}=x;t(R=>zr({chatState:R,chatId:R.activeChatId,messages:v}))},e[13]=t,e[14]=k);let{messages:A,sendMessage:E,error:H,status:U,regenerate:O,stop:D,addToolOutput:fe,id:X}=or({id:C,sendAutomaticallyWhen:pl,messages:w,transport:T,onFinish:k,onToolCall:async x=>{let{toolCall:v}=x;if(v.dynamic){Ie.debug("Skipping dynamic tool call",v);return}await Kt({invokeAiTool:L,addToolOutput:Lt,toolCall:{toolName:v.toolName,toolCallId:v.toolCallId,input:v.input},toolContext:I})},onError:hl}),Lt=fe,xe;e[15]===Symbol.for("react.memo_cache_sentinel")?(xe=x=>{if(x.length===0)return;let v=0;for(let R of x)v+=R.size;if(v>Zr){fr({title:"File size exceeds 50MB limit",description:"Please remove some files and try again."});return}d(R=>[...R??[],...x])},e[15]=xe):xe=e[15];let ve=V(xe),ge;e[16]===i?ge=e[17]:(ge=x=>{i&&d(i.filter(v=>v!==x))},e[16]=i,e[17]=ge);let He=V(ge),z=U==="submitted"||U==="streaming",we;e[18]!==z||e[19]!==A?(we=z&&A.length>0&&tr(A),e[18]=z,e[19]=A,e[20]=we):we=e[20];let ue=we,be;e[21]===Symbol.for("react.memo_cache_sentinel")?(be=()=>{requestAnimationFrame(()=>{if(h.current){let x=h.current;x.scrollTop=x.scrollHeight}})},e[21]=be):be=e[21];let ye;e[22]===C?ye=e[23]:(ye=[C],e[22]=C,e[23]=ye),(0,m.useEffect)(be,ye);let je;e[24]!==X||e[25]!==E||e[26]!==t?(je=async(x,v)=>{let R=Date.now(),W={id:X,title:rr(x),messages:[],createdAt:R,updatedAt:R};t(pe=>{let Ze=new Map(pe.chats);return Ze.set(W.id,W),{...pe,chats:Ze,activeChatId:W.id}});let ne=v&&v.length>0?await ot(v):void 0;E({role:"user",parts:[{type:"text",text:x},...ne??[]]}),d(void 0),n("")},e[24]=X,e[25]=E,e[26]=t,e[27]=je):je=e[27];let Oe=je,Se;e[28]===a?Se=e[29]:(Se=()=>{a(null),n(""),c(""),d(void 0)},e[28]=a,e[29]=Se);let We=V(Se),Ce;e[30]!==A||e[31]!==E?(Ce=(x,v)=>{var pe;let R=A[x],W=(pe=R.parts)==null?void 0:pe.filter(fl),ne=R.id;E({messageId:ne,role:"user",parts:[{type:"text",text:v},...W]})},e[30]=A,e[31]=E,e[32]=Ce):Ce=e[32];let me=V(Ce),Ne;e[33]!==i||e[34]!==E?(Ne=async(x,v)=>{var W;if(!v.trim())return;(W=p.current)!=null&&W.view&&at(p.current.view);let R=i?await ot(i):void 0;x==null||x.preventDefault(),E({text:v,files:R}),n(""),d(void 0)},e[33]=i,e[34]=E,e[35]=Ne):Ne=e[35];let Ye=V(Ne),_e;e[36]===O?_e=e[37]:(_e=()=>{O()},e[36]=O,e[37]=_e);let Ue=_e,Re;e[38]!==Oe||e[39]!==i||e[40]!==s?(Re=()=>{var x;s.trim()&&((x=u.current)!=null&&x.view&&at(u.current.view),Oe(s.trim(),i))},e[38]=Oe,e[39]=i,e[40]=s,e[41]=Re):Re=e[41];let Xe=V(Re),Ae;e[42]===Symbol.for("react.memo_cache_sentinel")?(Ae=()=>{var x,v;return(v=(x=u.current)==null?void 0:x.editor)==null?void 0:v.blur()},e[42]=Ae):Ae=e[42];let Pt=Ae,M=A.length===0,Te;e[43]!==Ye||e[44]!==Xe||e[45]!==o||e[46]!==z||e[47]!==M||e[48]!==s||e[49]!==ve||e[50]!==D?(Te=M?(0,l.jsx)(Qe,{placeholder:"Ask anything, @ to include context about tables or dataframes",input:s,inputRef:u,inputClassName:"px-1 py-0",setInput:c,onSubmit:Xe,isLoading:z,onStop:D,fileInputRef:f,onAddFiles:ve,onClose:Pt},"new-thread-input"):(0,l.jsx)(Qe,{input:o,setInput:n,onSubmit:Ye,inputRef:p,isLoading:z,onStop:D,onClose:()=>{var x,v;return(v=(x=p.current)==null?void 0:x.editor)==null?void 0:v.blur()},fileInputRef:f,onAddFiles:ve}),e[43]=Ye,e[44]=Xe,e[45]=o,e[46]=z,e[47]=M,e[48]=s,e[49]=ve,e[50]=D,e[51]=Te):Te=e[51];let G=Te,Ee;e[52]!==i||e[53]!==M||e[54]!==He?(Ee=i&&i.length>0&&(0,l.jsx)("div",{className:se("flex flex-row gap-1 flex-wrap p-1",M&&"py-2 px-1"),children:i==null?void 0:i.map(x=>(0,l.jsx)(ar,{file:x,onRemove:()=>He(x)},x.name))}),e[52]=i,e[53]=M,e[54]=He,e[55]=Ee):Ee=e[55];let J=Ee,Be=r==null?void 0:r.id,K;e[56]!==We||e[57]!==a||e[58]!==Be?(K=(0,l.jsx)(dt,{children:(0,l.jsx)(el,{onNewChat:We,activeChatId:Be,setActiveChat:a})}),e[56]=We,e[57]=a,e[58]=Be,e[59]=K):K=e[59];let Q;e[60]!==G||e[61]!==J||e[62]!==M?(Q=M&&(0,l.jsxs)("div",{className:"rounded-md border bg-background",children:[J,G]}),e[60]=G,e[61]=J,e[62]=M,e[63]=Q):Q=e[63];let Z;if(e[64]!==me||e[65]!==ue||e[66]!==A){let x;e[68]!==me||e[69]!==ue||e[70]!==A.length?(x=(v,R)=>(0,l.jsx)(Tt,{message:v,index:R,onEdit:me,isStreamingReasoning:ue,isLast:R===A.length-1},v.id),e[68]=me,e[69]=ue,e[70]=A.length,e[71]=x):x=e[71],Z=A.map(x),e[64]=me,e[65]=ue,e[66]=A,e[67]=Z}else Z=e[67];let ee;e[72]===z?ee=e[73]:(ee=z&&(0,l.jsx)("div",{className:"flex justify-center py-4",children:(0,l.jsx)(cr,{className:"h-4 w-4 animate-spin"})}),e[72]=z,e[73]=ee);let te;e[74]!==H||e[75]!==Ue?(te=H&&(0,l.jsxs)("div",{className:"flex items-center justify-center space-x-2 mb-4",children:[(0,l.jsx)(Pr,{error:H}),(0,l.jsx)(B,{variant:"outline",size:"sm",onClick:Ue,children:"Retry"})]}),e[74]=H,e[75]=Ue,e[76]=te):te=e[76];let Le;e[77]===Symbol.for("react.memo_cache_sentinel")?(Le=(0,l.jsx)("div",{ref:g}),e[77]=Le):Le=e[77];let re;e[78]!==Q||e[79]!==Z||e[80]!==ee||e[81]!==te?(re=(0,l.jsxs)("div",{className:"flex-1 px-3 bg-(--slate-1) gap-4 py-3 flex flex-col overflow-y-auto",ref:h,children:[Q,Z,ee,te,Le]}),e[78]=Q,e[79]=Z,e[80]=ee,e[81]=te,e[82]=re):re=e[82];let le;e[83]!==z||e[84]!==D?(le=z&&(0,l.jsx)("div",{className:"w-full flex justify-center items-center z-20 border-t",children:(0,l.jsx)(B,{variant:"linkDestructive",size:"sm",onClick:D,children:"Stop"})}),e[83]=z,e[84]=D,e[85]=le):le=e[85];let oe;e[86]!==G||e[87]!==J||e[88]!==M?(oe=!M&&(0,l.jsxs)(l.Fragment,{children:[J,G]}),e[86]=G,e[87]=J,e[88]=M,e[89]=oe):oe=e[89];let Pe;return e[90]!==K||e[91]!==re||e[92]!==le||e[93]!==oe?(Pe=(0,l.jsxs)("div",{className:"flex flex-col h-[calc(100%-53px)]",children:[K,re,le,oe]}),e[90]=K,e[91]=re,e[92]=le,e[93]=oe,e[94]=Pe):Pe=e[94],Pe},ll=tl;function ol(e){return e.type==="text"}function nl(e){return e.text}function al(e){return e.type==="file"}function sl(e,t){return(0,l.jsx)(ir,{attachment:e},t)}function il(){}function cl(){}function dl(e){return e.type==="text"}function ul(e){return e.text}function ml(e){return(0,l.jsx)(wr,{value:e.value,className:"text-xs",children:(0,l.jsxs)("div",{className:"flex flex-col",children:[e.label,(0,l.jsx)("div",{className:"text-muted-foreground text-xs pt-1 block",children:e.subtitle})]})},e.value)}function pl(e){let{messages:t}=e;return Qt(t)}function hl(e){Ie.error("An error occurred:",e)}function fl(e){return e.type==="file"}export{ll as default};
@@ -1 +0,0 @@
1
- import{d as I,n as i,p as b}from"./useEvent-BhXAndur.js";import{Sr as g,bn as k,it as y,m as p,vr as F,w as x}from"./cells-DdLMh4kY.js";import{t as D}from"./compiler-runtime-B3qBwwSJ.js";import{d as H}from"./hotkeys-BHHWjLlp.js";import{o as S}from"./dist-ChS0Dc_R.js";import{r as V}from"./requests-B4FYHTZl.js";var u=D();const v=b(!1);function _(){let r=(0,u.c)(2),n=d(),t;return r[0]===n?t=r[1]:(t=()=>n(g(p())),r[0]=n,r[1]=t),i(t)}function j(r){let n=(0,u.c)(3),t=d(),e;return n[0]!==r||n[1]!==t?(e=()=>{r!==void 0&&t([r])},n[0]=r,n[1]=t,n[2]=e):e=n[2],i(e)}function q(){let r=(0,u.c)(2),n=d(),t;return r[0]===n?t=r[1]:(t=()=>n(F(p())),r[0]=n,r[1]=t),i(t)}function d(){let r=(0,u.c)(4),{prepareForRun:n}=x(),{sendRun:t}=V(),e=I(v),o;return r[0]!==n||r[1]!==t||r[2]!==e?(o=async s=>{if(s.length===0)return;let c=p();return e(!0),w({cellIds:s,sendRun:t,prepareForRun:n,notebook:c})},r[0]=n,r[1]=t,r[2]=e,r[3]=o):o=r[3],i(o)}async function w({cellIds:r,sendRun:n,prepareForRun:t,notebook:e}){var m,R,h;if(r.length===0)return;let{cellHandles:o,cellData:s}=e,c=[];for(let a of r){let l=(R=(m=o[a])==null?void 0:m.current)==null?void 0:R.editorView,f;l?(k(l)!=="markdown"&&S(l),f=y(l)):f=((h=s[a])==null?void 0:h.code)||"",c.push(f),t({cellId:a})}await n({cellIds:r,codes:c}).catch(a=>{H.error(a)})}export{d as a,j as i,w as n,_ as o,q as r,v as t};