@marimo-team/frontend 0.25.3-dev12 → 0.25.3-dev122

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 (500) hide show
  1. package/dist/assets/CellStatus-_Aw9_foI.js +1 -0
  2. package/dist/assets/{ConnectedDataExplorerComponent-TprnxZeJ.js → ConnectedDataExplorerComponent-BRgqbAsc.js} +1 -1
  3. package/dist/assets/{ErrorBoundary-CM13wrd8.js → ErrorBoundary-DxSzjvbx.js} +2 -2
  4. package/dist/assets/JsonOutput-B7pGj79O.js +11 -0
  5. package/dist/assets/{LazyAnyLanguageCodeMirror-B4fCknq1.js → LazyAnyLanguageCodeMirror-BPYE76jR.js} +2 -2
  6. package/dist/assets/MarimoErrorOutput-Bzo6Bkp5.js +10 -0
  7. package/dist/assets/{RenderHTML-DX6i99Op.js → RenderHTML-D6AC0IhC.js} +1 -1
  8. package/dist/assets/RunButton-BjYsPiKa.js +1 -0
  9. package/dist/assets/__vite-browser-external-BynxqS4w.js +1 -0
  10. package/dist/assets/__vite-browser-external-DTOT9NDN.js +1 -0
  11. package/dist/assets/{add-cell-with-ai-BpD_790A.js → add-cell-with-ai-CFrR1iW4.js} +6 -6
  12. package/dist/assets/{add-connection-dialog-B1BXCjex.js → add-connection-dialog-CyNAB_W2.js} +1 -1
  13. package/dist/assets/{agent-panel-CDFUc1uu.js → agent-panel-VOrccb5q.js} +3 -3
  14. package/dist/assets/ai-model-dropdown-Bfxv_zvu.js +13 -0
  15. package/dist/assets/{alert-dialog-BaPGzeOK.js → alert-dialog-C-sWmKva.js} +1 -1
  16. package/dist/assets/any-language-editor-DUMe1UCk.js +1 -0
  17. package/dist/assets/{app-config-button-AdV-QDD7.js → app-config-button-BRcjv8A_.js} +1 -1
  18. package/dist/assets/arrays-0R2reF2y.js +1 -0
  19. package/dist/assets/{blob-BG8yoQmx.js → blob-DTYOX-m5.js} +1 -1
  20. package/dist/assets/{button-COI-NGrx.js → button-D8gVKwe-.js} +1 -1
  21. package/dist/assets/{cache-panel-DTY1dqvi.js → cache-panel-BV-c7ed0.js} +1 -1
  22. package/dist/assets/{capabilities-BJvf-MD4.js → capabilities-Pq1YNPlK.js} +1 -1
  23. package/dist/assets/cell-editor-eKgYK8Bd.js +42 -0
  24. package/dist/assets/{cell-link-8Auigi8P.js → cell-link-D3rkqgbU.js} +1 -1
  25. package/dist/assets/{cells-C6YGYGdi.js → cells-2HETnlvE.js} +18 -18
  26. package/dist/assets/{chat-display-DhgI2MS9.js → chat-display-BrT4VJJK.js} +1 -1
  27. package/dist/assets/chat-panel-qpPNEwxV.js +4 -0
  28. package/dist/assets/chat-ui-SAdJxg-k.js +4 -0
  29. package/dist/assets/{circle-DXf-VWZG.js → circle-B6D_6D8w.js} +1 -1
  30. package/dist/assets/{code-visibility-BJImdpDi.js → code-visibility-DYDagVy7.js} +1 -1
  31. package/dist/assets/column-preview-yI7-INkZ.js +1 -0
  32. package/dist/assets/command-palette-DF-B_YpW.js +1 -0
  33. package/dist/assets/{common-Sl3uthjg.js → common-DgXKwblm.js} +1 -1
  34. package/dist/assets/components-CBE8cOLK.js +1 -0
  35. package/dist/assets/{components-3cou6Mka.js → components-CuMhY4Sf.js} +1 -1
  36. package/dist/assets/{components-CskjK6xZ.js → components-DCo7mAWO.js} +1 -1
  37. package/dist/assets/config-CD1IuZFJ.js +1 -0
  38. package/dist/assets/{config-DRIpOKqh.js → config-DMz7oN0r.js} +1 -1
  39. package/dist/assets/{config-CA1V-wjh.js → config-DpY86_Yq.js} +1 -1
  40. package/dist/assets/{copy-D8O_CYCG.js → copy-KlhazlhB.js} +1 -1
  41. package/dist/assets/{copy-icon-BIiRXh_3.js → copy-icon-8-a5vovc.js} +1 -1
  42. package/dist/assets/{createReducer-DgRODTW6.js → createReducer-CaI_Oa0v.js} +1 -1
  43. package/dist/assets/{datasource-DfbNb83e.js → datasource-D9JMcEAP.js} +1 -1
  44. package/dist/assets/{dates-CfmdTL6B.js → dates-CQMwFko2.js} +1 -1
  45. package/dist/assets/{dependency-graph-panel-L5cBE5sl.js → dependency-graph-panel-BVJWPCvw.js} +3 -3
  46. package/dist/assets/{dist-iaThVDkA.js → dist-jlhMTKo_.js} +1 -1
  47. package/dist/assets/{documentation-panel-D7S8JIc2.js → documentation-panel--wI4XHso.js} +1 -1
  48. package/dist/assets/{download-C03FOElq.js → download-Dod42wfD.js} +1 -1
  49. package/dist/assets/{dropdown-menu-C1rnl-0o.js → dropdown-menu-DS6umAnH.js} +1 -1
  50. package/dist/assets/edit-page-Uj9YSRMX.js +9 -0
  51. package/dist/assets/{error-banner-COZ7SfYV.js → error-banner-B5kzVf_0.js} +1 -1
  52. package/dist/assets/{error-entries-CLnPDv7b.js → error-entries-D00nWhWE.js} +1 -1
  53. package/dist/assets/{error-panel-D2xrYLue.js → error-panel-CcN_1PWf.js} +1 -1
  54. package/dist/assets/{es-Cqst59WX.js → es-N9SHpmG7.js} +1 -1
  55. package/dist/assets/{feedback-button-DzPunIqU.js → feedback-button-ByGgqUsX.js} +1 -1
  56. package/dist/assets/feedback-button-tbWwJ_t6.js +1 -0
  57. package/dist/assets/file-explorer-panel-eTEqtMPW.js +1 -0
  58. package/dist/assets/{file-name-input-B4fRaQkI.js → file-name-input-D5SfTNWh.js} +1 -1
  59. package/dist/assets/{floating-outline-B5MaM1JS.js → floating-outline-B-k3P_AO.js} +1 -1
  60. package/dist/assets/{formats-yZ06h1Pl.js → formats-zylfwejq.js} +1 -1
  61. package/dist/assets/{formatting-BqrP-n49.js → formatting-uom1es4b.js} +1 -1
  62. package/dist/assets/{fullscreen-B9tHcfpV.js → fullscreen-BWTs8pYZ.js} +1 -1
  63. package/dist/assets/{gallery-page-BefvdsM7.js → gallery-page-BzbMhDHi.js} +1 -1
  64. package/dist/assets/{ganttDiagram-EL5Y4UJY-2n7Ig5Jm.js → ganttDiagram-EL5Y4UJY-CYqkCfFG.js} +1 -1
  65. package/dist/assets/{glide-data-editor-C3eaYlXg.js → glide-data-editor-BMqhUrHI.js} +2 -2
  66. package/dist/assets/{glide-utils-CIrAxdjv.js → glide-utils-HFqhvWHI.js} +2 -2
  67. package/dist/assets/home-page-DJcYWiga.js +1 -0
  68. package/dist/assets/{hooks-DzML9nez.js → hooks-CGLb_CCz.js} +1 -1
  69. package/dist/assets/{html-to-image-DK9Zl1lU.js → html-to-image-D_0rd3_B.js} +1 -1
  70. package/dist/assets/index-BnhSnwvB.css +2 -0
  71. package/dist/assets/index-bSIORW11.js +30 -0
  72. package/dist/assets/{input-BoBxR50a.js → input-DmHMEZGh.js} +1 -1
  73. package/dist/assets/kiosk-mode-DFS6HopF.js +1 -0
  74. package/dist/assets/{layout-Ck1RoL1B.js → layout-C2XnLAfO.js} +5 -5
  75. package/dist/assets/linear-Bma8J3iM.js +1 -0
  76. package/dist/assets/links-DX2w97N9.js +1 -0
  77. package/dist/assets/{logs-panel-BRytaWaO.js → logs-panel-B3T1GFBk.js} +1 -1
  78. package/dist/assets/{markdown-renderer-DX0Xrrfy.js → markdown-renderer-BhiTvxtL.js} +1 -1
  79. package/dist/assets/{menu-items-BrwnTgyK.js → menu-items-BgUyNUpu.js} +1 -1
  80. package/dist/assets/{mermaid-C4EiVqcd.js → mermaid-BKXlWk4F.js} +2 -2
  81. package/dist/assets/{name-cell-input-DlpTvPLa.js → name-cell-input-CgAObR6N.js} +1 -1
  82. package/dist/assets/numbers-CsZVw3Dc.js +1 -0
  83. package/dist/assets/{objects-snlMn4yk.js → objects-rLPlQ3X_.js} +1 -1
  84. package/dist/assets/{once-Haz_uxEL.js → once-6KNTRW0u.js} +1 -1
  85. package/dist/assets/{outline-panel-B2WIpz-1.js → outline-panel-BhBb7Vqw.js} +1 -1
  86. package/dist/assets/{package-data-dv4FBHxR.js → package-data-CKPmBDtg.js} +1 -1
  87. package/dist/assets/packages-panel-Bt0xNpFl.js +1 -0
  88. package/dist/assets/{panel-accordion-state-BqSH5ttk.js → panel-accordion-state-ZsUdpAYn.js} +1 -1
  89. package/dist/assets/panels-DJghvIKo.js +1 -0
  90. package/dist/assets/precisionRound-BxlUs8G4.js +1 -0
  91. package/dist/assets/process-output-CeOMwE17.js +1 -0
  92. package/dist/assets/{quadrantDiagram-AXDQQJYC-yBhCDI7E.js → quadrantDiagram-AXDQQJYC-D9KH5Zge.js} +1 -1
  93. package/dist/assets/react-vega-BTNeboR2.js +189 -0
  94. package/dist/assets/{readonly-code-display-MnMEoYW5.js → readonly-code-display-TvOC7ESE.js} +1 -1
  95. package/dist/assets/{readonly-python-code-ggs4hAzC.js → readonly-python-code-Cqkfdeyo.js} +1 -1
  96. package/dist/assets/{renderShortcut-C1JwYcqW.js → renderShortcut-rUwGqKgC.js} +1 -1
  97. package/dist/assets/{requests-lt0JK8Jt.js → requests-BIFR-h4M.js} +1 -1
  98. package/dist/assets/requests-DuLJN9Tf.js +1 -0
  99. package/dist/assets/{reveal-component-PiV1eQk9.js → reveal-component-CwE6U9oJ.js} +37 -37
  100. package/dist/assets/run-page-CtonWTtJ.js +1 -0
  101. package/dist/assets/{runs-BLp5jezv.js → runs-C49hleBy.js} +1 -1
  102. package/dist/assets/{runtime-details-state-CoL-p0MC.js → runtime-details-state-CKqJSfSR.js} +1 -1
  103. package/dist/assets/{save-worker-BbUSwZRG.js → save-worker-UwdGcNK5.js} +2 -1
  104. package/dist/assets/scratchpad-panel-CwVBedfZ.js +1 -0
  105. package/dist/assets/{scroll-to-bottom-button-1FyowpWV.js → scroll-to-bottom-button-CIkON2WJ.js} +1 -1
  106. package/dist/assets/{secrets-panel-D7KN4tVs.js → secrets-panel-bcfEKxRx.js} +1 -1
  107. package/dist/assets/{select-DTBn5eTb.js → select-3CVGlYrC.js} +1 -1
  108. package/dist/assets/{session-DqoWmb7X.js → session-CMLIzZKw.js} +1 -1
  109. package/dist/assets/session-panel-CdHdKUCF.js +1 -0
  110. package/dist/assets/{snippets-panel-ClGHtEKQ.js → snippets-panel-DYLWOLYw.js} +1 -1
  111. package/dist/assets/{spec-BfSBcO5B.js → spec-DlH4Mp7d.js} +1 -1
  112. package/dist/assets/{state-uwRvJLb8.js → state-3mcyTS9q.js} +1 -1
  113. package/dist/assets/state-B_MCKzBL.js +1 -0
  114. package/dist/assets/{state-C3oDoyFe.js → state-C5WAeuTu.js} +1 -1
  115. package/dist/assets/{state-DxQnC_1I.js → state-Cv2JW3l9.js} +1 -1
  116. package/dist/assets/{state-DtGB7xeJ.js → state-DZN9vZ6z.js} +1 -1
  117. package/dist/assets/state-DgECPVFs.js +107 -0
  118. package/dist/assets/{strings-B2vv-ENv.js → strings-C25fhMR_.js} +1 -1
  119. package/dist/assets/{swiper-component-a07domrZ.js → swiper-component-CRGRy5_O.js} +1 -1
  120. package/dist/assets/{switch-CTaiAjrz.js → switch-DYjBfpNJ.js} +1 -1
  121. package/dist/assets/{tabs-BuQlZFbt.js → tabs-CY8E4r9U.js} +1 -1
  122. package/dist/assets/{terminal-wnSHYT8N.js → terminal-Ca-kubKb.js} +1 -1
  123. package/dist/assets/{time-MgToa8VM.js → time-DswSXBDk.js} +1 -1
  124. package/dist/assets/{toast-BGzLGnvw.js → toast-Gzxi-le_.js} +1 -1
  125. package/dist/assets/tooltip-Brya4Ghn.js +61 -0
  126. package/dist/assets/{tooltip-C9TuY18o.js → tooltip-CkGm8X7m.js} +1 -1
  127. package/dist/assets/tracing-B0J2ctTm.js +1 -0
  128. package/dist/assets/tracing-panel-C1OCpoeE.js +2 -0
  129. package/dist/assets/{tree-actions-DnUokmva.js → tree-actions-sjBxIglc.js} +1 -1
  130. package/dist/assets/{use-restore-focus-BxEGwIbk.js → use-restore-focus-DdS7Tl0F.js} +1 -1
  131. package/dist/assets/{useAddCell-IN24thff.js → useAddCell-CaXnFGki.js} +1 -1
  132. package/dist/assets/useAsyncData-qvoPYHtx.js +1 -0
  133. package/dist/assets/useBoolean-Dd2nWXFJ.js +1 -0
  134. package/dist/assets/useCellActionButton-CJ90CMEj.js +1 -0
  135. package/dist/assets/useDebounce-DwTQ_1Pu.js +1 -0
  136. package/dist/assets/{useDeepCompareMemoize-DFIVN9dn.js → useDeepCompareMemoize-B2DVK2De.js} +1 -1
  137. package/dist/assets/useDelayElapsed-BlsDT4TV.js +1 -0
  138. package/dist/assets/{useDeleteCell-fQlM46Y2.js → useDeleteCell-D9N85822.js} +1 -1
  139. package/dist/assets/{useDependencyPanelTab-ImXYINm_.js → useDependencyPanelTab-CzAE0cm-.js} +1 -1
  140. package/dist/assets/{useEvent-Dfcbgjhg.js → useEvent-BDjgaBtz.js} +1 -1
  141. package/dist/assets/{useEventListener-D9cftcHj.js → useEventListener-CjDeLqFC.js} +1 -1
  142. package/dist/assets/{useIframeCapabilities-CwTkczVN.js → useIframeCapabilities-Czr9e4uG.js} +1 -1
  143. package/dist/assets/{useInstallPackage-BW06eter.js → useInstallPackage-wcDq9hYT.js} +1 -1
  144. package/dist/assets/{useInterval--x3s1VpI.js → useInterval-DJdQmXnq.js} +1 -1
  145. package/dist/assets/useNotebookActions-CAMEQ38y.js +1 -0
  146. package/dist/assets/{useRunCells-DSJPXE-j.js → useRunCells-DGakx8hj.js} +1 -1
  147. package/dist/assets/{useSplitCell-DQyMF5gd.js → useSplitCell-AK5BKPGM.js} +1 -1
  148. package/dist/assets/useStateForKey-CGMJQT8x.js +1 -0
  149. package/dist/assets/{useTheme-n8Dj1zH7.js → useTheme-BAA27lh7.js} +1 -1
  150. package/dist/assets/{utils-CaQYvazl.js → utils-DfElfBpz.js} +1 -1
  151. package/dist/assets/vega-component-BeyxAJad.js +1 -0
  152. package/dist/assets/{vega-embed-container-DJPNkHPb.js → vega-embed-container-DtArSJz1.js} +1 -1
  153. package/dist/assets/vega-loader.browser-Bu25TKax.js +6 -0
  154. package/dist/assets/worker-jm2VC7pS.js +159 -0
  155. package/dist/assets/{write-secret-modal-DzKAInL2.js → write-secret-modal-BEx-EUlh.js} +1 -1
  156. package/dist/assets/{xychartDiagram-S5SC5T6Z-KbGzG6-u.js → xychartDiagram-S5SC5T6Z-CeRnBS5e.js} +1 -1
  157. package/dist/index.html +81 -79
  158. package/package.json +12 -12
  159. package/src/__tests__/host-imports.test.ts +1 -0
  160. package/src/__tests__/mount.test.ts +0 -20
  161. package/src/components/app-config/ai-config.tsx +7 -2
  162. package/src/components/chat/__tests__/message-queue.test.tsx +17 -0
  163. package/src/components/chat/acp/__tests__/state.test.ts +2 -2
  164. package/src/components/chat/acp/blocks.tsx +2 -2
  165. package/src/components/chat/chat-components.tsx +2 -0
  166. package/src/components/chat/chat-panel.tsx +9 -8
  167. package/src/components/chat/chat-utils.ts +4 -8
  168. package/src/components/data-table/__tests__/chart-spec-model.test.ts +195 -195
  169. package/src/components/data-table/__tests__/column-explorer.test.tsx +27 -1
  170. package/src/components/data-table/__tests__/columns.test.tsx +105 -0
  171. package/src/components/data-table/__tests__/context-menu-interaction.test.tsx +130 -0
  172. package/src/components/data-table/__tests__/date-popover.test.tsx +72 -0
  173. package/src/components/data-table/__tests__/export-actions.test.tsx +105 -0
  174. package/src/components/data-table/__tests__/search-highlight.test.tsx +109 -0
  175. package/src/components/data-table/__tests__/url-detector.test.tsx +74 -0
  176. package/src/components/data-table/cell-selection/feature.ts +2 -2
  177. package/src/components/data-table/cell-selection/types.ts +2 -2
  178. package/src/components/data-table/charts/__tests__/chart-panel.test.tsx +74 -1
  179. package/src/components/data-table/charts/__tests__/spec-snapshot.test.ts +20 -20
  180. package/src/components/data-table/charts/__tests__/spec.test.ts +78 -52
  181. package/src/components/data-table/charts/__tests__/storage.test.ts +4 -1
  182. package/src/components/data-table/charts/chart-spec/spec.ts +68 -43
  183. package/src/components/data-table/charts/charts.tsx +40 -30
  184. package/src/components/data-table/charts/storage.ts +16 -5
  185. package/src/components/data-table/column-explorer-panel/column-explorer.tsx +1 -1
  186. package/src/components/data-table/column-summary/chart-spec-model.tsx +23 -16
  187. package/src/components/data-table/column-summary/column-summary.tsx +2 -4
  188. package/src/components/data-table/column-visibility-dropdown.tsx +8 -13
  189. package/src/components/data-table/columns.tsx +45 -46
  190. package/src/components/data-table/context-menu.tsx +36 -20
  191. package/src/components/data-table/data-table.tsx +7 -1
  192. package/src/components/data-table/date-popover.tsx +6 -4
  193. package/src/components/data-table/export-actions.tsx +76 -48
  194. package/src/components/data-table/row-viewer-panel/row-viewer.tsx +2 -2
  195. package/src/components/data-table/search-highlight.tsx +79 -0
  196. package/src/components/data-table/types.ts +1 -0
  197. package/src/components/data-table/url-detector.tsx +49 -9
  198. package/src/components/datasources/__tests__/column-actions.test.tsx +97 -0
  199. package/src/components/datasources/__tests__/column-preview.test.tsx +63 -2
  200. package/src/components/datasources/__tests__/table-list.test.tsx +118 -0
  201. package/src/components/datasources/column-preview.tsx +8 -2
  202. package/src/components/datasources/datasources.tsx +47 -35
  203. package/src/components/debugger/debugger-code.tsx +5 -0
  204. package/src/components/dependency-graph/dependency-graph-tree.tsx +8 -8
  205. package/src/components/dependency-graph/elements.ts +24 -21
  206. package/src/components/dependency-graph/panels.tsx +2 -1
  207. package/src/components/dependency-graph/utils/__tests__/layout.test.ts +18 -11
  208. package/src/components/editor/SortableCell.tsx +1 -3
  209. package/src/components/editor/__tests__/dynamic-favicon.test.tsx +111 -18
  210. package/src/components/editor/actions/__tests__/pair-with-agent-modal.test.tsx +24 -0
  211. package/src/components/editor/actions/pair-with-agent-modal.tsx +18 -15
  212. package/src/components/editor/ai/add-cell-with-ai.tsx +3 -3
  213. package/src/components/editor/ai/ai-completion-editor.tsx +1 -0
  214. package/src/components/editor/alerts/startup-logs-alert.tsx +1 -0
  215. package/src/components/editor/cell/CreateCellButton.tsx +8 -10
  216. package/src/components/editor/cell/DeleteButton.tsx +1 -0
  217. package/src/components/editor/cell/__tests__/useShouldShowInterrupt.test.ts +39 -0
  218. package/src/components/editor/cell/code/__tests__/language-toggle.test.tsx +54 -0
  219. package/src/components/editor/cell/code/cell-editor.tsx +1 -1
  220. package/src/components/editor/cell/code/language-toggle.tsx +8 -7
  221. package/src/components/editor/cell/useShouldShowInterrupt.ts +2 -12
  222. package/src/components/editor/chrome/panels/__tests__/packages-panel.test.tsx +30 -1
  223. package/src/components/editor/chrome/panels/cache-panel.tsx +1 -0
  224. package/src/components/editor/chrome/panels/packages-panel.tsx +4 -7
  225. package/src/components/editor/chrome/wrapper/__tests__/attachment-status.test.tsx +12 -18
  226. package/src/components/editor/chrome/wrapper/__tests__/pending-ai-cells.test.tsx +58 -1
  227. package/src/components/editor/chrome/wrapper/footer-items/runtime-settings.tsx +1 -7
  228. package/src/components/editor/chrome/wrapper/pending-ai-cells.tsx +12 -2
  229. package/src/components/editor/chrome/wrapper/storage.ts +1 -1
  230. package/src/components/editor/connections/components.tsx +1 -1
  231. package/src/components/editor/controls/__tests__/command-palette.test.tsx +53 -0
  232. package/src/components/editor/controls/command-palette.tsx +22 -10
  233. package/src/components/editor/dynamic-favicon.tsx +21 -40
  234. package/src/components/editor/errors/__tests__/send-error-report-button.test.tsx +12 -23
  235. package/src/components/editor/file-tree/__tests__/file-explorer-interactions.test.tsx +6 -0
  236. package/src/components/editor/file-tree/__tests__/use-file-search.test.tsx +91 -0
  237. package/src/components/editor/file-tree/file-explorer.tsx +10 -5
  238. package/src/components/editor/file-tree/file-viewer.tsx +4 -2
  239. package/src/components/editor/file-tree/use-file-search.ts +35 -21
  240. package/src/components/editor/notebook-banner.tsx +1 -0
  241. package/src/components/editor/output/MarimoTracebackOutput.tsx +2 -2
  242. package/src/components/editor/output/ansi-reduce.ts +33 -20
  243. package/src/components/editor/output/console/ConsoleOutput.tsx +19 -25
  244. package/src/components/editor/package-alert.tsx +6 -4
  245. package/src/components/editor/renderers/grid-layout/grid-layout.tsx +12 -6
  246. package/src/components/editor/renderers/vertical-layout/sidebar/toggle.tsx +7 -1
  247. package/src/components/home/components.tsx +17 -31
  248. package/src/components/icons/__tests__/large-spinner.test.tsx +39 -0
  249. package/src/components/icons/large-spinner.tsx +3 -14
  250. package/src/components/icons/spinner.tsx +1 -1
  251. package/src/components/mcp/mcp-status-indicator.tsx +1 -1
  252. package/src/components/pages/__tests__/home-page.test.tsx +116 -0
  253. package/src/components/pages/home-page.tsx +164 -91
  254. package/src/components/scratchpad/scratchpad.tsx +2 -2
  255. package/src/components/slides/reveal-component.tsx +4 -2
  256. package/src/components/slides/slide-cell-view.tsx +1 -1
  257. package/src/components/slides/slide-form.tsx +1 -0
  258. package/src/components/tracing/tracing.tsx +2 -2
  259. package/src/components/ui/alert-dialog.tsx +1 -1
  260. package/src/core/ai/context/providers/datasource.ts +6 -2
  261. package/src/core/ai/tools/base.ts +16 -7
  262. package/src/core/ai/tools/edit-notebook-tool.ts +47 -45
  263. package/src/core/ai/tools/registry.ts +13 -8
  264. package/src/core/ai/tools/sample-tool.ts +6 -7
  265. package/src/core/attachments/state.ts +5 -8
  266. package/src/core/cells/__tests__/__snapshots__/cells.test.ts.snap +4 -0
  267. package/src/core/cells/__tests__/cell.test.ts +39 -0
  268. package/src/core/cells/__tests__/cells.test.ts +3 -1
  269. package/src/core/cells/__tests__/collapseConsoleOutputs.test.ts +54 -0
  270. package/src/core/cells/__tests__/notebook-outline.test.ts +113 -0
  271. package/src/core/cells/__tests__/session.test.ts +117 -36
  272. package/src/core/cells/cell.ts +14 -3
  273. package/src/core/cells/cells.ts +3 -1
  274. package/src/core/cells/pending-delete-service.ts +2 -6
  275. package/src/core/cells/session.ts +1 -1
  276. package/src/core/cells/types.ts +10 -1
  277. package/src/core/codemirror/__tests__/setup.test.ts +29 -29
  278. package/src/core/codemirror/cells/__tests__/extensions.test.ts +15 -0
  279. package/src/core/codemirror/cells/extensions.ts +7 -3
  280. package/src/core/codemirror/keymaps/vim.ts +2 -6
  281. package/src/core/codemirror/language/__tests__/sql.test.ts +22 -20
  282. package/src/core/codemirror/language/extension.ts +8 -8
  283. package/src/core/codemirror/language/languages/markdown.ts +8 -6
  284. package/src/core/codemirror/language/languages/python.ts +16 -10
  285. package/src/core/codemirror/language/languages/sql/sql.ts +9 -7
  286. package/src/core/codemirror/language/panel/panel.tsx +1 -0
  287. package/src/core/codemirror/language/types.ts +7 -7
  288. package/src/core/codemirror/rtc/extension.ts +24 -12
  289. package/src/core/codemirror/rtc/loro/awareness.ts +34 -19
  290. package/src/core/codemirror/rtc/loro/sync.ts +1 -0
  291. package/src/core/codemirror/utils.ts +1 -0
  292. package/src/core/datasets/__tests__/data-source-discovery.test.ts +4 -4
  293. package/src/core/datasets/data-source-discovery.ts +4 -6
  294. package/src/core/document/__tests__/codemirror.test.ts +483 -0
  295. package/src/core/document/__tests__/draft.test.ts +322 -0
  296. package/src/core/document/__tests__/fixtures.ts +92 -0
  297. package/src/core/document/__tests__/hooks.test.tsx +386 -0
  298. package/src/core/document/__tests__/lifecycle-scenarios.test.ts +61 -0
  299. package/src/core/document/__tests__/model.test.ts +158 -0
  300. package/src/core/document/__tests__/protocol-fixtures.ts +38 -0
  301. package/src/core/document/__tests__/recovery-scenarios.test.ts +230 -0
  302. package/src/core/document/__tests__/scenario-fixture.ts +42 -0
  303. package/src/core/document/__tests__/scenarios.test.ts +205 -0
  304. package/src/core/document/__tests__/state.test.ts +438 -0
  305. package/src/core/document/__tests__/submission.test.ts +203 -0
  306. package/src/core/document/__tests__/test-host.test.ts +92 -0
  307. package/src/core/document/__tests__/test-host.ts +247 -0
  308. package/src/core/document/__tests__/test-notebook.ts +139 -0
  309. package/src/core/document/__tests__/user.ts +61 -0
  310. package/src/core/document/codemirror.ts +311 -0
  311. package/src/core/document/draft.ts +472 -0
  312. package/src/core/document/hooks.tsx +118 -0
  313. package/src/core/document/index.ts +22 -0
  314. package/src/core/document/model.ts +52 -0
  315. package/src/core/document/select.ts +41 -0
  316. package/src/core/document/state.ts +374 -0
  317. package/src/core/document/sync.ts +363 -0
  318. package/src/core/host/AGENTS.md +12 -2
  319. package/src/core/host/__tests__/attachments.test.ts +56 -0
  320. package/src/core/host/__tests__/document.test.ts +126 -0
  321. package/src/core/host/__tests__/fixtures.ts +41 -0
  322. package/src/core/host/__tests__/notebook-client.test.ts +511 -132
  323. package/src/core/host/__tests__/static.test.ts +167 -0
  324. package/src/core/host/__tests__/wasm.test.ts +152 -0
  325. package/src/core/host/backend.ts +10 -0
  326. package/src/core/host/connection.ts +1 -40
  327. package/src/core/host/notebook-client.ts +204 -133
  328. package/src/core/host/resources/attachments.ts +22 -0
  329. package/src/core/host/resources/document.ts +101 -0
  330. package/src/core/host/static.ts +70 -0
  331. package/src/core/host/wasm.ts +92 -0
  332. package/src/core/hotkeys/actions.ts +2 -4
  333. package/src/core/islands/__tests__/bootstrap.test.ts +0 -26
  334. package/src/core/islands/bootstrap.ts +0 -1
  335. package/src/core/islands/components/__tests__/IslandControls.test.tsx +7 -5
  336. package/src/core/kernel/__tests__/RuntimeState.test.ts +1 -1
  337. package/src/core/network/connection.ts +4 -2
  338. package/src/core/network/useConnectionNotice.ts +8 -2
  339. package/src/core/runtime/__tests__/createWsUrl.test.ts +77 -7
  340. package/src/core/runtime/__tests__/runtime.test.ts +15 -58
  341. package/src/core/runtime/runtime.ts +25 -42
  342. package/src/core/runtime/types.ts +0 -2
  343. package/src/core/state/__tests__/jotai.test.tsx +108 -0
  344. package/src/core/state/jotai.ts +1 -1
  345. package/src/core/static/__tests__/files.test.ts +38 -10
  346. package/src/core/static/files.ts +2 -0
  347. package/src/core/wasm/bridge.ts +38 -10
  348. package/src/core/wasm/store.ts +3 -3
  349. package/src/core/wasm/worker/bootstrap.ts +2 -1
  350. package/src/core/wasm/worker/getMarimoWheel.ts +1 -1
  351. package/src/core/wasm/worker/types.ts +11 -0
  352. package/src/core/wasm/worker/worker.ts +48 -0
  353. package/src/core/websocket/__tests__/connection-state.test.ts +0 -12
  354. package/src/core/websocket/__tests__/useNotebookClient.hook.test.tsx +153 -70
  355. package/src/core/websocket/__tests__/useNotebookSession.hook.test.tsx +151 -428
  356. package/src/core/websocket/connection-state.ts +0 -10
  357. package/src/core/websocket/state.ts +7 -0
  358. package/src/core/websocket/transports/__tests__/notebook.test.ts +502 -0
  359. package/src/core/websocket/transports/notebook.ts +213 -0
  360. package/src/core/websocket/useNotebookClient.ts +38 -29
  361. package/src/core/websocket/useNotebookSession.tsx +1 -14
  362. package/src/css/globals.css +5 -0
  363. package/src/hooks/__tests__/useAsyncData.test.tsx +148 -0
  364. package/src/hooks/__tests__/useDebounce.test.tsx +51 -0
  365. package/src/hooks/__tests__/useDeepCompareMemoize.test.tsx +39 -0
  366. package/src/hooks/__tests__/useDelayElapsed.test.tsx +28 -0
  367. package/src/hooks/__tests__/useInternalStateWithSync.test.tsx +20 -0
  368. package/src/hooks/__tests__/useScript.test.tsx +77 -0
  369. package/src/hooks/__tests__/useStateForKey.test.tsx +257 -0
  370. package/src/hooks/useAsyncData.ts +3 -3
  371. package/src/hooks/useDataSourceDiscovery.ts +6 -4
  372. package/src/hooks/useDebounce.ts +6 -10
  373. package/src/hooks/useDeepCompareMemoize.ts +1 -1
  374. package/src/hooks/useDelayElapsed.ts +14 -10
  375. package/src/hooks/useElapsedTime.ts +3 -3
  376. package/src/hooks/useEventListener.ts +1 -2
  377. package/src/hooks/useInputHistory.ts +4 -7
  378. package/src/hooks/useInternalStateWithSync.ts +6 -6
  379. package/src/hooks/useResizeObserver.ts +4 -7
  380. package/src/hooks/useScript.ts +67 -70
  381. package/src/hooks/useStateForKey.ts +93 -0
  382. package/src/mount.tsx +0 -4
  383. package/src/plugins/__tests__/plugin-object-schemas.test.ts +104 -0
  384. package/src/plugins/core/registerReactComponent.tsx +1 -1
  385. package/src/plugins/impl/CodeEditorPlugin.tsx +1 -1
  386. package/src/plugins/impl/DataEditorPlugin.tsx +1 -1
  387. package/src/plugins/impl/DataTablePlugin.tsx +29 -33
  388. package/src/plugins/impl/DropdownPlugin.tsx +2 -6
  389. package/src/plugins/impl/FileBrowserPlugin.tsx +4 -16
  390. package/src/plugins/impl/FormPlugin.tsx +1 -1
  391. package/src/plugins/impl/RangeSliderPlugin.tsx +0 -1
  392. package/src/plugins/impl/RefreshPlugin.tsx +1 -0
  393. package/src/plugins/impl/SliderPlugin.tsx +6 -8
  394. package/src/plugins/impl/__tests__/DataTablePlugin.test.tsx +117 -1
  395. package/src/plugins/impl/__tests__/FileBrowserPlugin.test.tsx +45 -0
  396. package/src/plugins/impl/__tests__/SliderPlugin.test.tsx +24 -3
  397. package/src/plugins/impl/anywidget/__tests__/registry.test.ts +2 -0
  398. package/src/plugins/impl/anywidget/__tests__/widget-binding.test.ts +241 -2
  399. package/src/plugins/impl/anywidget/runtime.ts +21 -9
  400. package/src/plugins/impl/anywidget/widget-binding.ts +160 -82
  401. package/src/plugins/impl/chat/__tests__/chat-prompts.test.tsx +93 -0
  402. package/src/plugins/impl/chat/chat-ui.tsx +12 -10
  403. package/src/plugins/impl/code/any-language-editor.tsx +2 -2
  404. package/src/plugins/impl/data-editor/glide-data-editor.tsx +8 -5
  405. package/src/plugins/impl/data-editor/glide-utils.ts +3 -1
  406. package/src/plugins/impl/data-explorer/ConnectedDataExplorerComponent.tsx +1 -1
  407. package/src/plugins/impl/data-explorer/state/reducer.ts +1 -1
  408. package/src/plugins/impl/data-frames/DataFramePlugin.tsx +1 -2
  409. package/src/plugins/impl/mpl-interactive/MplInteractivePlugin.tsx +5 -3
  410. package/src/plugins/impl/panel/PanelPlugin.tsx +16 -17
  411. package/src/plugins/impl/panel/__tests__/utils.test.ts +39 -1
  412. package/src/plugins/impl/panel/utils.ts +17 -0
  413. package/src/plugins/impl/plotly/PlotlyPlugin.tsx +2 -5
  414. package/src/plugins/impl/plotly/selection.ts +25 -19
  415. package/src/plugins/impl/vega/VegaPlugin.tsx +2 -3
  416. package/src/plugins/impl/vega/make-selectable.ts +4 -7
  417. package/src/plugins/layout/RoutesPlugin.tsx +1 -1
  418. package/src/stories/__tests__/editor-story.test.tsx +33 -0
  419. package/src/stories/button.stories.tsx +1 -0
  420. package/src/stories/editor.stories.tsx +24 -17
  421. package/src/stories/form-wrapper.stories.tsx +2 -2
  422. package/src/stories/select.stories.tsx +2 -2
  423. package/src/stories/switchable-multi-select.stories.tsx +1 -1
  424. package/src/utils/__tests__/arrays.test.ts +35 -0
  425. package/src/utils/__tests__/batch-requests.test.ts +3 -3
  426. package/src/utils/__tests__/numbers.test.ts +48 -1
  427. package/src/utils/__tests__/objects.test.ts +21 -0
  428. package/src/utils/arrays.ts +10 -0
  429. package/src/utils/blob.ts +1 -1
  430. package/src/utils/numbers.ts +28 -17
  431. package/src/utils/objects.ts +3 -7
  432. package/src/utils/once.ts +19 -19
  433. package/src/utils/tracer.ts +9 -5
  434. package/src/utils/zod-utils.ts +1 -3
  435. package/dist/assets/CellStatus-DVOHpdeJ.js +0 -1
  436. package/dist/assets/JsonOutput-Cx1iyibB.js +0 -11
  437. package/dist/assets/MarimoErrorOutput-s_5GOX8k.js +0 -10
  438. package/dist/assets/RunButton-BKoh0zYG.js +0 -1
  439. package/dist/assets/__vite-browser-external-CYO_P3S8.js +0 -1
  440. package/dist/assets/__vite-browser-external-FeDVGZU8.js +0 -1
  441. package/dist/assets/ai-model-dropdown-i1vfGeVi.js +0 -13
  442. package/dist/assets/any-language-editor-BdTWdMCI.js +0 -1
  443. package/dist/assets/arrays-BqUx5USx.js +0 -1
  444. package/dist/assets/cell-editor-BKJ06H5F.js +0 -21
  445. package/dist/assets/chat-panel-Cau71Ygr.js +0 -4
  446. package/dist/assets/chat-ui-C5ql1Up-.js +0 -4
  447. package/dist/assets/circle-play-CYIb0qT6.js +0 -1
  448. package/dist/assets/column-preview-BZ_iNhtJ.js +0 -1
  449. package/dist/assets/command-palette-DDC3kBet.js +0 -1
  450. package/dist/assets/components-YBmtV0p6.js +0 -1
  451. package/dist/assets/config-Dy28fDwn.js +0 -1
  452. package/dist/assets/edit-page-D_Rg0gQO.js +0 -9
  453. package/dist/assets/feedback-button-Kla7i5RT.js +0 -1
  454. package/dist/assets/file-explorer-panel-Uk4_QIJQ.js +0 -1
  455. package/dist/assets/home-page-hmvKlc1w.js +0 -4
  456. package/dist/assets/index-6b4mf8Ai.css +0 -2
  457. package/dist/assets/index-ptK1gxmo.js +0 -30
  458. package/dist/assets/kiosk-mode-BZECfg9k.js +0 -1
  459. package/dist/assets/linear-0eij_aAG.js +0 -1
  460. package/dist/assets/link-NuFVR7G9.js +0 -1
  461. package/dist/assets/links-DkkL9DVa.js +0 -1
  462. package/dist/assets/numbers-Mk3-CcoU.js +0 -1
  463. package/dist/assets/packages-panel-CI5ff9b-.js +0 -1
  464. package/dist/assets/panels-BCcZ_yLK.js +0 -107
  465. package/dist/assets/precisionRound-Bq_nmf5u.js +0 -1
  466. package/dist/assets/process-output-f3C3PD0Z.js +0 -1
  467. package/dist/assets/react-vega-C3rYGtP6.js +0 -189
  468. package/dist/assets/requests-CgSY1X4a.js +0 -1
  469. package/dist/assets/run-page-AfZhtEh1.js +0 -1
  470. package/dist/assets/scratchpad-panel-D2rWg4k8.js +0 -1
  471. package/dist/assets/session-panel-CnANhcTo.js +0 -1
  472. package/dist/assets/state-BAJYRhmO.js +0 -1
  473. package/dist/assets/state-CbjBtkdd.js +0 -3
  474. package/dist/assets/tooltip-mT3CGest.js +0 -61
  475. package/dist/assets/tracing-Dz2rYOFL.js +0 -1
  476. package/dist/assets/tracing-panel-DqQY9V91.js +0 -2
  477. package/dist/assets/useAsyncData-C7aJJz0Y.js +0 -1
  478. package/dist/assets/useBoolean-d0Tty94N.js +0 -1
  479. package/dist/assets/useCellActionButton-DmaFZ4oF.js +0 -1
  480. package/dist/assets/useDebounce-B_ccBZTp.js +0 -1
  481. package/dist/assets/useNotebookActions-DHt3s-ia.js +0 -1
  482. package/dist/assets/vega-component-IouMe13t.js +0 -1
  483. package/dist/assets/vega-loader.browser-CLRkNgm7.js +0 -6
  484. package/dist/assets/worker-DTQ7oH2A.js +0 -158
  485. package/dist/assets/ws-BXWY541V.js +0 -22
  486. package/src/core/host/__tests__/events.test.ts +0 -46
  487. package/src/core/host/__tests__/protocol.test.ts +0 -214
  488. package/src/core/host/events.ts +0 -60
  489. package/src/core/host/protocol.ts +0 -1943
  490. package/src/core/state/__tests__/jotai.test.ts +0 -25
  491. package/src/core/websocket/__tests__/createConnectionTransport.test.ts +0 -49
  492. package/src/core/websocket/transports/__tests__/basic.test.ts +0 -275
  493. package/src/core/websocket/transports/__tests__/sse.test.ts +0 -335
  494. package/src/core/websocket/transports/__tests__/transport.test.ts +0 -308
  495. package/src/core/websocket/transports/__tests__/ws.test.ts +0 -125
  496. package/src/core/websocket/transports/basic.ts +0 -102
  497. package/src/core/websocket/transports/create.ts +0 -31
  498. package/src/core/websocket/transports/sse.ts +0 -308
  499. package/src/core/websocket/transports/transport.ts +0 -50
  500. package/src/core/websocket/transports/ws.ts +0 -98
@@ -1,4 +1,4 @@
1
- import{a as e,t}from"./rolldown-runtime-B0Z9INg1.js";import{a as n,c as r,d as i,f as a,l as o,r as s,t as c}from"./useEvent-Dfcbgjhg.js";import{t as l}from"./react-DVplv7_D.js";import{Bt as u,D as d,Fa as f,Fi as p,In as m,Pi as h,Qr as g,Ti as _,Va as v,Z as y,Zn as b,_a as x,b as S,bo as C,da as ee,f as te,ft as ne,ir as w,ja as T,ji as E,qa as re,ti as ie,yo as ae}from"./cells-C6YGYGdi.js";import{B as oe,C as se,D as ce,F as le,H as ue,I as D,M as de,N as O,O as fe,R as pe,S as me,T as he,b as ge,j as _e,k as ve,q as ye,v as be,w as xe,y as Se,z as Ce}from"./schemas-ChRqMOTL.js";import{t as we}from"./compiler-runtime-BrajqUja.js";import{t as Te}from"./config-CA1V-wjh.js";import{f as Ee,g as k}from"./useEventListener-D9cftcHj.js";import{o as De}from"./session-DqoWmb7X.js";import{j as Oe,k as ke,o as Ae}from"./config-Dy28fDwn.js";import{t as je}from"./cn-ldLVeaqm.js";import{t as Me}from"./jsx-runtime-B74pBk57.js";import{a as Ne,c as Pe,p as Fe,r as Ie,t as Le}from"./dropdown-menu-C1rnl-0o.js";import{t as Re}from"./tooltip-C9TuY18o.js";import{t as ze}from"./button-COI-NGrx.js";import{t as Be}from"./createLucideIcon-DfJ2oMlA.js";import{i as Ve,r as He}from"./paths-bkIFVj8h.js";import{r as Ue,t as We}from"./fileToBase64-BgBraYAr.js";import{M as Ge,m as Ke,t as qe}from"./ai-model-dropdown-i1vfGeVi.js";import{r as Je}from"./useNumberFormatter-D7O_26UI.js";import{f as Ye,n as Xe}from"./markdown-renderer-DX0Xrrfy.js";import{t as Ze}from"./file-BPBVl9pl.js";import{t as Qe}from"./image-wZvTj8WY.js";import{t as $e}from"./spinner-DyNE-o8o.js";import{i as et,t as tt}from"./useDeleteCell-fQlM46Y2.js";import{r as nt}from"./input-BoBxR50a.js";import{a as rt,c as it,i as at,n as ot,o as st,s as ct,t as lt}from"./datasource-DfbNb83e.js";import{t as ut}from"./use-toast-Wu434mLr.js";import{$t as dt,Et as ft,Gt as pt,Jt as mt,Kt as ht,Qt as gt,Tt as _t,at as vt,dt as yt,st as bt,tn as xt,ut as St}from"./dist-Cny7_yZb.js";import{t as Ct}from"./createReducer-DgRODTW6.js";import{h as wt,n as Tt,o as Et,r as Dt}from"./dist-qhAY4L2r.js";import{t as Ot}from"./requests-lt0JK8Jt.js";import{a as kt}from"./dist-LSsCJjA3.js";import{t as At}from"./uuid-k9DpjH68.js";import{r as jt}from"./useTheme-n8Dj1zH7.js";import{n as Mt}from"./useRunCells-DSJPXE-j.js";import{n as Nt}from"./blob-BG8yoQmx.js";import{a as Pt}from"./errors-CNsgAw6m.js";import{i as Ft,r as It,t as Lt}from"./error-entries-CLnPDv7b.js";import{i as Rt}from"./cell-link-8Auigi8P.js";import{t as zt}from"./html-to-image-DK9Zl1lU.js";import{n as Bt}from"./renderShortcut-C1JwYcqW.js";import{n as Vt}from"./icons-CiZ_8zS-.js";import{r as Ht,t as Ut}from"./esm-CI_o7NhW.js";import{t as Wt}from"./process-output-f3C3PD0Z.js";var Gt=Be(`circle-stop`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`rect`,{x:`9`,y:`9`,width:`6`,height:`6`,rx:`1`,key:`1ssd4o`}]]),Kt=Be(`paperclip`,[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]),qt=Be(`send-horizontal`,[[`path`,{d:`M3.714 3.048a.498.498 0 0 0-.683.627l2.843 7.627a2 2 0 0 1 0 1.396l-2.842 7.627a.498.498 0 0 0 .682.627l18-8.5a.5.5 0 0 0 0-.904z`,key:`117uat`}],[`path`,{d:`M6 12h16`,key:`s4cdu5`}]]),A=we(),Jt=`vercel.ai.error`,Yt=Symbol.for(Jt),Xt,Zt,j=class e extends (Zt=Error,Xt=Yt,Zt){constructor({name:e,message:t,cause:n}){super(t),this[Xt]=!0,this.name=e,this.cause=n}static isInstance(t){return e.hasMarker(t,Jt)}static hasMarker(e,t){let n=Symbol.for(t);return typeof e==`object`&&!!e&&n in e&&typeof e[n]==`boolean`&&e[n]===!0}},Qt=`AI_APICallError`,$t=`vercel.ai.error.${Qt}`,en=Symbol.for($t),tn,nn,rn=class extends (nn=j,tn=en,nn){constructor({message:e,url:t,requestBodyValues:n,statusCode:r,responseHeaders:i,responseBody:a,cause:o,isRetryable:s=r!=null&&(r===408||r===409||r===429||r>=500),data:c}){super({name:Qt,message:e,cause:o}),this[tn]=!0,this.url=t,this.requestBodyValues=n,this.statusCode=r,this.responseHeaders=i,this.responseBody=a,this.isRetryable=s,this.data=c}static isInstance(e){return j.hasMarker(e,$t)}},an=`AI_EmptyResponseBodyError`,on=`vercel.ai.error.${an}`,sn=Symbol.for(on),cn,ln,un=class extends (ln=j,cn=sn,ln){constructor({message:e=`Empty response body`}={}){super({name:an,message:e}),this[cn]=!0}static isInstance(e){return j.hasMarker(e,on)}};function dn(e){return e==null?`unknown error`:typeof e==`string`?e:e instanceof Error?e.toString():JSON.stringify(e)}var fn=`AI_InvalidArgumentError`,pn=`vercel.ai.error.${fn}`,mn=Symbol.for(pn),hn,gn,_n=class extends (gn=j,hn=mn,gn){constructor({message:e,cause:t,argument:n}){super({name:fn,message:e,cause:t}),this[hn]=!0,this.argument=n}static isInstance(e){return j.hasMarker(e,pn)}},vn=`AI_JSONParseError`,yn=`vercel.ai.error.${vn}`,bn=Symbol.for(yn),xn,Sn,Cn=class extends (Sn=j,xn=bn,Sn){constructor({text:e,cause:t}){super({name:vn,message:`JSON parsing failed: Text: ${e}.
1
+ import{a as e,t}from"./rolldown-runtime-B0Z9INg1.js";import{a as n,c as r,d as i,f as a,l as o,r as s,t as c}from"./useEvent-BDjgaBtz.js";import{t as l}from"./react-DVplv7_D.js";import{Bt as u,D as d,Fa as f,Fi as p,In as m,Pi as h,Qr as g,Ti as _,Va as v,Z as y,Zn as b,_a as x,b as S,bo as C,da as ee,f as te,ft as ne,ir as w,ja as T,ji as E,qa as re,ti as ie,yo as ae}from"./cells-2HETnlvE.js";import{B as oe,C as se,D as ce,F as le,H as ue,I as D,M as de,N as O,O as fe,R as pe,S as me,T as he,b as ge,j as _e,k as ve,q as ye,v as be,w as xe,y as Se,z as Ce}from"./schemas-ChRqMOTL.js";import{t as we}from"./compiler-runtime-BrajqUja.js";import{t as Te}from"./config-DpY86_Yq.js";import{f as Ee,g as k}from"./useEventListener-CjDeLqFC.js";import{o as De}from"./session-CMLIzZKw.js";import{A as Oe,O as ke,o as Ae}from"./config-CD1IuZFJ.js";import{t as je}from"./cn-ldLVeaqm.js";import{t as Me}from"./jsx-runtime-B74pBk57.js";import{a as Ne,c as Pe,p as Fe,r as Ie,t as Le}from"./dropdown-menu-DS6umAnH.js";import{t as Re}from"./tooltip-CkGm8X7m.js";import{t as ze}from"./button-D8gVKwe-.js";import{t as Be}from"./createLucideIcon-DfJ2oMlA.js";import{i as Ve,r as He}from"./paths-bkIFVj8h.js";import{r as Ue,t as We}from"./fileToBase64-BgBraYAr.js";import{M as Ge,m as Ke,t as qe}from"./ai-model-dropdown-Bfxv_zvu.js";import{r as Je}from"./useNumberFormatter-D7O_26UI.js";import{f as Ye,n as Xe}from"./markdown-renderer-BhiTvxtL.js";import{t as Ze}from"./file-BPBVl9pl.js";import{t as Qe}from"./image-wZvTj8WY.js";import{t as $e}from"./spinner-DyNE-o8o.js";import{i as et,t as tt}from"./useDeleteCell-D9N85822.js";import{r as nt}from"./input-DmHMEZGh.js";import{a as rt,c as it,i as at,n as ot,o as st,s as ct,t as lt}from"./datasource-D9JMcEAP.js";import{t as ut}from"./use-toast-Wu434mLr.js";import{$t as dt,Et as ft,Gt as pt,Jt as mt,Kt as ht,Qt as gt,Tt as _t,at as vt,dt as yt,st as bt,tn as xt,ut as St}from"./dist-Cny7_yZb.js";import{t as Ct}from"./createReducer-CaI_Oa0v.js";import{h as wt,n as Tt,o as Et,r as Dt}from"./dist-qhAY4L2r.js";import{t as Ot}from"./requests-BIFR-h4M.js";import{a as kt}from"./dist-LSsCJjA3.js";import{t as At}from"./uuid-k9DpjH68.js";import{r as jt}from"./useTheme-BAA27lh7.js";import{n as Mt}from"./useRunCells-DGakx8hj.js";import{n as Nt}from"./blob-DTYOX-m5.js";import{a as Pt}from"./errors-CNsgAw6m.js";import{i as Ft,r as It,t as Lt}from"./error-entries-D00nWhWE.js";import{i as Rt}from"./cell-link-D3rkqgbU.js";import{t as zt}from"./html-to-image-D_0rd3_B.js";import{n as Bt}from"./renderShortcut-rUwGqKgC.js";import{n as Vt}from"./icons-CiZ_8zS-.js";import{r as Ht,t as Ut}from"./esm-CI_o7NhW.js";import{t as Wt}from"./process-output-CeOMwE17.js";var Gt=Be(`circle-stop`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`rect`,{x:`9`,y:`9`,width:`6`,height:`6`,rx:`1`,key:`1ssd4o`}]]),Kt=Be(`paperclip`,[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]),qt=Be(`send-horizontal`,[[`path`,{d:`M3.714 3.048a.498.498 0 0 0-.683.627l2.843 7.627a2 2 0 0 1 0 1.396l-2.842 7.627a.498.498 0 0 0 .682.627l18-8.5a.5.5 0 0 0 0-.904z`,key:`117uat`}],[`path`,{d:`M6 12h16`,key:`s4cdu5`}]]),A=we(),Jt=`vercel.ai.error`,Yt=Symbol.for(Jt),Xt,Zt,j=class e extends (Zt=Error,Xt=Yt,Zt){constructor({name:e,message:t,cause:n}){super(t),this[Xt]=!0,this.name=e,this.cause=n}static isInstance(t){return e.hasMarker(t,Jt)}static hasMarker(e,t){let n=Symbol.for(t);return typeof e==`object`&&!!e&&n in e&&typeof e[n]==`boolean`&&e[n]===!0}},Qt=`AI_APICallError`,$t=`vercel.ai.error.${Qt}`,en=Symbol.for($t),tn,nn,rn=class extends (nn=j,tn=en,nn){constructor({message:e,url:t,requestBodyValues:n,statusCode:r,responseHeaders:i,responseBody:a,cause:o,isRetryable:s=r!=null&&(r===408||r===409||r===429||r>=500),data:c}){super({name:Qt,message:e,cause:o}),this[tn]=!0,this.url=t,this.requestBodyValues=n,this.statusCode=r,this.responseHeaders=i,this.responseBody=a,this.isRetryable=s,this.data=c}static isInstance(e){return j.hasMarker(e,$t)}},an=`AI_EmptyResponseBodyError`,on=`vercel.ai.error.${an}`,sn=Symbol.for(on),cn,ln,un=class extends (ln=j,cn=sn,ln){constructor({message:e=`Empty response body`}={}){super({name:an,message:e}),this[cn]=!0}static isInstance(e){return j.hasMarker(e,on)}};function dn(e){return e==null?`unknown error`:typeof e==`string`?e:e instanceof Error?e.toString():JSON.stringify(e)}var fn=`AI_InvalidArgumentError`,pn=`vercel.ai.error.${fn}`,mn=Symbol.for(pn),hn,gn,_n=class extends (gn=j,hn=mn,gn){constructor({message:e,cause:t,argument:n}){super({name:fn,message:e,cause:t}),this[hn]=!0,this.argument=n}static isInstance(e){return j.hasMarker(e,pn)}},vn=`AI_JSONParseError`,yn=`vercel.ai.error.${vn}`,bn=Symbol.for(yn),xn,Sn,Cn=class extends (Sn=j,xn=bn,Sn){constructor({text:e,cause:t}){super({name:vn,message:`JSON parsing failed: Text: ${e}.
2
2
  Error message: ${dn(t)}`,cause:t}),this[xn]=!0,this.text=e}static isInstance(e){return j.hasMarker(e,yn)}},wn=`AI_TypeValidationError`,Tn=`vercel.ai.error.${wn}`,En=Symbol.for(Tn),Dn,On,M=class e extends (On=j,Dn=En,On){constructor({value:e,cause:t,context:n}){let r=`Type validation failed`;if(n?.field&&(r+=` for ${n.field}`),n?.entityName||n?.entityId){r+=` (`;let e=[];n.entityName&&e.push(n.entityName),n.entityId&&e.push(`id: "${n.entityId}"`),r+=e.join(`, `),r+=`)`}super({name:wn,message:`${r}: Value: ${JSON.stringify(e)}.
3
3
  Error message: ${dn(t)}`,cause:t}),this[Dn]=!0,this.value=e,this.context=n}static isInstance(e){return j.hasMarker(e,Tn)}static wrap({value:t,cause:n,context:r}){return e.isInstance(n)&&n.value===t&&n.context?.field===r?.field&&n.context?.entityName===r?.entityName&&n.context?.entityId===r?.entityId?n:new e({value:t,cause:n,context:r})}},kn=`AI_UnsupportedFunctionalityError`,An=`vercel.ai.error.${kn}`,jn=Symbol.for(An),Mn,Nn,Pn=class extends (Nn=j,Mn=jn,Nn){constructor({functionality:e,message:t=`'${e}' functionality not supported.`}){super({name:kn,message:t}),this[Mn]=!0,this.functionality=e}static isInstance(e){return j.hasMarker(e,An)}},Fn=class extends Error{constructor(e,t){super(e),this.name=`ParseError`,this.type=t.type,this.field=t.field,this.value=t.value,this.line=t.line}},In=10,Ln=13,Rn=32;function zn(e){}function Bn(e){if(typeof e==`function`)throw TypeError("`config` must be an object, got a function instead. Did you mean `createParser({onEvent: fn})`?");let{onEvent:t=zn,onError:n=zn,onRetry:r=zn,onComment:i,maxBufferSize:a}=e,o=[],s=0,c=!0,l,u=``,d=0,f,p=!1;function m(e){if(p)throw Error("Cannot feed parser: it was terminated after exceeding the configured max buffer size. Call `reset()` to resume parsing.");if(c&&(c=!1,e.charCodeAt(0)===239&&e.charCodeAt(1)===187&&e.charCodeAt(2)===191&&(e=e.slice(3))),o.length===0){let t=g(e);t!==``&&(o.push(t),s=t.length),h();return}if(e.indexOf(`
4
4
  `)===-1&&e.indexOf(`\r`)===-1){o.push(e),s+=e.length,h();return}o.push(e);let t=o.join(``);o.length=0,s=0;let n=g(t);n!==``&&(o.push(n),s=n.length),h()}function h(){a!==void 0&&(s+u.length<=a||(p=!0,o.length=0,s=0,l=void 0,u=``,d=0,f=void 0,n(new Fn(`Buffered data exceeded max buffer size of ${a} characters`,{type:`max-buffer-size-exceeded`}))))}function g(e){let n=0;if(e.indexOf(`\r`)===-1){let r=e.indexOf(`
@@ -17,7 +17,7 @@ ${t}`,d++;break;case`id`:l=t.includes(`\0`)?void 0:t;break;case`retry`:/^\d+$/.t
17
17
 
18
18
  `)},flush(e){e.enqueue(`data: [DONE]
19
19
 
20
- `)}})}},ga={"content-type":`text/event-stream`,"cache-control":`no-cache`,connection:`keep-alive`,"x-vercel-ai-ui-message-stream":`v1`,"x-accel-buffering":`no`};function _a({status:e,statusText:t,headers:n,stream:r,consumeSseStream:i}){let a=r.pipeThrough(new ha);if(i){let[e,t]=a.tee();a=e,i({stream:t})}return new Response(a.pipeThrough(new TextEncoderStream),{status:e,statusText:t,headers:ma(n,ga)})}var va=B.record(B.string(),Ri.optional()),ya=Qr(()=>si(B.union([B.looseObject({type:B.literal(`text-start`),id:B.string(),providerMetadata:V.optional()}),B.looseObject({type:B.literal(`text-delta`),id:B.string(),delta:B.string(),providerMetadata:V.optional()}),B.looseObject({type:B.literal(`text-end`),id:B.string(),providerMetadata:V.optional()}),B.looseObject({type:B.literal(`error`),errorText:B.string()}),B.looseObject({type:B.literal(`tool-input-start`),toolCallId:B.string(),toolName:B.string(),providerExecuted:B.boolean().optional(),providerMetadata:V.optional(),toolMetadata:va.optional(),dynamic:B.boolean().optional(),title:B.string().optional()}),B.looseObject({type:B.literal(`tool-input-delta`),toolCallId:B.string(),inputTextDelta:B.string()}),B.looseObject({type:B.literal(`tool-input-available`),toolCallId:B.string(),toolName:B.string(),input:B.unknown(),providerExecuted:B.boolean().optional(),providerMetadata:V.optional(),toolMetadata:va.optional(),dynamic:B.boolean().optional(),title:B.string().optional()}),B.looseObject({type:B.literal(`tool-input-error`),toolCallId:B.string(),toolName:B.string(),input:B.unknown(),providerExecuted:B.boolean().optional(),providerMetadata:V.optional(),toolMetadata:va.optional(),dynamic:B.boolean().optional(),errorText:B.string(),title:B.string().optional()}),B.looseObject({type:B.literal(`tool-approval-request`),approvalId:B.string(),toolCallId:B.string(),approvalDescriptor:B.unknown().optional(),reason:B.string().optional(),isAutomatic:B.boolean().optional(),signature:B.string().optional()}),B.looseObject({type:B.literal(`tool-approval-response`),approvalId:B.string(),approved:B.boolean(),reason:B.string().optional(),providerExecuted:B.boolean().optional(),providerMetadata:V.optional()}),B.looseObject({type:B.literal(`tool-output-available`),toolCallId:B.string(),output:B.unknown(),providerExecuted:B.boolean().optional(),providerMetadata:V.optional(),toolMetadata:va.optional(),dynamic:B.boolean().optional(),preliminary:B.boolean().optional()}),B.looseObject({type:B.literal(`tool-output-error`),toolCallId:B.string(),errorText:B.string(),providerExecuted:B.boolean().optional(),providerMetadata:V.optional(),toolMetadata:va.optional(),dynamic:B.boolean().optional()}),B.looseObject({type:B.literal(`tool-output-denied`),toolCallId:B.string()}),B.looseObject({type:B.literal(`reasoning-start`),id:B.string(),providerMetadata:V.optional()}),B.looseObject({type:B.literal(`reasoning-delta`),id:B.string(),delta:B.string(),providerMetadata:V.optional()}),B.looseObject({type:B.literal(`reasoning-end`),id:B.string(),providerMetadata:V.optional()}),B.looseObject({type:B.literal(`custom`),kind:B.string().transform(e=>e),providerMetadata:V.optional()}),B.looseObject({type:B.literal(`source-url`),sourceId:B.string(),url:B.string(),title:B.string().optional(),providerMetadata:V.optional()}),B.looseObject({type:B.literal(`source-document`),sourceId:B.string(),mediaType:B.string(),title:B.string(),filename:B.string().optional(),providerMetadata:V.optional()}),B.looseObject({type:B.literal(`file`),url:B.string(),mediaType:B.string(),providerMetadata:V.optional()}),B.looseObject({type:B.literal(`reasoning-file`),url:B.string(),mediaType:B.string(),providerMetadata:V.optional()}),B.looseObject({type:B.custom(e=>typeof e==`string`&&e.startsWith(`data-`),{message:`Type must start with "data-"`}),id:B.string().optional(),data:B.unknown(),transient:B.boolean().optional()}),B.looseObject({type:B.literal(`start-step`)}),B.looseObject({type:B.literal(`finish-step`)}),B.looseObject({type:B.literal(`reset-step`)}),B.looseObject({type:B.literal(`start`),messageId:B.string().optional(),messageMetadata:B.unknown().optional()}),B.looseObject({type:B.literal(`finish`),finishReason:B.enum([`stop`,`length`,`content-filter`,`tool-calls`,`error`,`other`]).optional(),messageMetadata:B.unknown().optional()}),B.looseObject({type:B.literal(`abort`),reason:B.string().optional()}),B.looseObject({type:B.literal(`message-metadata`),messageMetadata:B.unknown()})])));function ba(e){return e.type.startsWith(`data-`)}function xa(){return Object.create(null)}function Sa(e){return e.type.startsWith(`tool-`)}function Ca(e){return e.type===`dynamic-tool`}function H(e){return Sa(e)||Ca(e)}function wa(e){return e.type.split(`-`).slice(1).join(`-`)}var Ta={type:`deprecated`,setting:`rawInput in output-error UI message parts`,message:`Use the "input" field instead. The "rawInput" field will be removed in the next major version.`};function Ea(e){e.some(e=>e.parts.some(e=>typeof e==`object`&&!!e&&`type`in e&&typeof e.type==`string`&&(e.type===`dynamic-tool`||e.type.startsWith(`tool-`))&&`state`in e&&e.state===`output-error`&&Object.prototype.hasOwnProperty.call(e,`rawInput`)&&`rawInput`in e&&e.rawInput!==void 0))&&Ii({warnings:[Ta]})}function Da({lastMessage:e,messageId:t}){return{message:e?.role===`assistant`?e:{id:t,metadata:void 0,role:`assistant`,parts:[]},activeTextParts:xa(),activeReasoningParts:xa(),partialToolCalls:xa()}}function Oa({stream:e,messageMetadataSchema:t,dataPartSchemas:n,runUpdateMessageJob:r,onError:i,onToolCall:a,onData:o}){return e.pipeThrough(new TransformStream({async transform(e,s){await r(async({state:r,write:c})=>{function l(){let e=r.message.parts,t=e.length-1;for(;t>=0&&e[t].type!==`step-start`;)t--;return e.slice(t+1)}function u(){return l().filter(H)}function d(e){let t=u().find(t=>t.toolCallId===e);if(t==null){let n=r.message.parts;for(let r=n.length-1;r>=0;r--){let i=n[r];if(H(i)&&i.toolCallId===e){t=i;break}}}if(t==null)throw new ji({chunkType:`tool-invocation`,chunkId:e,message:`No tool invocation found for tool call ID "${e}".`});return t}function f(e){let t=r.message.parts.filter(H).find(t=>t.approval?.id===e);if(t==null)throw new ji({chunkType:`tool-approval-response`,chunkId:e,message:`No tool invocation found for approval ID "${e}".`});return t}function p(e,t){let n=t??l().find(t=>Sa(t)&&t.toolCallId===e.toolCallId),i=e,a=n;if(n!=null){n.state=e.state,a.input=i.input,a.output=i.output,a.errorText=i.errorText,a.rawInput=i.rawInput,a.preliminary=i.preliminary,e.title!==void 0&&(a.title=e.title),e.toolMetadata!==void 0&&(a.toolMetadata=e.toolMetadata),a.providerExecuted=i.providerExecuted??n.providerExecuted;let t=i.providerMetadata;if(t!=null){if(e.state===`output-available`||e.state===`output-error`){let e=n;e.resultProviderMetadata=t}else n.callProviderMetadata=t}}else r.message.parts.push({type:`tool-${e.toolName}`,toolCallId:e.toolCallId,state:e.state,title:e.title,...e.toolMetadata===void 0?{}:{toolMetadata:e.toolMetadata},input:i.input,output:i.output,rawInput:i.rawInput,errorText:i.errorText,providerExecuted:i.providerExecuted,preliminary:i.preliminary,...i.providerMetadata!=null&&(e.state===`output-available`||e.state===`output-error`)?{resultProviderMetadata:i.providerMetadata}:{},...i.providerMetadata!=null&&e.state!==`output-available`&&e.state!==`output-error`?{callProviderMetadata:i.providerMetadata}:{}})}function m(e,t){let n=t??l().find(t=>t.type===`dynamic-tool`&&t.toolCallId===e.toolCallId),i=e,a=n;if(n!=null){n.state=e.state,a.toolName=e.toolName,a.input=i.input,a.output=i.output,a.errorText=i.errorText,a.rawInput=i.rawInput??a.rawInput,a.preliminary=i.preliminary,e.title!==void 0&&(a.title=e.title),e.toolMetadata!==void 0&&(a.toolMetadata=e.toolMetadata),a.providerExecuted=i.providerExecuted??n.providerExecuted;let t=i.providerMetadata;if(t!=null){if(e.state===`output-available`||e.state===`output-error`){let e=n;e.resultProviderMetadata=t}else n.callProviderMetadata=t}}else r.message.parts.push({type:`dynamic-tool`,toolName:e.toolName,toolCallId:e.toolCallId,state:e.state,input:i.input,output:i.output,errorText:i.errorText,preliminary:i.preliminary,providerExecuted:i.providerExecuted,title:e.title,...e.toolMetadata===void 0?{}:{toolMetadata:e.toolMetadata},...i.providerMetadata!=null&&(e.state===`output-available`||e.state===`output-error`)?{resultProviderMetadata:i.providerMetadata}:{},...i.providerMetadata!=null&&e.state!==`output-available`&&e.state!==`output-error`?{callProviderMetadata:i.providerMetadata}:{}})}async function h(e){if(e!=null){let n=r.message.metadata==null?e:Li(r.message.metadata,e);t!=null&&await ci({value:n,schema:t,context:{field:`message.metadata`,entityId:r.message.id}}),r.message.metadata=n}}switch(e.type){case`text-start`:{let t={type:`text`,text:``,providerMetadata:e.providerMetadata,state:`streaming`};r.activeTextParts[e.id]=t,r.message.parts.push(t),c();break}case`text-delta`:{let t=r.activeTextParts[e.id];if(t==null)throw new ji({chunkType:`text-delta`,chunkId:e.id,message:`Received text-delta for missing text part with ID "${e.id}". Ensure a "text-start" chunk is sent before any "text-delta" chunks.`});t.text+=e.delta,t.providerMetadata=e.providerMetadata??t.providerMetadata,c();break}case`text-end`:{let t=r.activeTextParts[e.id];if(t==null)throw new ji({chunkType:`text-end`,chunkId:e.id,message:`Received text-end for missing text part with ID "${e.id}". Ensure a "text-start" chunk is sent before any "text-end" chunks.`});t.state=`done`,t.providerMetadata=e.providerMetadata??t.providerMetadata,delete r.activeTextParts[e.id],c();break}case`custom`:{let t={type:`custom`,kind:e.kind,providerMetadata:e.providerMetadata};r.message.parts.push(t),c();break}case`reasoning-start`:{let t={type:`reasoning`,id:e.id,text:``,providerMetadata:e.providerMetadata,state:`streaming`};r.activeReasoningParts[e.id]=t,r.message.parts.push(t),c();break}case`reasoning-delta`:{let t=r.activeReasoningParts[e.id];if(t==null)throw new ji({chunkType:`reasoning-delta`,chunkId:e.id,message:`Received reasoning-delta for missing reasoning part with ID "${e.id}". Ensure a "reasoning-start" chunk is sent before any "reasoning-delta" chunks.`});t.text+=e.delta,t.providerMetadata=e.providerMetadata??t.providerMetadata,c();break}case`reasoning-end`:{let t=r.activeReasoningParts[e.id];if(t==null)throw new ji({chunkType:`reasoning-end`,chunkId:e.id,message:`Received reasoning-end for missing reasoning part with ID "${e.id}". Ensure a "reasoning-start" chunk is sent before any "reasoning-end" chunks.`});t.providerMetadata=e.providerMetadata??t.providerMetadata,t.state=`done`,delete r.activeReasoningParts[e.id],c();break}case`file`:case`reasoning-file`:r.message.parts.push({type:e.type,mediaType:e.mediaType,url:e.url,...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata}}),c();break;case`source-url`:r.message.parts.push({type:`source-url`,sourceId:e.sourceId,url:e.url,title:e.title,providerMetadata:e.providerMetadata}),c();break;case`source-document`:r.message.parts.push({type:`source-document`,sourceId:e.sourceId,mediaType:e.mediaType,title:e.title,filename:e.filename,providerMetadata:e.providerMetadata}),c();break;case`tool-input-start`:{let t=l().filter(Sa);r.partialToolCalls[e.toolCallId]={text:``,toolName:e.toolName,index:t.length,dynamic:e.dynamic,title:e.title,toolMetadata:e.toolMetadata},e.dynamic?m({toolCallId:e.toolCallId,toolName:e.toolName,state:`input-streaming`,input:void 0,providerExecuted:e.providerExecuted,title:e.title,toolMetadata:e.toolMetadata,providerMetadata:e.providerMetadata}):p({toolCallId:e.toolCallId,toolName:e.toolName,state:`input-streaming`,input:void 0,providerExecuted:e.providerExecuted,title:e.title,toolMetadata:e.toolMetadata,providerMetadata:e.providerMetadata}),c();break}case`tool-input-delta`:{let t=r.partialToolCalls[e.toolCallId];if(t==null)throw new ji({chunkType:`tool-input-delta`,chunkId:e.toolCallId,message:`Received tool-input-delta for missing tool call with ID "${e.toolCallId}". Ensure a "tool-input-start" chunk is sent before any "tool-input-delta" chunks.`});t.text+=e.inputTextDelta;let{value:n}=await oa(t.text);t.dynamic?m({toolCallId:e.toolCallId,toolName:t.toolName,state:`input-streaming`,input:n,title:t.title,toolMetadata:t.toolMetadata}):p({toolCallId:e.toolCallId,toolName:t.toolName,state:`input-streaming`,input:n,title:t.title,toolMetadata:t.toolMetadata}),c();break}case`tool-input-available`:e.dynamic?m({toolCallId:e.toolCallId,toolName:e.toolName,state:`input-available`,input:e.input,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,title:e.title,toolMetadata:e.toolMetadata}):p({toolCallId:e.toolCallId,toolName:e.toolName,state:`input-available`,input:e.input,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,title:e.title,toolMetadata:e.toolMetadata}),c(),a&&!e.providerExecuted&&await a({toolCall:e});break;case`tool-input-error`:{let t=l().filter(H).find(t=>t.toolCallId===e.toolCallId);(t==null?e.dynamic:t.type===`dynamic-tool`)?m({toolCallId:e.toolCallId,toolName:e.toolName,state:`output-error`,input:e.input,errorText:e.errorText,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,toolMetadata:e.toolMetadata}):(p({toolCallId:e.toolCallId,toolName:e.toolName,state:`output-error`,input:void 0,rawInput:e.input,errorText:e.errorText,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,toolMetadata:e.toolMetadata}),Ea([r.message])),c();break}case`tool-approval-request`:{let t=d(e.toolCallId);t.state=`approval-requested`,t.approval={id:e.approvalId,...e.approvalDescriptor==null?{}:{descriptor:e.approvalDescriptor},...e.reason==null?{}:{requestReason:e.reason},...e.isAutomatic===!0?{isAutomatic:!0}:{},...e.signature==null?{}:{signature:e.signature}},c();break}case`tool-approval-response`:{let t=f(e.approvalId),n=t.approval==null?{id:e.approvalId}:t.approval;t.state=`approval-responded`,t.approval={...n,id:e.approvalId,approved:e.approved,...e.reason==null?{}:{reason:e.reason}},e.providerExecuted!=null&&(t.providerExecuted=e.providerExecuted),e.providerMetadata!=null&&(t.callProviderMetadata=e.providerMetadata),c();break}case`tool-output-denied`:{let t=d(e.toolCallId);t.state=`output-denied`,c();break}case`tool-output-available`:{let t=d(e.toolCallId);t.type===`dynamic-tool`?m({toolCallId:e.toolCallId,toolName:t.toolName,state:`output-available`,input:t.input,output:e.output,preliminary:e.preliminary,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,title:t.title,toolMetadata:t.toolMetadata},t):p({toolCallId:e.toolCallId,toolName:wa(t),state:`output-available`,input:t.input,output:e.output,providerExecuted:e.providerExecuted,preliminary:e.preliminary,providerMetadata:e.providerMetadata,title:t.title,toolMetadata:t.toolMetadata},t),c();break}case`tool-output-error`:{let t=d(e.toolCallId);t.type===`dynamic-tool`?m({toolCallId:e.toolCallId,toolName:t.toolName,state:`output-error`,input:t.input,errorText:e.errorText,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,title:t.title,toolMetadata:t.toolMetadata},t):p({toolCallId:e.toolCallId,toolName:wa(t),state:`output-error`,input:t.input,rawInput:t.rawInput,errorText:e.errorText,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,title:t.title,toolMetadata:t.toolMetadata},t),c();break}case`start-step`:r.message.parts.push({type:`step-start`});break;case`finish-step`:break;case`reset-step`:{let e=l();r.activeTextParts=xa(),r.activeReasoningParts=xa(),r.partialToolCalls=xa(),e.length>0&&(r.message.parts.splice(r.message.parts.length-e.length,e.length),c());break}case`start`:e.messageId!=null&&(r.message.id=e.messageId),await h(e.messageMetadata),(e.messageId!=null||e.messageMetadata!=null)&&c({updateStatus:!1});break;case`finish`:e.finishReason!=null&&(r.finishReason=e.finishReason),await h(e.messageMetadata),e.messageMetadata!=null&&c();break;case`message-metadata`:await h(e.messageMetadata),e.messageMetadata!=null&&c();break;case`error`:i?.(Error(e.errorText));break;default:if(ba(e)){if(n?.[e.type]!=null){let t=r.message.parts.findIndex(t=>`id`in t&&`data`in t&&t.id===e.id&&t.type===e.type),i=t>=0?t:r.message.parts.length;await ci({value:e.data,schema:n[e.type],context:{field:`message.parts[${i}].data`,entityName:e.type,entityId:e.id}})}let t=e;if(t.transient){o?.(t);break}let i=t.id==null?void 0:r.message.parts.find(e=>t.type===e.type&&t.id===e.id);i==null?r.message.parts.push(t):i.data=t.data,o?.(t),c()}}s.enqueue(e)})}}))}async function ka({stream:e,onError:t,abortSignal:n}){let r=e.getReader(),i=()=>{r.cancel().catch(()=>{})};n?.aborted?i():n?.addEventListener(`abort`,i,{once:!0});try{for(;;){let{done:e}=await r.read();if(e)break}}catch(e){t?.(e)}finally{n?.removeEventListener(`abort`,i),r.releaseLock()}}N({prefix:`aitxt`,size:24}),N({prefix:`call`,size:24}),N({prefix:`aitxt`,size:24}),N({prefix:`call`,size:24});var U=B.record(B.string(),Ri.optional()),Aa=B.record(B.string(),B.string());function ja(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&Object.keys(e).length===0}function Ma(e){let{type:t,...n}=e;return{...n,type:`dynamic-tool`,toolName:t.slice(5)}}var Na=Qr(()=>si(B.array(B.object({id:B.string(),role:B.enum([`system`,`user`,`assistant`]),metadata:B.unknown().optional(),parts:B.array(B.union([B.object({type:B.literal(`text`),text:B.string(),state:B.enum([`streaming`,`done`]).optional(),providerMetadata:V.optional()}),B.object({type:B.literal(`reasoning`),id:B.string().optional(),text:B.string(),state:B.enum([`streaming`,`done`]).optional(),providerMetadata:V.optional()}),B.object({type:B.literal(`custom`),kind:B.string(),providerMetadata:V.optional()}),B.object({type:B.literal(`source-url`),sourceId:B.string(),url:B.string(),title:B.string().optional(),providerMetadata:V.optional()}),B.object({type:B.literal(`source-document`),sourceId:B.string(),mediaType:B.string(),title:B.string(),filename:B.string().optional(),providerMetadata:V.optional()}),B.object({type:B.literal(`file`),mediaType:B.string(),filename:B.string().optional(),url:B.string(),providerReference:Aa.optional(),providerMetadata:V.optional()}),B.object({type:B.literal(`reasoning-file`),mediaType:B.string(),url:B.string(),providerMetadata:V.optional()}),B.object({type:B.literal(`step-start`)}),B.object({type:B.string().startsWith(`data-`),id:B.string().optional(),data:B.unknown()}),B.object({type:B.literal(`dynamic-tool`),toolName:B.string(),toolCallId:B.string(),title:B.string().optional(),toolMetadata:U.optional(),state:B.literal(`input-streaming`),input:B.unknown().optional(),providerExecuted:B.boolean().optional(),callProviderMetadata:V.optional(),output:B.never().optional(),errorText:B.never().optional(),approval:B.never().optional()}),B.object({type:B.literal(`dynamic-tool`),toolName:B.string(),toolCallId:B.string(),title:B.string().optional(),toolMetadata:U.optional(),state:B.literal(`input-available`),input:B.unknown(),providerExecuted:B.boolean().optional(),output:B.never().optional(),errorText:B.never().optional(),callProviderMetadata:V.optional(),approval:B.never().optional()}),B.object({type:B.literal(`dynamic-tool`),toolName:B.string(),toolCallId:B.string(),title:B.string().optional(),toolMetadata:U.optional(),state:B.literal(`approval-requested`),input:B.unknown(),providerExecuted:B.boolean().optional(),output:B.never().optional(),errorText:B.never().optional(),callProviderMetadata:V.optional(),approval:B.object({id:B.string(),approved:B.never().optional(),descriptor:B.unknown().optional(),requestReason:B.string().optional(),reason:B.never().optional(),isAutomatic:B.boolean().optional(),signature:B.string().optional()})}),B.object({type:B.literal(`dynamic-tool`),toolName:B.string(),toolCallId:B.string(),title:B.string().optional(),toolMetadata:U.optional(),state:B.literal(`approval-responded`),input:B.unknown(),providerExecuted:B.boolean().optional(),output:B.never().optional(),errorText:B.never().optional(),callProviderMetadata:V.optional(),approval:B.object({id:B.string(),approved:B.boolean(),descriptor:B.unknown().optional(),requestReason:B.string().optional(),reason:B.string().optional(),isAutomatic:B.boolean().optional(),signature:B.string().optional()})}),B.object({type:B.literal(`dynamic-tool`),toolName:B.string(),toolCallId:B.string(),title:B.string().optional(),toolMetadata:U.optional(),state:B.literal(`output-available`),input:B.unknown(),providerExecuted:B.boolean().optional(),output:B.unknown(),errorText:B.never().optional(),callProviderMetadata:V.optional(),resultProviderMetadata:V.optional(),preliminary:B.boolean().optional(),approval:B.object({id:B.string(),approved:B.literal(!0),descriptor:B.unknown().optional(),requestReason:B.string().optional(),reason:B.string().optional(),isAutomatic:B.boolean().optional(),signature:B.string().optional()}).optional()}),B.object({type:B.literal(`dynamic-tool`),toolName:B.string(),toolCallId:B.string(),title:B.string().optional(),toolMetadata:U.optional(),state:B.literal(`output-error`),input:B.unknown().optional(),rawInput:B.unknown().optional(),providerExecuted:B.boolean().optional(),output:B.never().optional(),errorText:B.string(),callProviderMetadata:V.optional(),resultProviderMetadata:V.optional(),approval:B.object({id:B.string(),approved:B.literal(!0),descriptor:B.unknown().optional(),requestReason:B.string().optional(),reason:B.string().optional(),isAutomatic:B.boolean().optional(),signature:B.string().optional()}).optional()}),B.object({type:B.literal(`dynamic-tool`),toolName:B.string(),toolCallId:B.string(),title:B.string().optional(),toolMetadata:U.optional(),state:B.literal(`output-denied`),input:B.unknown(),providerExecuted:B.boolean().optional(),output:B.never().optional(),errorText:B.never().optional(),callProviderMetadata:V.optional(),approval:B.object({id:B.string(),approved:B.literal(!1),descriptor:B.unknown().optional(),requestReason:B.string().optional(),reason:B.string().optional(),isAutomatic:B.boolean().optional(),signature:B.string().optional()})}),B.object({type:B.string().startsWith(`tool-`),toolCallId:B.string(),title:B.string().optional(),toolMetadata:U.optional(),state:B.literal(`input-streaming`),providerExecuted:B.boolean().optional(),callProviderMetadata:V.optional(),input:B.unknown().optional(),output:B.never().optional(),errorText:B.never().optional(),approval:B.never().optional()}),B.object({type:B.string().startsWith(`tool-`),toolCallId:B.string(),title:B.string().optional(),toolMetadata:U.optional(),state:B.literal(`input-available`),providerExecuted:B.boolean().optional(),input:B.unknown(),output:B.never().optional(),errorText:B.never().optional(),callProviderMetadata:V.optional(),approval:B.never().optional()}),B.object({type:B.string().startsWith(`tool-`),toolCallId:B.string(),title:B.string().optional(),toolMetadata:U.optional(),state:B.literal(`approval-requested`),input:B.unknown(),providerExecuted:B.boolean().optional(),output:B.never().optional(),errorText:B.never().optional(),callProviderMetadata:V.optional(),approval:B.object({id:B.string(),approved:B.never().optional(),descriptor:B.unknown().optional(),requestReason:B.string().optional(),reason:B.never().optional(),isAutomatic:B.boolean().optional(),signature:B.string().optional()})}),B.object({type:B.string().startsWith(`tool-`),toolCallId:B.string(),title:B.string().optional(),toolMetadata:U.optional(),state:B.literal(`approval-responded`),input:B.unknown(),providerExecuted:B.boolean().optional(),output:B.never().optional(),errorText:B.never().optional(),callProviderMetadata:V.optional(),approval:B.object({id:B.string(),approved:B.boolean(),descriptor:B.unknown().optional(),requestReason:B.string().optional(),reason:B.string().optional(),isAutomatic:B.boolean().optional(),signature:B.string().optional()})}),B.object({type:B.string().startsWith(`tool-`),toolCallId:B.string(),title:B.string().optional(),toolMetadata:U.optional(),state:B.literal(`output-available`),providerExecuted:B.boolean().optional(),input:B.unknown(),output:B.unknown(),errorText:B.never().optional(),callProviderMetadata:V.optional(),resultProviderMetadata:V.optional(),preliminary:B.boolean().optional(),approval:B.object({id:B.string(),approved:B.literal(!0),descriptor:B.unknown().optional(),requestReason:B.string().optional(),reason:B.string().optional(),isAutomatic:B.boolean().optional(),signature:B.string().optional()}).optional()}),B.object({type:B.string().startsWith(`tool-`),toolCallId:B.string(),title:B.string().optional(),toolMetadata:U.optional(),state:B.literal(`output-error`),providerExecuted:B.boolean().optional(),input:B.unknown().optional(),rawInput:B.unknown().optional(),output:B.never().optional(),errorText:B.string(),callProviderMetadata:V.optional(),resultProviderMetadata:V.optional(),approval:B.object({id:B.string(),approved:B.literal(!0),descriptor:B.unknown().optional(),requestReason:B.string().optional(),reason:B.string().optional(),isAutomatic:B.boolean().optional(),signature:B.string().optional()}).optional()}),B.object({type:B.string().startsWith(`tool-`),toolCallId:B.string(),title:B.string().optional(),toolMetadata:U.optional(),state:B.literal(`output-denied`),providerExecuted:B.boolean().optional(),input:B.unknown(),output:B.never().optional(),errorText:B.never().optional(),callProviderMetadata:V.optional(),approval:B.object({id:B.string(),approved:B.literal(!1),descriptor:B.unknown().optional(),requestReason:B.string().optional(),reason:B.string().optional(),isAutomatic:B.boolean().optional(),signature:B.string().optional()})})]))}).superRefine((e,t)=>{e.role!==`assistant`&&e.parts.length===0&&t.addIssue({origin:`array`,code:`too_small`,minimum:1,inclusive:!0,input:e.parts,path:[`parts`],message:`Message must contain at least one part`})})).nonempty(`Messages array must not be empty`)));async function Pa({messages:e,metadataSchema:t,dataSchemas:n,tools:r},{convertMissingTerminalToolsToDynamic:i}){try{if(e==null)return{success:!1,error:new bi({parameter:`messages`,value:e,message:`messages parameter must be provided`})};let a=await ci({value:e,schema:Na});if(Ea(a),t)for(let[e,n]of a.entries())await ci({value:n.metadata,schema:t,context:{field:`messages[${e}].metadata`,entityId:n.id}});let o=r!=null||i;if(n||o)for(let[e,t]of a.entries())for(let[a,s]of t.parts.entries()){if(n&&s.type.startsWith(`data-`)){let t=s,r=t.type.slice(5),i=n[r];if(!i)return{success:!1,error:new M({value:t.data,cause:`No data schema found for data part ${r}`,context:{field:`messages[${e}].parts[${a}].data`,entityName:r,entityId:t.id}})};await ci({value:t.data,schema:i,context:{field:`messages[${e}].parts[${a}].data`,entityName:r,entityId:t.id}})}if(o&&s.type.startsWith(`tool-`)){let n=s,o=n.type.slice(5),c=r==null?void 0:ia(r,o),l=n.state===`output-available`||n.state===`output-error`||n.state===`output-denied`;if(!c&&l){(r!=null||i)&&(t.parts[a]=Ma(n));continue}if(!c)return{success:!1,error:new M({value:n.input,cause:`No tool schema found for tool part ${o}`,context:{field:`messages[${e}].parts[${a}].input`,entityName:o,entityId:n.toolCallId}})};let u={field:`messages[${e}].parts[${a}].input`,entityName:o,entityId:n.toolCallId},d=!1;if(n.state===`output-error`)n.input!==void 0&&(d=!(await li({value:n.input,schema:c.inputSchema,context:u})).success);else if(n.state===`output-available`){let e=await li({value:n.input,schema:c.inputSchema,context:u});if(!e.success){if(ja(n.input))d=!0;else throw e.error}}else(n.state===`input-available`||n.state===`approval-requested`||n.state===`approval-responded`||n.state===`output-denied`)&&await ci({value:n.input,schema:c.inputSchema,context:u});n.state===`output-available`&&c.outputSchema&&await ci({value:n.output,schema:c.outputSchema,context:{field:`messages[${e}].parts[${a}].output`,entityName:o,entityId:n.toolCallId}}),d&&(t.parts[a]=Ma(n))}}return{success:!0,data:a}}catch(e){return{success:!1,error:e}}}async function Fa(e){return Pa(e,{convertMissingTerminalToolsToDynamic:!1})}N({prefix:`call`,size:24}),N({prefix:`call`,size:24}),new TextEncoder,N({prefix:`aiobj`,size:24});var{atob:Ia}=globalThis,La=class{constructor(){this.queue=[],this.isProcessing=!1}async processQueue(){if(!this.isProcessing){for(this.isProcessing=!0;this.queue.length>0;)await this.queue[0](),this.queue.shift();this.isProcessing=!1}}async run(e){return new Promise((t,n)=>{this.queue.push(async()=>{try{await e(),t()}catch(e){n(e)}}),this.processQueue()})}};N({prefix:`aiobj`,size:24}),B.object({token:B.string().refine(e=>e.trim().length>0),url:B.string().refine(e=>{try{let t=new URL(e);return(t.protocol===`ws:`||t.protocol===`wss:`)&&t.hostname!==``}catch{return!1}}),expiresAt:B.number().positive().max(2**53-1).optional(),tools:B.array(B.object({type:B.literal(`function`),name:B.string().min(1),description:B.string().optional(),parameters:B.record(B.string(),B.unknown())})).optional()}),N({prefix:`call`,size:24});async function Ra({response:e,url:t,fallbackMessage:n}){let r=await e.text();return new rn({message:r||n,url:t,requestBodyValues:void 0,statusCode:e.status,responseBody:r})}async function za(e){if(e==null)return[];if(!globalThis.FileList||!(e instanceof globalThis.FileList))throw new Pn({functionality:`FileList`,message:`FileList is not supported in the current environment`});return Promise.all(Array.from(e).map(async e=>{let{name:t,type:n}=e;return{type:`file`,mediaType:n,filename:t,url:await new Promise((t,n)=>{let r=new FileReader;r.onload=e=>{t(e.target?.result)},r.onerror=e=>n(e),r.readAsDataURL(e)})}}))}function Ba(e,t){let n=e.search(/[?#]/);return n===-1?`${e}${t}`:`${e.slice(0,n)}${t}${e.slice(n)}`}var Va=class{constructor({api:e=`/api/chat`,credentials:t,headers:n,body:r,fetch:i,prepareSendMessagesRequest:a,prepareReconnectToStreamRequest:o}){this.api=e,this.credentials=t,this.headers=n,this.body=r,this.fetch=i,this.prepareSendMessagesRequest=a,this.prepareReconnectToStreamRequest=o}async sendMessages({abortSignal:e,...t}){let n=await fi(this.body),r=await fi(this.headers),i=await fi(this.credentials),a={...Kn(r),...Kn(t.headers)},o=await this.prepareSendMessagesRequest?.call(this,{api:this.api,id:t.chatId,messages:t.messages,body:{...n,...t.body},headers:a,credentials:i,requestMetadata:t.metadata,trigger:t.trigger,messageId:t.messageId}),s=o?.api??this.api,c=o?.headers===void 0?a:Kn(o.headers),l=o?.body===void 0?{...n,...t.body,id:t.chatId,messages:t.messages,trigger:t.trigger,messageId:t.messageId}:o.body,u=o?.credentials??i,d=await(this.fetch??globalThis.fetch)(s,{method:`POST`,headers:{"content-type":`application/json`,...c},body:JSON.stringify(l),credentials:u,signal:e});if(!d.ok)throw await Ra({response:d,url:s,fallbackMessage:`Failed to fetch the chat response.`});if(!d.body)throw new un({message:`The response body is empty.`});return this.processResponseStream(d.body)}async reconnectToStream(e){let t=await fi(this.body),n=await fi(this.headers),r=await fi(this.credentials),i={...Kn(n),...Kn(e.headers)},a=await this.prepareReconnectToStreamRequest?.call(this,{api:this.api,id:e.chatId,body:{...t,...e.body},headers:i,credentials:r,requestMetadata:e.metadata}),o=a?.api??Ba(this.api,`/${e.chatId}/stream`),s=a?.headers===void 0?i:Kn(a.headers),c=a?.credentials??r,l=await(this.fetch??globalThis.fetch)(o,{method:`GET`,headers:s,credentials:c,signal:e.abortSignal});if(l.status===204)return null;if(!l.ok)throw await Ra({response:l,url:o,fallbackMessage:`Failed to fetch the chat response.`});if(!l.body)throw new un({message:`The response body is empty.`});return this.processResponseStream(l.body)}},Ha=class extends Va{constructor(e={}){super(e)}processResponseStream(e){return di({stream:e,schema:ya}).pipeThrough(new TransformStream({async transform(e,t){if(!e.success)throw e.error;t.enqueue(e.value)}}))}},Ua=class{constructor({generateId:e=qn,id:t=e(),transport:n=new Ha,messageMetadataSchema:r,dataPartSchemas:i,state:a,onError:o,onToolCall:s,onFinish:c,onData:l,sendAutomaticallyWhen:u}){this.pendingMessagePreparations=new Set,this.activeResponse=void 0,this.activeResumeRequest=void 0,this.jobExecutor=new La,this.sendMessage=async(e,t)=>{if(e==null){await this.makeRequest({trigger:`submit-message`,messageId:this.lastMessage?.id,...t});return}let n;if(`text`in e||`files`in e){let t=new AbortController;this.pendingMessagePreparations.add(t);let r;try{r=Array.isArray(e.files)?e.files:await za(e.files)}finally{this.pendingMessagePreparations.delete(t)}if(t.signal.aborted)return;n={parts:[...r,...`text`in e&&e.text!=null?[{type:`text`,text:e.text}]:[]]}}else n=e;if(e.messageId!=null){let t=this.state.messages.findIndex(t=>t.id===e.messageId);if(t===-1)throw new bi({parameter:`message.messageId`,value:e.messageId,message:`message with id ${e.messageId} not found`});if(this.state.messages[t].role!==`user`)throw new bi({parameter:`message.messageId`,value:e.messageId,message:`message with id ${e.messageId} is not a user message`});this.state.messages=this.state.messages.slice(0,t+1),this.state.replaceMessage(t,{id:e.messageId,...n,role:n.role??`user`,metadata:e.metadata})}else this.state.pushMessage({...n,id:n.id??this.generateId(),role:n.role??`user`,metadata:e.metadata});await this.makeRequest({trigger:`submit-message`,messageId:e.messageId,...t})},this.regenerate=async({messageId:e,...t}={})=>{let n=e==null?this.state.messages.length-1:this.state.messages.findIndex(t=>t.id===e);if(n===-1)throw new bi({parameter:`messageId`,value:e,message:`message ${e} not found`});this.state.messages=this.state.messages.slice(0,this.messages[n].role===`assistant`?n:n+1),await this.makeRequest({trigger:`regenerate-message`,messageId:e,...t})},this.resumeStream=async(e={})=>{await this.makeRequest({trigger:`resume-stream`,...e})},this.clearError=()=>{this.status===`error`&&(this.state.error=void 0,this.setStatus({status:`ready`}))},this.addToolApprovalResponse=async({id:e,approved:t,reason:n,options:r})=>this.jobExecutor.run(async()=>{let i=this.state.messages,a=i[i.length-1],o=r=>H(r)&&r.state===`approval-requested`&&r.approval.id===e?{...r,state:`approval-responded`,approval:{...r.approval,id:e,approved:t,reason:n}}:r;this.state.replaceMessage(i.length-1,{...a,parts:a.parts.map(o)}),this.activeResponse&&(this.activeResponse.state.message.parts=this.activeResponse.state.message.parts.map(o)),this.status!==`streaming`&&this.status!==`submitted`&&this.sendAutomaticallyWhen&&this.shouldSendAutomatically().then(e=>{e&&this.makeRequest({trigger:`submit-message`,messageId:this.lastMessage?.id,...r})})}),this.addToolOutput=async({state:e=`output-available`,toolCallId:t,output:n,errorText:r,options:i})=>this.jobExecutor.run(async()=>{let a=this.state.messages,o=a[a.length-1],s=i=>H(i)&&i.toolCallId===t?{...i,state:e,output:n,errorText:r}:i;this.state.replaceMessage(a.length-1,{...o,parts:o.parts.map(s)}),this.activeResponse&&(this.activeResponse.state.message.parts=this.activeResponse.state.message.parts.map(s)),this.status!==`streaming`&&this.status!==`submitted`&&this.sendAutomaticallyWhen&&this.shouldSendAutomatically().then(e=>{e&&this.makeRequest({trigger:`submit-message`,messageId:this.lastMessage?.id,...i})})}),this.addToolResult=this.addToolOutput,this.stop=async()=>{var e,t;for(let e of this.pendingMessagePreparations)e.abort();(e=this.activeResumeRequest)==null||e.abortController.abort(),(t=this.activeResponse)==null||t.abortController.abort()},this.id=t,this.transport=n,this.generateId=e,this.messageMetadataSchema=r,this.dataPartSchemas=i,this.state=a,this.onError=o,this.onToolCall=s,this.onFinish=c,this.onData=l,this.sendAutomaticallyWhen=u}get status(){return this.state.status}setStatus({status:e,error:t}){this.status!==e&&(this.state.status=e,this.state.error=t)}get error(){return this.state.error}get messages(){return this.state.messages}get lastMessage(){return this.state.messages[this.state.messages.length-1]}set messages(e){this.state.messages=e}async shouldSendAutomatically(){if(!this.sendAutomaticallyWhen)return!1;let e=this.sendAutomaticallyWhen({messages:this.state.messages});return e&&typeof e==`object`&&`then`in e?await e:e}async makeRequest({trigger:e,metadata:t,headers:n,body:r,messageId:i}){var a,o;let s=new AbortController,c=e===`resume-stream`?{abortController:s}:void 0;c&&((a=this.activeResumeRequest)==null||a.abortController.abort(),this.activeResumeRequest=c);let l=()=>c==null||this.activeResumeRequest===c,u=()=>{this.activeResumeRequest===c&&(this.activeResumeRequest=void 0)},d;if(e===`resume-stream`)try{let e=await this.transport.reconnectToStream({chatId:this.id,abortSignal:s.signal,metadata:t,headers:n,body:r});if(s.signal.aborted||!l()){await e?.cancel().catch(()=>{}),l()&&this.setStatus({status:`ready`}),u();return}if(e==null){this.setStatus({status:`ready`}),u();return}d=e}catch(e){if(s.signal.aborted||e.name===`AbortError`){l()&&this.setStatus({status:`ready`}),u();return}if(!l())return;this.onError&&e instanceof Error&&this.onError(e),this.setStatus({status:`error`,error:e}),u();return}this.setStatus({status:`submitted`,error:void 0});let f=this.lastMessage,p=!1,m=!1,h=!1,g;try{let a={state:Da({lastMessage:e===`resume-stream`||e===`regenerate-message`?void 0:this.state.snapshot(f),messageId:this.generateId()}),abortController:s};g=a,a.abortController.signal.addEventListener(`abort`,()=>{p=!0}),this.activeResponse=a;let o;if(o=e===`resume-stream`?d:await this.transport.sendMessages({chatId:this.id,messages:this.state.messages,abortSignal:a.abortController.signal,metadata:t,headers:n,body:r,trigger:e,messageId:i}),await ka({stream:Oa({stream:o,onToolCall:this.onToolCall,onData:this.onData,messageMetadataSchema:this.messageMetadataSchema,dataPartSchemas:this.dataPartSchemas,runUpdateMessageJob:e=>this.jobExecutor.run(()=>a.abortController.signal.aborted?Promise.resolve():e({state:a.state,write:({updateStatus:e=!0}={})=>{a.abortController.signal.aborted||(e&&this.setStatus({status:`streaming`}),a.state.message.id===this.lastMessage?.id?this.state.replaceMessage(this.state.messages.length-1,a.state.message):this.state.pushMessage(a.state.message))}})),onError:e=>{throw e}}),abortSignal:a.abortController.signal,onError:e=>{throw e}}),p)return l()&&this.setStatus({status:`ready`}),null;l()&&this.setStatus({status:`ready`})}catch(e){if(p||e.name===`AbortError`)return p=!0,l()&&this.setStatus({status:`ready`}),null;if(!l())return null;h=!0,e instanceof TypeError&&(e.message.toLowerCase().includes(`fetch`)||e.message.toLowerCase().includes(`network`))&&(m=!0),this.onError&&e instanceof Error&&this.onError(e),this.setStatus({status:`error`,error:e})}finally{try{g&&((o=this.onFinish)==null||o.call(this,{message:g.state.message,messages:this.state.messages,isAbort:p,isDisconnect:m,isError:h,finishReason:g.state.finishReason}))}finally{this.activeResponse===g&&(this.activeResponse=void 0),u()}}!h&&await this.shouldSendAutomatically()&&await this.makeRequest({trigger:`submit-message`,messageId:this.lastMessage?.id,metadata:t,headers:n,body:r})}};function Wa({messages:e}){let t=e[e.length-1];if(!t||t.role!==`assistant`)return!1;let n=t.parts.reduce((e,t,n)=>t.type===`step-start`?n:e,-1),r=t.parts.slice(n+1).filter(H);return r.filter(e=>e.state===`approval-responded`).length>0&&r.every(e=>e.state===`output-available`&&e.preliminary!==!0||e.state===`output-error`||e.state===`output-denied`||e.state===`approval-responded`)}function Ga({messages:e}){let t=e[e.length-1];if(!t||t.role!==`assistant`)return!1;let n=t.parts.reduce((e,t,n)=>t.type===`step-start`?n:e,-1),r=t.parts.slice(n+1).filter(H).filter(e=>!e.providerExecuted);return r.length>0&&r.every(e=>e.state===`output-available`&&e.preliminary!==!0||e.state===`output-error`)}var Ka=t(((e,t)=>{function n(e,t){if(typeof e!=`function`)throw TypeError(`Expected the first argument to be a \`function\`, got \`${typeof e}\`.`);let n,r=0;return function(...i){clearTimeout(n);let a=Date.now(),o=t-(a-r);o<=0?(r=a,e.apply(this,i)):n=setTimeout(()=>{r=Date.now(),e.apply(this,i)},o)}}t.exports=n})),W=e(l(),1),qa=e(Ka(),1),G=Me(),Ja=(e,t,n)=>{if(!t.has(e))throw TypeError(`Cannot `+n)},K=(e,t,n)=>(Ja(e,t,`read from private field`),n?n.call(e):t.get(e)),q=(e,t,n)=>{if(t.has(e))throw TypeError(`Cannot add the same private member more than once`);t instanceof WeakSet?t.add(e):t.set(e,n)},Ya=(e,t,n,r)=>(Ja(e,t,`write to private field`),r?r.call(e,n):t.set(e,n),n);function Xa(e,t){return t==null?e:(0,qa.default)(e,t)}function Za(e){return Array.isArray(e)?[...e]:typeof e==`object`&&e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null)?{...e}:e}var J,Qa,$a,eo,to,no,ro,io,ao,oo=class{constructor(e=[]){q(this,J,void 0),q(this,Qa,`ready`),q(this,$a,void 0),q(this,eo,new Set),q(this,to,new Set),q(this,no,new Set),this.pushMessage=e=>{Ya(this,J,K(this,J).concat(e)),K(this,ro).call(this)},this.popMessage=()=>{Ya(this,J,K(this,J).slice(0,-1)),K(this,ro).call(this)},this.replaceMessage=(e,t)=>{Ya(this,J,[...K(this,J).slice(0,e),this.snapshot(t),...K(this,J).slice(e+1)]),K(this,ro).call(this)},this.snapshot=e=>{if(typeof e!=`object`||!e||!(`parts`in e)||!Array.isArray(e.parts))return e;let t=e,n={...t,parts:t.parts.map(e=>({...e}))};return`metadata`in t&&(n.metadata=Za(t.metadata)),n},this[`~registerMessagesCallback`]=(e,t)=>{let n=t?Xa(e,t):e;return K(this,eo).add(n),()=>{K(this,eo).delete(n)}},this[`~registerStatusCallback`]=e=>(K(this,to).add(e),()=>{K(this,to).delete(e)}),this[`~registerErrorCallback`]=e=>(K(this,no).add(e),()=>{K(this,no).delete(e)}),q(this,ro,()=>{K(this,eo).forEach(e=>e())}),q(this,io,()=>{K(this,to).forEach(e=>e())}),q(this,ao,()=>{K(this,no).forEach(e=>e())}),Ya(this,J,e)}get status(){return K(this,Qa)}set status(e){Ya(this,Qa,e),K(this,io).call(this)}get error(){return K(this,$a)}set error(e){Ya(this,$a,e),K(this,ao).call(this)}get messages(){return K(this,J)}set messages(e){Ya(this,J,[...e]),K(this,ro).call(this)}};J=new WeakMap,Qa=new WeakMap,$a=new WeakMap,eo=new WeakMap,to=new WeakMap,no=new WeakMap,ro=new WeakMap,io=new WeakMap,ao=new WeakMap;var so,co=class extends Ua{constructor({messages:e,...t}){let n=new oo(e);super({...t,state:n}),q(this,so,void 0),this[`~registerMessagesCallback`]=(e,t)=>K(this,so)[`~registerMessagesCallback`](e,t),this[`~registerStatusCallback`]=e=>K(this,so)[`~registerStatusCallback`](e),this[`~registerErrorCallback`]=e=>K(this,so)[`~registerErrorCallback`](e),Ya(this,so,n)}};so=new WeakMap;function lo({throttle:e,experimental_throttle:t,resume:n=!1,...r}={}){let i=e??t,a=(0,W.useRef)({});`chat`in r||(a.current={onToolCall:r.onToolCall,onData:r.onData,onFinish:r.onFinish,onError:r.onError,sendAutomaticallyWhen:r.sendAutomaticallyWhen,transport:r.transport});let o,s=()=>a.current.transport??(o??=new Ha),c={...r,transport:{sendMessages:e=>s().sendMessages(e),reconnectToStream:e=>s().reconnectToStream(e)},onToolCall:e=>{var t;return(t=a.current).onToolCall?.call(t,e)},onData:e=>{var t;return(t=a.current).onData?.call(t,e)},onFinish:e=>{var t;return(t=a.current).onFinish?.call(t,e)},onError:e=>{var t;return(t=a.current).onError?.call(t,e)},sendAutomaticallyWhen:e=>{var t;return(t=a.current).sendAutomaticallyWhen?.call(t,e)??!1}},l=`chat`in r?r.chat:r.id,{chat:u,isExternallyManaged:d}=(0,W.useMemo)(()=>({chat:`chat`in r?r.chat:new co(c),isExternallyManaged:`chat`in r}),[l]);(0,W.useEffect)(()=>{if(!d)return()=>{u.stop()}},[u,d]);let f=(0,W.useMemo)(()=>({messages:u.messages}),[u]),p=(0,W.useCallback)(e=>{let t=!0,n=u[`~registerMessagesCallback`](()=>{t&&(f.messages=u.messages,e())},i);return f.messages=u.messages,()=>{t=!1,n()}},[u,f,i]),m=(0,W.useCallback)(()=>f.messages,[f]),h=(0,W.useSyncExternalStore)(p,m,m),g=(0,W.useCallback)(e=>u[`~registerStatusCallback`](()=>{(u.status===`ready`||u.status===`error`)&&(f.messages=u.messages),e()}),[u,f]),_=(0,W.useCallback)(()=>u.status,[u]),v=(0,W.useSyncExternalStore)(g,_,_),y=(0,W.useSyncExternalStore)(u[`~registerErrorCallback`],()=>u.error,()=>u.error),b=(0,W.useCallback)(e=>{typeof e==`function`&&(e=e(u.messages)),u.messages=e},[u]);return(0,W.useEffect)(()=>{n&&u.resumeStream()},[n,u]),{id:u.id,messages:h,setMessages:b,sendMessage:u.sendMessage,regenerate:u.regenerate,clearError:u.clearError,stop:u.stop,error:y,resumeStream:u.resumeStream,status:v,addToolResult:u.addToolOutput,addToolOutput:u.addToolOutput,addToolApprovalResponse:u.addToolApprovalResponse}}function uo(e){return ht.define({combine:t=>t[0]??e})}var fo=uo({}),po=gt.define(),mo=gt.define(),ho=50,go=dt.define({create(){return{prompts:[],navigationIndex:-1,originalText:``}},update(e,t){let n={...e};t.docChanged&&e.navigationIndex!==-1&&(t.effects.some(e=>e.is(mo)||e.is(po))||(n.navigationIndex=-1,n.originalText=``));for(let r of t.effects)if(r.is(po)){let i=r.value.trim();i&&(n.prompts=[i,...e.prompts.filter(e=>e!==i)].slice(0,ho),t.state.facet(fo).save?.(n.prompts)),n.navigationIndex=-1,n.originalText=``}else r.is(mo)&&(n.navigationIndex=r.value.index,n.originalText=r.value.originalText);return n}}),_o=e=>{let t=e.state.field(go),n=e.state.doc;if(t.prompts.length===0)return!1;let r,i=t.originalText;if(t.navigationIndex===-1){if(n.length>0)return!1;r=0,i=n.toString()}else if(r=Math.min(t.navigationIndex+1,t.prompts.length-1),r===t.navigationIndex)return!1;let a=t.prompts[r];return e.dispatch({changes:{from:0,to:e.state.doc.length,insert:a},effects:mo.of({index:r,originalText:i})}),!0},vo=e=>{let t=e.state.field(go);if(t.navigationIndex===-1)return!1;let n,r;return t.navigationIndex===0?(n=t.originalText,r=-1):(r=t.navigationIndex-1,n=t.prompts[r]??``),e.dispatch({changes:{from:0,to:e.state.doc.length,insert:n},effects:mo.of({index:r,originalText:t.originalText})}),!0},yo=e=>{let t=e.state.doc.toString();return t.trim()?(e.dispatch({effects:po.of(t)}),!0):!1};function bo(e={}){let{storage:t,defaultKeymap:n=!0}=e,r=[go.init(()=>({prompts:t?.load?.()??[],navigationIndex:-1,originalText:``})),fo.of(t??{})];return n&&r.push(ft.of([{key:`ArrowUp`,run:_o},{key:`ArrowDown`,run:vo}])),r}var Y=class extends Error{code;isRetryable;suggestedFix;meta;constructor(e,t=`TOOL_ERROR`,n=!1,r,i){super(e),this.name=`ToolExecutionError`,this.code=t,this.isRetryable=n,this.suggestedFix=r,this.meta=i}toStructuredString(){let e=JSON.stringify({message:this.message,code:this.code,is_retryable:this.isRetryable,...this.suggestedFix&&{suggested_fix:this.suggestedFix},...this.meta&&{meta:this.meta}});return`Error invoking tool ${this.name}: ${e}`}},xo=O({status:be([`success`,`error`,`warning`]).optional(),auth_required:se().optional(),next_steps:me(D()).optional(),action_url:D().optional(),message:D().optional(),meta:le(D(),Ce()).optional()}),So=`cell-completion`,Co=`notebook-cells-completion`,wo=`data-${So}`,To=`data-${Co}`,Eo=O({code:D()}),Do=O({language:be([`python`,`sql`,`markdown`]),code:D().min(1)}),Oo=O({cells:me(Do).min(1)});function ko(e){return e.type.startsWith(`data-`)}var X=a(null),Ao=a(e=>e(X)?.status===`in_progress`),{valueAtom:Z,useActions:jo,createActions:Mo,reducer:No}=Ct(()=>new Map,{addStagedCell:(e,t)=>{let{cellId:n,edit:r}=t;return new Map([...e,[n,r]])},removeStagedCell:(e,t)=>{if(!e.has(t))return e;let n=new Map(e);return n.delete(t),n}});function Po(e){let t=(0,A.c)(2),n;return t[0]===e?n=t[1]:(n=Oe(Z,t=>t.get(e),Object.is),t[0]=e,t[1]=n),o(n)}function Fo(e){let t=(0,A.c)(15),{addStagedCell:n,removeStagedCell:r}=jo(),{createNewCell:i,updateCellCode:a}=d(),o=tt(),s;t[0]!==n||t[1]!==i?(s=e=>{let t=ae.create();return n({cellId:t,edit:{type:`add_cell`}}),i({cellId:`__end__`,code:e,before:!1,newCellId:t}),t},t[0]=n,t[1]=i,t[2]=s):s=t[2];let c=s,l;t[3]!==e||t[4]!==a?(l=t=>{let{cellId:n,code:r}=t;if(!e.get(Z).has(n)){k.error(`Staged cell not found`,{cellId:n});return}let i=te(n);i?ne(i,r):a({cellId:n,code:r,formattingChange:!1})},t[3]=e,t[4]=a,t[5]=l):l=t[5];let u=l,f;t[6]!==o||t[7]!==r?(f=e=>{r(e),o({cellId:e})},t[6]=o,t[7]=r,t[8]=f):f=t[8];let p=f,m;return t[9]!==n||t[10]!==c||t[11]!==p||t[12]!==r||t[13]!==u?(m={createStagedCell:c,updateStagedCell:u,addStagedCell:n,removeStagedCell:r,deleteStagedCell:p},t[9]=n,t[10]=c,t[11]=p,t[12]=r,t[13]=u,t[14]=m):m=t[14],m}function Io(e){let t=(0,A.c)(30),n=Fo(e),{createNewCell:r}=d(),i=(0,W.useRef)(null),a;t[0]===e?a=t[1]:(a={store:e},t[0]=e,t[1]=a),o(X,a);let s;t[2]===e?s=t[3]:(s={store:e},t[2]=e,t[3]=s),o(Z,s);let c;t[4]!==n||t[5]!==e?(c=t=>{let r=e.get(Z);for(let e of t.toReversed())r.has(e)&&n.deleteStagedCell(e)},t[4]=n,t[5]=e,t[6]=c):c=t[6];let l=c,u;t[7]!==r||t[8]!==l||t[9]!==n||t[10]!==e?(u=()=>{let t=e.get(X);t?.status===`in_progress`&&l(t.cellIds),i.current?.reconciler.discard(e.get(Z));let a=Symbol(`staged-cell-generation`);i.current={id:a,status:`in_progress`,reconciler:new Lo({...n,createNewCell:r})},e.set(X,{id:a,status:`in_progress`,cellIds:[]})},t[7]=r,t[8]=l,t[9]=n,t[10]=e,t[11]=u):u=t[11];let f=u,p;t[12]===e?p=t[13]:(p=t=>{let n=i.current;if(n?.status!==`in_progress`)return;let r=e.get(X),a=r?.id===n.id&&r.status===`in_progress`;if(!a||!t){n.reconciler.discard(e.get(Z)),a&&e.set(X,null),i.current=null;return}n.status=`complete`,e.set(X,{id:n.id,status:`complete`})},t[12]=e,t[13]=p);let m=p,h;t[14]===e?h=t[15]:(h=()=>{let t=i.current,n=e.get(X);return t!==null&&t.status===`complete`&&n?.status===`complete`&&n.id===t.id&&t.reconciler.hasStagedCells(e.get(Z))},t[14]=e,t[15]=h);let g=h,_;t[16]!==g||t[17]!==e?(_=()=>g()?(i.current?.reconciler.accept(),e.set(X,null),i.current=null,!0):!1,t[16]=g,t[17]=e,t[18]=_):_=t[18];let v=_,y;t[19]===e?y=t[20]:(y=()=>{let t=i.current,n=e.get(X);return t===null||n?.id!==t.id?!1:(t.reconciler.discard(e.get(Z)),e.set(X,null),i.current=null,!0)},t[19]=e,t[20]=y);let b=y,x;t[21]===e?x=t[22]:(x=t=>{if(t.type!==To)return;let n=i.current,r=e.get(X);if(n?.status!==`in_progress`||r?.id!==n.id||r.status!==`in_progress`)return;let a=Oo.parse(t.data);n.reconciler.reconcile(a.cells),e.set(X,{...r,cellIds:n.reconciler.stagedCellIds()})},t[21]=e,t[22]=x);let S=x,C;return t[23]!==v||t[24]!==f||t[25]!==b||t[26]!==m||t[27]!==g||t[28]!==S?(C={beginStagedCellGeneration:f,finishStagedCellGeneration:m,hasOwnedStagedCells:g,acceptOwnedStagedCells:v,discardOwnedStagedCells:b,onData:S},t[23]=v,t[24]=f,t[25]=b,t[26]=m,t[27]=g,t[28]=S,t[29]=C):C=t[29],C}var Lo=class{createdCells=[];actions;marimoImportCellId=null;constructor(e){this.actions=e}reconcile(e){for(let[t,n]of e.entries())if(t<this.createdCells.length){let e=this.createdCells[t],r=e.code!==n.code;if(this.createdCells[t]={...e,code:n.code},!r)continue;this.actions.updateStagedCell({cellId:e.cellId,code:n.code})}else{let e=this.actions.createStagedCell(n.code);this.createdCells.push({cellId:e,code:n.code})}let t=this.createdCells.splice(e.length);for(let{cellId:e}of t.toReversed())this.actions.deleteStagedCell(e);this.syncMarimoImport(e)}discard(e){for(let{cellId:t}of this.createdCells.toReversed())e.has(t)&&this.actions.deleteStagedCell(t);this.createdCells=[],this.marimoImportCellId&&e.has(this.marimoImportCellId)&&this.actions.deleteStagedCell(this.marimoImportCellId),this.marimoImportCellId=null}accept(){for(let e of this.stagedCellIds())this.actions.removeStagedCell(e)}hasStagedCells(e){return this.stagedCellIds().some(t=>e.has(t))}stagedCellIds(){let e=this.createdCells.map(({cellId:e})=>e);return this.marimoImportCellId&&e.push(this.marimoImportCellId),e}syncMarimoImport(e){if(!e.some(e=>e.language!==`python`)){this.marimoImportCellId&&=(this.actions.deleteStagedCell(this.marimoImportCellId),null);return}if(this.marimoImportCellId)return;let t=u({autoInstantiate:!1,createNewCell:this.actions.createNewCell,fromCellId:this.createdCells[0]?.cellId,before:!0});t&&(this.actions.addStagedCell({cellId:t,edit:{type:`add_cell`}}),this.marimoImportCellId=t)}},Ro={baseDescription:`Perform editing operations on the current notebook. You should prefer to create new cells unless you need to edit existing cells. Call this tool multiple times to perform multiple edits. Separate code into logical individual cells to take advantage of the notebook's reactive execution model.`,prerequisites:[`If you are updating existing cells, you need the cellIds. If they are not known, call the lightweight_cell_map_tool to find out.`],additionalInfo:`
20
+ `)}})}},ga={"content-type":`text/event-stream`,"cache-control":`no-cache`,connection:`keep-alive`,"x-vercel-ai-ui-message-stream":`v1`,"x-accel-buffering":`no`};function _a({status:e,statusText:t,headers:n,stream:r,consumeSseStream:i}){let a=r.pipeThrough(new ha);if(i){let[e,t]=a.tee();a=e,i({stream:t})}return new Response(a.pipeThrough(new TextEncoderStream),{status:e,statusText:t,headers:ma(n,ga)})}var va=B.record(B.string(),Ri.optional()),ya=Qr(()=>si(B.union([B.looseObject({type:B.literal(`text-start`),id:B.string(),providerMetadata:V.optional()}),B.looseObject({type:B.literal(`text-delta`),id:B.string(),delta:B.string(),providerMetadata:V.optional()}),B.looseObject({type:B.literal(`text-end`),id:B.string(),providerMetadata:V.optional()}),B.looseObject({type:B.literal(`error`),errorText:B.string()}),B.looseObject({type:B.literal(`tool-input-start`),toolCallId:B.string(),toolName:B.string(),providerExecuted:B.boolean().optional(),providerMetadata:V.optional(),toolMetadata:va.optional(),dynamic:B.boolean().optional(),title:B.string().optional()}),B.looseObject({type:B.literal(`tool-input-delta`),toolCallId:B.string(),inputTextDelta:B.string()}),B.looseObject({type:B.literal(`tool-input-available`),toolCallId:B.string(),toolName:B.string(),input:B.unknown(),providerExecuted:B.boolean().optional(),providerMetadata:V.optional(),toolMetadata:va.optional(),dynamic:B.boolean().optional(),title:B.string().optional()}),B.looseObject({type:B.literal(`tool-input-error`),toolCallId:B.string(),toolName:B.string(),input:B.unknown(),providerExecuted:B.boolean().optional(),providerMetadata:V.optional(),toolMetadata:va.optional(),dynamic:B.boolean().optional(),errorText:B.string(),title:B.string().optional()}),B.looseObject({type:B.literal(`tool-approval-request`),approvalId:B.string(),toolCallId:B.string(),approvalDescriptor:B.unknown().optional(),reason:B.string().optional(),isAutomatic:B.boolean().optional(),signature:B.string().optional()}),B.looseObject({type:B.literal(`tool-approval-response`),approvalId:B.string(),approved:B.boolean(),reason:B.string().optional(),providerExecuted:B.boolean().optional(),providerMetadata:V.optional()}),B.looseObject({type:B.literal(`tool-output-available`),toolCallId:B.string(),output:B.unknown(),providerExecuted:B.boolean().optional(),providerMetadata:V.optional(),toolMetadata:va.optional(),dynamic:B.boolean().optional(),preliminary:B.boolean().optional()}),B.looseObject({type:B.literal(`tool-output-error`),toolCallId:B.string(),errorText:B.string(),providerExecuted:B.boolean().optional(),providerMetadata:V.optional(),toolMetadata:va.optional(),dynamic:B.boolean().optional()}),B.looseObject({type:B.literal(`tool-output-denied`),toolCallId:B.string()}),B.looseObject({type:B.literal(`reasoning-start`),id:B.string(),providerMetadata:V.optional()}),B.looseObject({type:B.literal(`reasoning-delta`),id:B.string(),delta:B.string(),providerMetadata:V.optional()}),B.looseObject({type:B.literal(`reasoning-end`),id:B.string(),providerMetadata:V.optional()}),B.looseObject({type:B.literal(`custom`),kind:B.string().transform(e=>e),providerMetadata:V.optional()}),B.looseObject({type:B.literal(`source-url`),sourceId:B.string(),url:B.string(),title:B.string().optional(),providerMetadata:V.optional()}),B.looseObject({type:B.literal(`source-document`),sourceId:B.string(),mediaType:B.string(),title:B.string(),filename:B.string().optional(),providerMetadata:V.optional()}),B.looseObject({type:B.literal(`file`),url:B.string(),mediaType:B.string(),providerMetadata:V.optional()}),B.looseObject({type:B.literal(`reasoning-file`),url:B.string(),mediaType:B.string(),providerMetadata:V.optional()}),B.looseObject({type:B.custom(e=>typeof e==`string`&&e.startsWith(`data-`),{message:`Type must start with "data-"`}),id:B.string().optional(),data:B.unknown(),transient:B.boolean().optional()}),B.looseObject({type:B.literal(`start-step`)}),B.looseObject({type:B.literal(`finish-step`)}),B.looseObject({type:B.literal(`reset-step`)}),B.looseObject({type:B.literal(`start`),messageId:B.string().optional(),messageMetadata:B.unknown().optional()}),B.looseObject({type:B.literal(`finish`),finishReason:B.enum([`stop`,`length`,`content-filter`,`tool-calls`,`error`,`other`]).optional(),messageMetadata:B.unknown().optional()}),B.looseObject({type:B.literal(`abort`),reason:B.string().optional()}),B.looseObject({type:B.literal(`message-metadata`),messageMetadata:B.unknown()})])));function ba(e){return e.type.startsWith(`data-`)}function xa(){return Object.create(null)}function Sa(e){return e.type.startsWith(`tool-`)}function Ca(e){return e.type===`dynamic-tool`}function H(e){return Sa(e)||Ca(e)}function wa(e){return e.type.split(`-`).slice(1).join(`-`)}var Ta={type:`deprecated`,setting:`rawInput in output-error UI message parts`,message:`Use the "input" field instead. The "rawInput" field will be removed in the next major version.`};function Ea(e){e.some(e=>e.parts.some(e=>typeof e==`object`&&!!e&&`type`in e&&typeof e.type==`string`&&(e.type===`dynamic-tool`||e.type.startsWith(`tool-`))&&`state`in e&&e.state===`output-error`&&Object.prototype.hasOwnProperty.call(e,`rawInput`)&&`rawInput`in e&&e.rawInput!==void 0))&&Ii({warnings:[Ta]})}function Da({lastMessage:e,messageId:t}){return{message:e?.role===`assistant`?e:{id:t,metadata:void 0,role:`assistant`,parts:[]},activeTextParts:xa(),activeReasoningParts:xa(),partialToolCalls:xa()}}function Oa({stream:e,messageMetadataSchema:t,dataPartSchemas:n,runUpdateMessageJob:r,onError:i,onToolCall:a,onData:o}){return e.pipeThrough(new TransformStream({async transform(e,s){await r(async({state:r,write:c})=>{function l(){let e=r.message.parts,t=e.length-1;for(;t>=0&&e[t].type!==`step-start`;)t--;return e.slice(t+1)}function u(){return l().filter(H)}function d(e){let t=u().find(t=>t.toolCallId===e);if(t==null){let n=r.message.parts;for(let r=n.length-1;r>=0;r--){let i=n[r];if(H(i)&&i.toolCallId===e){t=i;break}}}if(t==null)throw new ji({chunkType:`tool-invocation`,chunkId:e,message:`No tool invocation found for tool call ID "${e}".`});return t}function f(e){let t=r.message.parts.filter(H).find(t=>t.approval?.id===e);if(t==null)throw new ji({chunkType:`tool-approval-response`,chunkId:e,message:`No tool invocation found for approval ID "${e}".`});return t}function p(e,t){let n=t??l().find(t=>Sa(t)&&t.toolCallId===e.toolCallId),i=e,a=n;if(n!=null){n.state=e.state,a.input=i.input,a.output=i.output,a.errorText=i.errorText,a.rawInput=i.rawInput,a.preliminary=i.preliminary,e.title!==void 0&&(a.title=e.title),e.toolMetadata!==void 0&&(a.toolMetadata=e.toolMetadata),a.providerExecuted=i.providerExecuted??n.providerExecuted;let t=i.providerMetadata;if(t!=null){if(e.state===`output-available`||e.state===`output-error`){let e=n;e.resultProviderMetadata=t}else n.callProviderMetadata=t}}else r.message.parts.push({type:`tool-${e.toolName}`,toolCallId:e.toolCallId,state:e.state,title:e.title,...e.toolMetadata===void 0?{}:{toolMetadata:e.toolMetadata},input:i.input,output:i.output,rawInput:i.rawInput,errorText:i.errorText,providerExecuted:i.providerExecuted,preliminary:i.preliminary,...i.providerMetadata!=null&&(e.state===`output-available`||e.state===`output-error`)?{resultProviderMetadata:i.providerMetadata}:{},...i.providerMetadata!=null&&e.state!==`output-available`&&e.state!==`output-error`?{callProviderMetadata:i.providerMetadata}:{}})}function m(e,t){let n=t??l().find(t=>t.type===`dynamic-tool`&&t.toolCallId===e.toolCallId),i=e,a=n;if(n!=null){n.state=e.state,a.toolName=e.toolName,a.input=i.input,a.output=i.output,a.errorText=i.errorText,a.rawInput=i.rawInput??a.rawInput,a.preliminary=i.preliminary,e.title!==void 0&&(a.title=e.title),e.toolMetadata!==void 0&&(a.toolMetadata=e.toolMetadata),a.providerExecuted=i.providerExecuted??n.providerExecuted;let t=i.providerMetadata;if(t!=null){if(e.state===`output-available`||e.state===`output-error`){let e=n;e.resultProviderMetadata=t}else n.callProviderMetadata=t}}else r.message.parts.push({type:`dynamic-tool`,toolName:e.toolName,toolCallId:e.toolCallId,state:e.state,input:i.input,output:i.output,errorText:i.errorText,preliminary:i.preliminary,providerExecuted:i.providerExecuted,title:e.title,...e.toolMetadata===void 0?{}:{toolMetadata:e.toolMetadata},...i.providerMetadata!=null&&(e.state===`output-available`||e.state===`output-error`)?{resultProviderMetadata:i.providerMetadata}:{},...i.providerMetadata!=null&&e.state!==`output-available`&&e.state!==`output-error`?{callProviderMetadata:i.providerMetadata}:{}})}async function h(e){if(e!=null){let n=r.message.metadata==null?e:Li(r.message.metadata,e);t!=null&&await ci({value:n,schema:t,context:{field:`message.metadata`,entityId:r.message.id}}),r.message.metadata=n}}switch(e.type){case`text-start`:{let t={type:`text`,text:``,providerMetadata:e.providerMetadata,state:`streaming`};r.activeTextParts[e.id]=t,r.message.parts.push(t),c();break}case`text-delta`:{let t=r.activeTextParts[e.id];if(t==null)throw new ji({chunkType:`text-delta`,chunkId:e.id,message:`Received text-delta for missing text part with ID "${e.id}". Ensure a "text-start" chunk is sent before any "text-delta" chunks.`});t.text+=e.delta,t.providerMetadata=e.providerMetadata??t.providerMetadata,c();break}case`text-end`:{let t=r.activeTextParts[e.id];if(t==null)throw new ji({chunkType:`text-end`,chunkId:e.id,message:`Received text-end for missing text part with ID "${e.id}". Ensure a "text-start" chunk is sent before any "text-end" chunks.`});t.state=`done`,t.providerMetadata=e.providerMetadata??t.providerMetadata,delete r.activeTextParts[e.id],c();break}case`custom`:{let t={type:`custom`,kind:e.kind,providerMetadata:e.providerMetadata};r.message.parts.push(t),c();break}case`reasoning-start`:{let t={type:`reasoning`,id:e.id,text:``,providerMetadata:e.providerMetadata,state:`streaming`};r.activeReasoningParts[e.id]=t,r.message.parts.push(t),c();break}case`reasoning-delta`:{let t=r.activeReasoningParts[e.id];if(t==null)throw new ji({chunkType:`reasoning-delta`,chunkId:e.id,message:`Received reasoning-delta for missing reasoning part with ID "${e.id}". Ensure a "reasoning-start" chunk is sent before any "reasoning-delta" chunks.`});t.text+=e.delta,t.providerMetadata=e.providerMetadata??t.providerMetadata,c();break}case`reasoning-end`:{let t=r.activeReasoningParts[e.id];if(t==null)throw new ji({chunkType:`reasoning-end`,chunkId:e.id,message:`Received reasoning-end for missing reasoning part with ID "${e.id}". Ensure a "reasoning-start" chunk is sent before any "reasoning-end" chunks.`});t.providerMetadata=e.providerMetadata??t.providerMetadata,t.state=`done`,delete r.activeReasoningParts[e.id],c();break}case`file`:case`reasoning-file`:r.message.parts.push({type:e.type,mediaType:e.mediaType,url:e.url,...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata}}),c();break;case`source-url`:r.message.parts.push({type:`source-url`,sourceId:e.sourceId,url:e.url,title:e.title,providerMetadata:e.providerMetadata}),c();break;case`source-document`:r.message.parts.push({type:`source-document`,sourceId:e.sourceId,mediaType:e.mediaType,title:e.title,filename:e.filename,providerMetadata:e.providerMetadata}),c();break;case`tool-input-start`:{let t=l().filter(Sa);r.partialToolCalls[e.toolCallId]={text:``,toolName:e.toolName,index:t.length,dynamic:e.dynamic,title:e.title,toolMetadata:e.toolMetadata},e.dynamic?m({toolCallId:e.toolCallId,toolName:e.toolName,state:`input-streaming`,input:void 0,providerExecuted:e.providerExecuted,title:e.title,toolMetadata:e.toolMetadata,providerMetadata:e.providerMetadata}):p({toolCallId:e.toolCallId,toolName:e.toolName,state:`input-streaming`,input:void 0,providerExecuted:e.providerExecuted,title:e.title,toolMetadata:e.toolMetadata,providerMetadata:e.providerMetadata}),c();break}case`tool-input-delta`:{let t=r.partialToolCalls[e.toolCallId];if(t==null)throw new ji({chunkType:`tool-input-delta`,chunkId:e.toolCallId,message:`Received tool-input-delta for missing tool call with ID "${e.toolCallId}". Ensure a "tool-input-start" chunk is sent before any "tool-input-delta" chunks.`});t.text+=e.inputTextDelta;let{value:n}=await oa(t.text);t.dynamic?m({toolCallId:e.toolCallId,toolName:t.toolName,state:`input-streaming`,input:n,title:t.title,toolMetadata:t.toolMetadata}):p({toolCallId:e.toolCallId,toolName:t.toolName,state:`input-streaming`,input:n,title:t.title,toolMetadata:t.toolMetadata}),c();break}case`tool-input-available`:e.dynamic?m({toolCallId:e.toolCallId,toolName:e.toolName,state:`input-available`,input:e.input,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,title:e.title,toolMetadata:e.toolMetadata}):p({toolCallId:e.toolCallId,toolName:e.toolName,state:`input-available`,input:e.input,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,title:e.title,toolMetadata:e.toolMetadata}),c(),a&&!e.providerExecuted&&await a({toolCall:e});break;case`tool-input-error`:{let t=l().filter(H).find(t=>t.toolCallId===e.toolCallId);(t==null?e.dynamic:t.type===`dynamic-tool`)?m({toolCallId:e.toolCallId,toolName:e.toolName,state:`output-error`,input:e.input,errorText:e.errorText,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,toolMetadata:e.toolMetadata}):(p({toolCallId:e.toolCallId,toolName:e.toolName,state:`output-error`,input:void 0,rawInput:e.input,errorText:e.errorText,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,toolMetadata:e.toolMetadata}),Ea([r.message])),c();break}case`tool-approval-request`:{let t=d(e.toolCallId);t.state=`approval-requested`,t.approval={id:e.approvalId,...e.approvalDescriptor==null?{}:{descriptor:e.approvalDescriptor},...e.reason==null?{}:{requestReason:e.reason},...e.isAutomatic===!0?{isAutomatic:!0}:{},...e.signature==null?{}:{signature:e.signature}},c();break}case`tool-approval-response`:{let t=f(e.approvalId),n=t.approval==null?{id:e.approvalId}:t.approval;t.state=`approval-responded`,t.approval={...n,id:e.approvalId,approved:e.approved,...e.reason==null?{}:{reason:e.reason}},e.providerExecuted!=null&&(t.providerExecuted=e.providerExecuted),e.providerMetadata!=null&&(t.callProviderMetadata=e.providerMetadata),c();break}case`tool-output-denied`:{let t=d(e.toolCallId);t.state=`output-denied`,c();break}case`tool-output-available`:{let t=d(e.toolCallId);t.type===`dynamic-tool`?m({toolCallId:e.toolCallId,toolName:t.toolName,state:`output-available`,input:t.input,output:e.output,preliminary:e.preliminary,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,title:t.title,toolMetadata:t.toolMetadata},t):p({toolCallId:e.toolCallId,toolName:wa(t),state:`output-available`,input:t.input,output:e.output,providerExecuted:e.providerExecuted,preliminary:e.preliminary,providerMetadata:e.providerMetadata,title:t.title,toolMetadata:t.toolMetadata},t),c();break}case`tool-output-error`:{let t=d(e.toolCallId);t.type===`dynamic-tool`?m({toolCallId:e.toolCallId,toolName:t.toolName,state:`output-error`,input:t.input,errorText:e.errorText,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,title:t.title,toolMetadata:t.toolMetadata},t):p({toolCallId:e.toolCallId,toolName:wa(t),state:`output-error`,input:t.input,rawInput:t.rawInput,errorText:e.errorText,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,title:t.title,toolMetadata:t.toolMetadata},t),c();break}case`start-step`:r.message.parts.push({type:`step-start`});break;case`finish-step`:break;case`reset-step`:{let e=l();r.activeTextParts=xa(),r.activeReasoningParts=xa(),r.partialToolCalls=xa(),e.length>0&&(r.message.parts.splice(r.message.parts.length-e.length,e.length),c());break}case`start`:e.messageId!=null&&(r.message.id=e.messageId),await h(e.messageMetadata),(e.messageId!=null||e.messageMetadata!=null)&&c({updateStatus:!1});break;case`finish`:e.finishReason!=null&&(r.finishReason=e.finishReason),await h(e.messageMetadata),e.messageMetadata!=null&&c();break;case`message-metadata`:await h(e.messageMetadata),e.messageMetadata!=null&&c();break;case`error`:i?.(Error(e.errorText));break;default:if(ba(e)){if(n?.[e.type]!=null){let t=r.message.parts.findIndex(t=>`id`in t&&`data`in t&&t.id===e.id&&t.type===e.type),i=t>=0?t:r.message.parts.length;await ci({value:e.data,schema:n[e.type],context:{field:`message.parts[${i}].data`,entityName:e.type,entityId:e.id}})}let t=e;if(t.transient){o?.(t);break}let i=t.id==null?void 0:r.message.parts.find(e=>t.type===e.type&&t.id===e.id);i==null?r.message.parts.push(t):i.data=t.data,o?.(t),c()}}s.enqueue(e)})}}))}async function ka({stream:e,onError:t,abortSignal:n}){let r=e.getReader(),i=()=>{r.cancel().catch(()=>{})};n?.aborted?i():n?.addEventListener(`abort`,i,{once:!0});try{for(;;){let{done:e}=await r.read();if(e)break}}catch(e){t?.(e)}finally{n?.removeEventListener(`abort`,i),r.releaseLock()}}N({prefix:`aitxt`,size:24}),N({prefix:`call`,size:24}),N({prefix:`aitxt`,size:24}),N({prefix:`call`,size:24});var U=B.record(B.string(),Ri.optional()),Aa=B.record(B.string(),B.string());function ja(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&Object.keys(e).length===0}function Ma(e){let{type:t,...n}=e;return{...n,type:`dynamic-tool`,toolName:t.slice(5)}}var Na=Qr(()=>si(B.array(B.object({id:B.string(),role:B.enum([`system`,`user`,`assistant`]),metadata:B.unknown().optional(),parts:B.array(B.union([B.object({type:B.literal(`text`),text:B.string(),state:B.enum([`streaming`,`done`]).optional(),providerMetadata:V.optional()}),B.object({type:B.literal(`reasoning`),id:B.string().optional(),text:B.string(),state:B.enum([`streaming`,`done`]).optional(),providerMetadata:V.optional()}),B.object({type:B.literal(`custom`),kind:B.string(),providerMetadata:V.optional()}),B.object({type:B.literal(`source-url`),sourceId:B.string(),url:B.string(),title:B.string().optional(),providerMetadata:V.optional()}),B.object({type:B.literal(`source-document`),sourceId:B.string(),mediaType:B.string(),title:B.string(),filename:B.string().optional(),providerMetadata:V.optional()}),B.object({type:B.literal(`file`),mediaType:B.string(),filename:B.string().optional(),url:B.string(),providerReference:Aa.optional(),providerMetadata:V.optional()}),B.object({type:B.literal(`reasoning-file`),mediaType:B.string(),url:B.string(),providerMetadata:V.optional()}),B.object({type:B.literal(`step-start`)}),B.object({type:B.string().startsWith(`data-`),id:B.string().optional(),data:B.unknown()}),B.object({type:B.literal(`dynamic-tool`),toolName:B.string(),toolCallId:B.string(),title:B.string().optional(),toolMetadata:U.optional(),state:B.literal(`input-streaming`),input:B.unknown().optional(),providerExecuted:B.boolean().optional(),callProviderMetadata:V.optional(),output:B.never().optional(),errorText:B.never().optional(),approval:B.never().optional()}),B.object({type:B.literal(`dynamic-tool`),toolName:B.string(),toolCallId:B.string(),title:B.string().optional(),toolMetadata:U.optional(),state:B.literal(`input-available`),input:B.unknown(),providerExecuted:B.boolean().optional(),output:B.never().optional(),errorText:B.never().optional(),callProviderMetadata:V.optional(),approval:B.never().optional()}),B.object({type:B.literal(`dynamic-tool`),toolName:B.string(),toolCallId:B.string(),title:B.string().optional(),toolMetadata:U.optional(),state:B.literal(`approval-requested`),input:B.unknown(),providerExecuted:B.boolean().optional(),output:B.never().optional(),errorText:B.never().optional(),callProviderMetadata:V.optional(),approval:B.object({id:B.string(),approved:B.never().optional(),descriptor:B.unknown().optional(),requestReason:B.string().optional(),reason:B.never().optional(),isAutomatic:B.boolean().optional(),signature:B.string().optional()})}),B.object({type:B.literal(`dynamic-tool`),toolName:B.string(),toolCallId:B.string(),title:B.string().optional(),toolMetadata:U.optional(),state:B.literal(`approval-responded`),input:B.unknown(),providerExecuted:B.boolean().optional(),output:B.never().optional(),errorText:B.never().optional(),callProviderMetadata:V.optional(),approval:B.object({id:B.string(),approved:B.boolean(),descriptor:B.unknown().optional(),requestReason:B.string().optional(),reason:B.string().optional(),isAutomatic:B.boolean().optional(),signature:B.string().optional()})}),B.object({type:B.literal(`dynamic-tool`),toolName:B.string(),toolCallId:B.string(),title:B.string().optional(),toolMetadata:U.optional(),state:B.literal(`output-available`),input:B.unknown(),providerExecuted:B.boolean().optional(),output:B.unknown(),errorText:B.never().optional(),callProviderMetadata:V.optional(),resultProviderMetadata:V.optional(),preliminary:B.boolean().optional(),approval:B.object({id:B.string(),approved:B.literal(!0),descriptor:B.unknown().optional(),requestReason:B.string().optional(),reason:B.string().optional(),isAutomatic:B.boolean().optional(),signature:B.string().optional()}).optional()}),B.object({type:B.literal(`dynamic-tool`),toolName:B.string(),toolCallId:B.string(),title:B.string().optional(),toolMetadata:U.optional(),state:B.literal(`output-error`),input:B.unknown().optional(),rawInput:B.unknown().optional(),providerExecuted:B.boolean().optional(),output:B.never().optional(),errorText:B.string(),callProviderMetadata:V.optional(),resultProviderMetadata:V.optional(),approval:B.object({id:B.string(),approved:B.literal(!0),descriptor:B.unknown().optional(),requestReason:B.string().optional(),reason:B.string().optional(),isAutomatic:B.boolean().optional(),signature:B.string().optional()}).optional()}),B.object({type:B.literal(`dynamic-tool`),toolName:B.string(),toolCallId:B.string(),title:B.string().optional(),toolMetadata:U.optional(),state:B.literal(`output-denied`),input:B.unknown(),providerExecuted:B.boolean().optional(),output:B.never().optional(),errorText:B.never().optional(),callProviderMetadata:V.optional(),approval:B.object({id:B.string(),approved:B.literal(!1),descriptor:B.unknown().optional(),requestReason:B.string().optional(),reason:B.string().optional(),isAutomatic:B.boolean().optional(),signature:B.string().optional()})}),B.object({type:B.string().startsWith(`tool-`),toolCallId:B.string(),title:B.string().optional(),toolMetadata:U.optional(),state:B.literal(`input-streaming`),providerExecuted:B.boolean().optional(),callProviderMetadata:V.optional(),input:B.unknown().optional(),output:B.never().optional(),errorText:B.never().optional(),approval:B.never().optional()}),B.object({type:B.string().startsWith(`tool-`),toolCallId:B.string(),title:B.string().optional(),toolMetadata:U.optional(),state:B.literal(`input-available`),providerExecuted:B.boolean().optional(),input:B.unknown(),output:B.never().optional(),errorText:B.never().optional(),callProviderMetadata:V.optional(),approval:B.never().optional()}),B.object({type:B.string().startsWith(`tool-`),toolCallId:B.string(),title:B.string().optional(),toolMetadata:U.optional(),state:B.literal(`approval-requested`),input:B.unknown(),providerExecuted:B.boolean().optional(),output:B.never().optional(),errorText:B.never().optional(),callProviderMetadata:V.optional(),approval:B.object({id:B.string(),approved:B.never().optional(),descriptor:B.unknown().optional(),requestReason:B.string().optional(),reason:B.never().optional(),isAutomatic:B.boolean().optional(),signature:B.string().optional()})}),B.object({type:B.string().startsWith(`tool-`),toolCallId:B.string(),title:B.string().optional(),toolMetadata:U.optional(),state:B.literal(`approval-responded`),input:B.unknown(),providerExecuted:B.boolean().optional(),output:B.never().optional(),errorText:B.never().optional(),callProviderMetadata:V.optional(),approval:B.object({id:B.string(),approved:B.boolean(),descriptor:B.unknown().optional(),requestReason:B.string().optional(),reason:B.string().optional(),isAutomatic:B.boolean().optional(),signature:B.string().optional()})}),B.object({type:B.string().startsWith(`tool-`),toolCallId:B.string(),title:B.string().optional(),toolMetadata:U.optional(),state:B.literal(`output-available`),providerExecuted:B.boolean().optional(),input:B.unknown(),output:B.unknown(),errorText:B.never().optional(),callProviderMetadata:V.optional(),resultProviderMetadata:V.optional(),preliminary:B.boolean().optional(),approval:B.object({id:B.string(),approved:B.literal(!0),descriptor:B.unknown().optional(),requestReason:B.string().optional(),reason:B.string().optional(),isAutomatic:B.boolean().optional(),signature:B.string().optional()}).optional()}),B.object({type:B.string().startsWith(`tool-`),toolCallId:B.string(),title:B.string().optional(),toolMetadata:U.optional(),state:B.literal(`output-error`),providerExecuted:B.boolean().optional(),input:B.unknown().optional(),rawInput:B.unknown().optional(),output:B.never().optional(),errorText:B.string(),callProviderMetadata:V.optional(),resultProviderMetadata:V.optional(),approval:B.object({id:B.string(),approved:B.literal(!0),descriptor:B.unknown().optional(),requestReason:B.string().optional(),reason:B.string().optional(),isAutomatic:B.boolean().optional(),signature:B.string().optional()}).optional()}),B.object({type:B.string().startsWith(`tool-`),toolCallId:B.string(),title:B.string().optional(),toolMetadata:U.optional(),state:B.literal(`output-denied`),providerExecuted:B.boolean().optional(),input:B.unknown(),output:B.never().optional(),errorText:B.never().optional(),callProviderMetadata:V.optional(),approval:B.object({id:B.string(),approved:B.literal(!1),descriptor:B.unknown().optional(),requestReason:B.string().optional(),reason:B.string().optional(),isAutomatic:B.boolean().optional(),signature:B.string().optional()})})]))}).superRefine((e,t)=>{e.role!==`assistant`&&e.parts.length===0&&t.addIssue({origin:`array`,code:`too_small`,minimum:1,inclusive:!0,input:e.parts,path:[`parts`],message:`Message must contain at least one part`})})).nonempty(`Messages array must not be empty`)));async function Pa({messages:e,metadataSchema:t,dataSchemas:n,tools:r},{convertMissingTerminalToolsToDynamic:i}){try{if(e==null)return{success:!1,error:new bi({parameter:`messages`,value:e,message:`messages parameter must be provided`})};let a=await ci({value:e,schema:Na});if(Ea(a),t)for(let[e,n]of a.entries())await ci({value:n.metadata,schema:t,context:{field:`messages[${e}].metadata`,entityId:n.id}});let o=r!=null||i;if(n||o)for(let[e,t]of a.entries())for(let[a,s]of t.parts.entries()){if(n&&s.type.startsWith(`data-`)){let t=s,r=t.type.slice(5),i=n[r];if(!i)return{success:!1,error:new M({value:t.data,cause:`No data schema found for data part ${r}`,context:{field:`messages[${e}].parts[${a}].data`,entityName:r,entityId:t.id}})};await ci({value:t.data,schema:i,context:{field:`messages[${e}].parts[${a}].data`,entityName:r,entityId:t.id}})}if(o&&s.type.startsWith(`tool-`)){let n=s,o=n.type.slice(5),c=r==null?void 0:ia(r,o),l=n.state===`output-available`||n.state===`output-error`||n.state===`output-denied`;if(!c&&l){(r!=null||i)&&(t.parts[a]=Ma(n));continue}if(!c)return{success:!1,error:new M({value:n.input,cause:`No tool schema found for tool part ${o}`,context:{field:`messages[${e}].parts[${a}].input`,entityName:o,entityId:n.toolCallId}})};let u={field:`messages[${e}].parts[${a}].input`,entityName:o,entityId:n.toolCallId},d=!1;if(n.state===`output-error`)n.input!==void 0&&(d=!(await li({value:n.input,schema:c.inputSchema,context:u})).success);else if(n.state===`output-available`){let e=await li({value:n.input,schema:c.inputSchema,context:u});if(!e.success){if(ja(n.input))d=!0;else throw e.error}}else(n.state===`input-available`||n.state===`approval-requested`||n.state===`approval-responded`||n.state===`output-denied`)&&await ci({value:n.input,schema:c.inputSchema,context:u});n.state===`output-available`&&c.outputSchema&&await ci({value:n.output,schema:c.outputSchema,context:{field:`messages[${e}].parts[${a}].output`,entityName:o,entityId:n.toolCallId}}),d&&(t.parts[a]=Ma(n))}}return{success:!0,data:a}}catch(e){return{success:!1,error:e}}}async function Fa(e){return Pa(e,{convertMissingTerminalToolsToDynamic:!1})}N({prefix:`call`,size:24}),N({prefix:`call`,size:24}),new TextEncoder,N({prefix:`aiobj`,size:24});var{atob:Ia}=globalThis,La=class{constructor(){this.queue=[],this.isProcessing=!1}async processQueue(){if(!this.isProcessing){for(this.isProcessing=!0;this.queue.length>0;)await this.queue[0](),this.queue.shift();this.isProcessing=!1}}async run(e){return new Promise((t,n)=>{this.queue.push(async()=>{try{await e(),t()}catch(e){n(e)}}),this.processQueue()})}};N({prefix:`aiobj`,size:24}),B.object({token:B.string().refine(e=>e.trim().length>0),url:B.string().refine(e=>{try{let t=new URL(e);return(t.protocol===`ws:`||t.protocol===`wss:`)&&t.hostname!==``}catch{return!1}}),expiresAt:B.number().positive().max(2**53-1).optional(),tools:B.array(B.object({type:B.literal(`function`),name:B.string().min(1),description:B.string().optional(),parameters:B.record(B.string(),B.unknown())})).optional()}),N({prefix:`call`,size:24});async function Ra({response:e,url:t,fallbackMessage:n}){let r=await e.text();return new rn({message:r||n,url:t,requestBodyValues:void 0,statusCode:e.status,responseBody:r})}async function za(e){if(e==null)return[];if(!globalThis.FileList||!(e instanceof globalThis.FileList))throw new Pn({functionality:`FileList`,message:`FileList is not supported in the current environment`});return Promise.all(Array.from(e).map(async e=>{let{name:t,type:n}=e;return{type:`file`,mediaType:n,filename:t,url:await new Promise((t,n)=>{let r=new FileReader;r.onload=e=>{t(e.target?.result)},r.onerror=e=>n(e),r.readAsDataURL(e)})}}))}function Ba(e,t){let n=e.search(/[?#]/);return n===-1?`${e}${t}`:`${e.slice(0,n)}${t}${e.slice(n)}`}var Va=class{constructor({api:e=`/api/chat`,credentials:t,headers:n,body:r,fetch:i,prepareSendMessagesRequest:a,prepareReconnectToStreamRequest:o}){this.api=e,this.credentials=t,this.headers=n,this.body=r,this.fetch=i,this.prepareSendMessagesRequest=a,this.prepareReconnectToStreamRequest=o}async sendMessages({abortSignal:e,...t}){let n=await fi(this.body),r=await fi(this.headers),i=await fi(this.credentials),a={...Kn(r),...Kn(t.headers)},o=await this.prepareSendMessagesRequest?.call(this,{api:this.api,id:t.chatId,messages:t.messages,body:{...n,...t.body},headers:a,credentials:i,requestMetadata:t.metadata,trigger:t.trigger,messageId:t.messageId}),s=o?.api??this.api,c=o?.headers===void 0?a:Kn(o.headers),l=o?.body===void 0?{...n,...t.body,id:t.chatId,messages:t.messages,trigger:t.trigger,messageId:t.messageId}:o.body,u=o?.credentials??i,d=await(this.fetch??globalThis.fetch)(s,{method:`POST`,headers:{"content-type":`application/json`,...c},body:JSON.stringify(l),credentials:u,signal:e});if(!d.ok)throw await Ra({response:d,url:s,fallbackMessage:`Failed to fetch the chat response.`});if(!d.body)throw new un({message:`The response body is empty.`});return this.processResponseStream(d.body)}async reconnectToStream(e){let t=await fi(this.body),n=await fi(this.headers),r=await fi(this.credentials),i={...Kn(n),...Kn(e.headers)},a=await this.prepareReconnectToStreamRequest?.call(this,{api:this.api,id:e.chatId,body:{...t,...e.body},headers:i,credentials:r,requestMetadata:e.metadata}),o=a?.api??Ba(this.api,`/${e.chatId}/stream`),s=a?.headers===void 0?i:Kn(a.headers),c=a?.credentials??r,l=await(this.fetch??globalThis.fetch)(o,{method:`GET`,headers:s,credentials:c,signal:e.abortSignal});if(l.status===204)return null;if(!l.ok)throw await Ra({response:l,url:o,fallbackMessage:`Failed to fetch the chat response.`});if(!l.body)throw new un({message:`The response body is empty.`});return this.processResponseStream(l.body)}},Ha=class extends Va{constructor(e={}){super(e)}processResponseStream(e){return di({stream:e,schema:ya}).pipeThrough(new TransformStream({async transform(e,t){if(!e.success)throw e.error;t.enqueue(e.value)}}))}},Ua=class{constructor({generateId:e=qn,id:t=e(),transport:n=new Ha,messageMetadataSchema:r,dataPartSchemas:i,state:a,onError:o,onToolCall:s,onFinish:c,onData:l,sendAutomaticallyWhen:u}){this.pendingMessagePreparations=new Set,this.activeResponse=void 0,this.activeResumeRequest=void 0,this.jobExecutor=new La,this.sendMessage=async(e,t)=>{if(e==null){await this.makeRequest({trigger:`submit-message`,messageId:this.lastMessage?.id,...t});return}let n;if(`text`in e||`files`in e){let t=new AbortController;this.pendingMessagePreparations.add(t);let r;try{r=Array.isArray(e.files)?e.files:await za(e.files)}finally{this.pendingMessagePreparations.delete(t)}if(t.signal.aborted)return;n={parts:[...r,...`text`in e&&e.text!=null?[{type:`text`,text:e.text}]:[]]}}else n=e;if(e.messageId!=null){let t=this.state.messages.findIndex(t=>t.id===e.messageId);if(t===-1)throw new bi({parameter:`message.messageId`,value:e.messageId,message:`message with id ${e.messageId} not found`});if(this.state.messages[t].role!==`user`)throw new bi({parameter:`message.messageId`,value:e.messageId,message:`message with id ${e.messageId} is not a user message`});this.state.messages=this.state.messages.slice(0,t+1),this.state.replaceMessage(t,{id:e.messageId,...n,role:n.role??`user`,metadata:e.metadata})}else this.state.pushMessage({...n,id:n.id??this.generateId(),role:n.role??`user`,metadata:e.metadata});await this.makeRequest({trigger:`submit-message`,messageId:e.messageId,...t})},this.regenerate=async({messageId:e,...t}={})=>{let n=e==null?this.state.messages.length-1:this.state.messages.findIndex(t=>t.id===e);if(n===-1)throw new bi({parameter:`messageId`,value:e,message:`message ${e} not found`});this.state.messages=this.state.messages.slice(0,this.messages[n].role===`assistant`?n:n+1),await this.makeRequest({trigger:`regenerate-message`,messageId:e,...t})},this.resumeStream=async(e={})=>{await this.makeRequest({trigger:`resume-stream`,...e})},this.clearError=()=>{this.status===`error`&&(this.state.error=void 0,this.setStatus({status:`ready`}))},this.addToolApprovalResponse=async({id:e,approved:t,reason:n,options:r})=>this.jobExecutor.run(async()=>{let i=this.state.messages,a=i[i.length-1],o=r=>H(r)&&r.state===`approval-requested`&&r.approval.id===e?{...r,state:`approval-responded`,approval:{...r.approval,id:e,approved:t,reason:n}}:r;this.state.replaceMessage(i.length-1,{...a,parts:a.parts.map(o)}),this.activeResponse&&(this.activeResponse.state.message.parts=this.activeResponse.state.message.parts.map(o)),this.status!==`streaming`&&this.status!==`submitted`&&this.sendAutomaticallyWhen&&this.shouldSendAutomatically().then(e=>{e&&this.makeRequest({trigger:`submit-message`,messageId:this.lastMessage?.id,...r})})}),this.addToolOutput=async({state:e=`output-available`,toolCallId:t,output:n,errorText:r,options:i})=>this.jobExecutor.run(async()=>{let a=this.state.messages,o=a[a.length-1],s=i=>H(i)&&i.toolCallId===t?{...i,state:e,output:n,errorText:r}:i;this.state.replaceMessage(a.length-1,{...o,parts:o.parts.map(s)}),this.activeResponse&&(this.activeResponse.state.message.parts=this.activeResponse.state.message.parts.map(s)),this.status!==`streaming`&&this.status!==`submitted`&&this.sendAutomaticallyWhen&&this.shouldSendAutomatically().then(e=>{e&&this.makeRequest({trigger:`submit-message`,messageId:this.lastMessage?.id,...i})})}),this.addToolResult=this.addToolOutput,this.stop=async()=>{var e,t;for(let e of this.pendingMessagePreparations)e.abort();(e=this.activeResumeRequest)==null||e.abortController.abort(),(t=this.activeResponse)==null||t.abortController.abort()},this.id=t,this.transport=n,this.generateId=e,this.messageMetadataSchema=r,this.dataPartSchemas=i,this.state=a,this.onError=o,this.onToolCall=s,this.onFinish=c,this.onData=l,this.sendAutomaticallyWhen=u}get status(){return this.state.status}setStatus({status:e,error:t}){this.status!==e&&(this.state.status=e,this.state.error=t)}get error(){return this.state.error}get messages(){return this.state.messages}get lastMessage(){return this.state.messages[this.state.messages.length-1]}set messages(e){this.state.messages=e}async shouldSendAutomatically(){if(!this.sendAutomaticallyWhen)return!1;let e=this.sendAutomaticallyWhen({messages:this.state.messages});return e&&typeof e==`object`&&`then`in e?await e:e}async makeRequest({trigger:e,metadata:t,headers:n,body:r,messageId:i}){var a,o;let s=new AbortController,c=e===`resume-stream`?{abortController:s}:void 0;c&&((a=this.activeResumeRequest)==null||a.abortController.abort(),this.activeResumeRequest=c);let l=()=>c==null||this.activeResumeRequest===c,u=()=>{this.activeResumeRequest===c&&(this.activeResumeRequest=void 0)},d;if(e===`resume-stream`)try{let e=await this.transport.reconnectToStream({chatId:this.id,abortSignal:s.signal,metadata:t,headers:n,body:r});if(s.signal.aborted||!l()){await e?.cancel().catch(()=>{}),l()&&this.setStatus({status:`ready`}),u();return}if(e==null){this.setStatus({status:`ready`}),u();return}d=e}catch(e){if(s.signal.aborted||e.name===`AbortError`){l()&&this.setStatus({status:`ready`}),u();return}if(!l())return;this.onError&&e instanceof Error&&this.onError(e),this.setStatus({status:`error`,error:e}),u();return}this.setStatus({status:`submitted`,error:void 0});let f=this.lastMessage,p=!1,m=!1,h=!1,g;try{let a={state:Da({lastMessage:e===`resume-stream`||e===`regenerate-message`?void 0:this.state.snapshot(f),messageId:this.generateId()}),abortController:s};g=a,a.abortController.signal.addEventListener(`abort`,()=>{p=!0}),this.activeResponse=a;let o;if(o=e===`resume-stream`?d:await this.transport.sendMessages({chatId:this.id,messages:this.state.messages,abortSignal:a.abortController.signal,metadata:t,headers:n,body:r,trigger:e,messageId:i}),await ka({stream:Oa({stream:o,onToolCall:this.onToolCall,onData:this.onData,messageMetadataSchema:this.messageMetadataSchema,dataPartSchemas:this.dataPartSchemas,runUpdateMessageJob:e=>this.jobExecutor.run(()=>a.abortController.signal.aborted?Promise.resolve():e({state:a.state,write:({updateStatus:e=!0}={})=>{a.abortController.signal.aborted||(e&&this.setStatus({status:`streaming`}),a.state.message.id===this.lastMessage?.id?this.state.replaceMessage(this.state.messages.length-1,a.state.message):this.state.pushMessage(a.state.message))}})),onError:e=>{throw e}}),abortSignal:a.abortController.signal,onError:e=>{throw e}}),p)return l()&&this.setStatus({status:`ready`}),null;l()&&this.setStatus({status:`ready`})}catch(e){if(p||e.name===`AbortError`)return p=!0,l()&&this.setStatus({status:`ready`}),null;if(!l())return null;h=!0,e instanceof TypeError&&(e.message.toLowerCase().includes(`fetch`)||e.message.toLowerCase().includes(`network`))&&(m=!0),this.onError&&e instanceof Error&&this.onError(e),this.setStatus({status:`error`,error:e})}finally{try{g&&((o=this.onFinish)==null||o.call(this,{message:g.state.message,messages:this.state.messages,isAbort:p,isDisconnect:m,isError:h,finishReason:g.state.finishReason}))}finally{this.activeResponse===g&&(this.activeResponse=void 0),u()}}!h&&await this.shouldSendAutomatically()&&await this.makeRequest({trigger:`submit-message`,messageId:this.lastMessage?.id,metadata:t,headers:n,body:r})}};function Wa({messages:e}){let t=e[e.length-1];if(!t||t.role!==`assistant`)return!1;let n=t.parts.reduce((e,t,n)=>t.type===`step-start`?n:e,-1),r=t.parts.slice(n+1).filter(H);return r.filter(e=>e.state===`approval-responded`).length>0&&r.every(e=>e.state===`output-available`&&e.preliminary!==!0||e.state===`output-error`||e.state===`output-denied`||e.state===`approval-responded`)}function Ga({messages:e}){let t=e[e.length-1];if(!t||t.role!==`assistant`)return!1;let n=t.parts.reduce((e,t,n)=>t.type===`step-start`?n:e,-1),r=t.parts.slice(n+1).filter(H).filter(e=>!e.providerExecuted);return r.length>0&&r.every(e=>e.state===`output-available`&&e.preliminary!==!0||e.state===`output-error`)}var Ka=t(((e,t)=>{function n(e,t){if(typeof e!=`function`)throw TypeError(`Expected the first argument to be a \`function\`, got \`${typeof e}\`.`);let n,r=0;return function(...i){clearTimeout(n);let a=Date.now(),o=t-(a-r);o<=0?(r=a,e.apply(this,i)):n=setTimeout(()=>{r=Date.now(),e.apply(this,i)},o)}}t.exports=n})),W=e(l(),1),qa=e(Ka(),1),G=Me(),Ja=(e,t,n)=>{if(!t.has(e))throw TypeError(`Cannot `+n)},K=(e,t,n)=>(Ja(e,t,`read from private field`),n?n.call(e):t.get(e)),q=(e,t,n)=>{if(t.has(e))throw TypeError(`Cannot add the same private member more than once`);t instanceof WeakSet?t.add(e):t.set(e,n)},Ya=(e,t,n,r)=>(Ja(e,t,`write to private field`),r?r.call(e,n):t.set(e,n),n);function Xa(e,t){return t==null?e:(0,qa.default)(e,t)}function Za(e){return Array.isArray(e)?[...e]:typeof e==`object`&&e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null)?{...e}:e}var J,Qa,$a,eo,to,no,ro,io,ao,oo=class{constructor(e=[]){q(this,J,void 0),q(this,Qa,`ready`),q(this,$a,void 0),q(this,eo,new Set),q(this,to,new Set),q(this,no,new Set),this.pushMessage=e=>{Ya(this,J,K(this,J).concat(e)),K(this,ro).call(this)},this.popMessage=()=>{Ya(this,J,K(this,J).slice(0,-1)),K(this,ro).call(this)},this.replaceMessage=(e,t)=>{Ya(this,J,[...K(this,J).slice(0,e),this.snapshot(t),...K(this,J).slice(e+1)]),K(this,ro).call(this)},this.snapshot=e=>{if(typeof e!=`object`||!e||!(`parts`in e)||!Array.isArray(e.parts))return e;let t=e,n={...t,parts:t.parts.map(e=>({...e}))};return`metadata`in t&&(n.metadata=Za(t.metadata)),n},this[`~registerMessagesCallback`]=(e,t)=>{let n=t?Xa(e,t):e;return K(this,eo).add(n),()=>{K(this,eo).delete(n)}},this[`~registerStatusCallback`]=e=>(K(this,to).add(e),()=>{K(this,to).delete(e)}),this[`~registerErrorCallback`]=e=>(K(this,no).add(e),()=>{K(this,no).delete(e)}),q(this,ro,()=>{K(this,eo).forEach(e=>e())}),q(this,io,()=>{K(this,to).forEach(e=>e())}),q(this,ao,()=>{K(this,no).forEach(e=>e())}),Ya(this,J,e)}get status(){return K(this,Qa)}set status(e){Ya(this,Qa,e),K(this,io).call(this)}get error(){return K(this,$a)}set error(e){Ya(this,$a,e),K(this,ao).call(this)}get messages(){return K(this,J)}set messages(e){Ya(this,J,[...e]),K(this,ro).call(this)}};J=new WeakMap,Qa=new WeakMap,$a=new WeakMap,eo=new WeakMap,to=new WeakMap,no=new WeakMap,ro=new WeakMap,io=new WeakMap,ao=new WeakMap;var so,co=class extends Ua{constructor({messages:e,...t}){let n=new oo(e);super({...t,state:n}),q(this,so,void 0),this[`~registerMessagesCallback`]=(e,t)=>K(this,so)[`~registerMessagesCallback`](e,t),this[`~registerStatusCallback`]=e=>K(this,so)[`~registerStatusCallback`](e),this[`~registerErrorCallback`]=e=>K(this,so)[`~registerErrorCallback`](e),Ya(this,so,n)}};so=new WeakMap;function lo({throttle:e,experimental_throttle:t,resume:n=!1,...r}={}){let i=e??t,a=(0,W.useRef)({});`chat`in r||(a.current={onToolCall:r.onToolCall,onData:r.onData,onFinish:r.onFinish,onError:r.onError,sendAutomaticallyWhen:r.sendAutomaticallyWhen,transport:r.transport});let o,s=()=>a.current.transport??(o??=new Ha),c={...r,transport:{sendMessages:e=>s().sendMessages(e),reconnectToStream:e=>s().reconnectToStream(e)},onToolCall:e=>{var t;return(t=a.current).onToolCall?.call(t,e)},onData:e=>{var t;return(t=a.current).onData?.call(t,e)},onFinish:e=>{var t;return(t=a.current).onFinish?.call(t,e)},onError:e=>{var t;return(t=a.current).onError?.call(t,e)},sendAutomaticallyWhen:e=>{var t;return(t=a.current).sendAutomaticallyWhen?.call(t,e)??!1}},l=`chat`in r?r.chat:r.id,{chat:u,isExternallyManaged:d}=(0,W.useMemo)(()=>({chat:`chat`in r?r.chat:new co(c),isExternallyManaged:`chat`in r}),[l]);(0,W.useEffect)(()=>{if(!d)return()=>{u.stop()}},[u,d]);let f=(0,W.useMemo)(()=>({messages:u.messages}),[u]),p=(0,W.useCallback)(e=>{let t=!0,n=u[`~registerMessagesCallback`](()=>{t&&(f.messages=u.messages,e())},i);return f.messages=u.messages,()=>{t=!1,n()}},[u,f,i]),m=(0,W.useCallback)(()=>f.messages,[f]),h=(0,W.useSyncExternalStore)(p,m,m),g=(0,W.useCallback)(e=>u[`~registerStatusCallback`](()=>{(u.status===`ready`||u.status===`error`)&&(f.messages=u.messages),e()}),[u,f]),_=(0,W.useCallback)(()=>u.status,[u]),v=(0,W.useSyncExternalStore)(g,_,_),y=(0,W.useSyncExternalStore)(u[`~registerErrorCallback`],()=>u.error,()=>u.error),b=(0,W.useCallback)(e=>{typeof e==`function`&&(e=e(u.messages)),u.messages=e},[u]);return(0,W.useEffect)(()=>{n&&u.resumeStream()},[n,u]),{id:u.id,messages:h,setMessages:b,sendMessage:u.sendMessage,regenerate:u.regenerate,clearError:u.clearError,stop:u.stop,error:y,resumeStream:u.resumeStream,status:v,addToolResult:u.addToolOutput,addToolOutput:u.addToolOutput,addToolApprovalResponse:u.addToolApprovalResponse}}function uo(e){return ht.define({combine:t=>t[0]??e})}var fo=uo({}),po=gt.define(),mo=gt.define(),ho=50,go=dt.define({create(){return{prompts:[],navigationIndex:-1,originalText:``}},update(e,t){let n={...e};t.docChanged&&e.navigationIndex!==-1&&(t.effects.some(e=>e.is(mo)||e.is(po))||(n.navigationIndex=-1,n.originalText=``));for(let r of t.effects)if(r.is(po)){let i=r.value.trim();i&&(n.prompts=[i,...e.prompts.filter(e=>e!==i)].slice(0,ho),t.state.facet(fo).save?.(n.prompts)),n.navigationIndex=-1,n.originalText=``}else r.is(mo)&&(n.navigationIndex=r.value.index,n.originalText=r.value.originalText);return n}}),_o=e=>{let t=e.state.field(go),n=e.state.doc;if(t.prompts.length===0)return!1;let r,i=t.originalText;if(t.navigationIndex===-1){if(n.length>0)return!1;r=0,i=n.toString()}else if(r=Math.min(t.navigationIndex+1,t.prompts.length-1),r===t.navigationIndex)return!1;let a=t.prompts[r];return e.dispatch({changes:{from:0,to:e.state.doc.length,insert:a},effects:mo.of({index:r,originalText:i})}),!0},vo=e=>{let t=e.state.field(go);if(t.navigationIndex===-1)return!1;let n,r;return t.navigationIndex===0?(n=t.originalText,r=-1):(r=t.navigationIndex-1,n=t.prompts[r]??``),e.dispatch({changes:{from:0,to:e.state.doc.length,insert:n},effects:mo.of({index:r,originalText:t.originalText})}),!0},yo=e=>{let t=e.state.doc.toString();return t.trim()?(e.dispatch({effects:po.of(t)}),!0):!1};function bo(e={}){let{storage:t,defaultKeymap:n=!0}=e,r=[go.init(()=>({prompts:t?.load?.()??[],navigationIndex:-1,originalText:``})),fo.of(t??{})];return n&&r.push(ft.of([{key:`ArrowUp`,run:_o},{key:`ArrowDown`,run:vo}])),r}var Y=class extends Error{code;isRetryable;suggestedFix;meta;constructor(e,{code:t=`TOOL_ERROR`,isRetryable:n=!1,suggestedFix:r,meta:i}={}){super(e),this.name=`ToolExecutionError`,this.code=t,this.isRetryable=n,this.suggestedFix=r,this.meta=i}toStructuredString(){let e=JSON.stringify({message:this.message,code:this.code,is_retryable:this.isRetryable,...this.suggestedFix&&{suggested_fix:this.suggestedFix},...this.meta&&{meta:this.meta}});return`Error invoking tool ${this.name}: ${e}`}},xo=O({status:be([`success`,`error`,`warning`]).optional(),auth_required:se().optional(),next_steps:me(D()).optional(),action_url:D().optional(),message:D().optional(),meta:le(D(),Ce()).optional()}),So=`cell-completion`,Co=`notebook-cells-completion`,wo=`data-${So}`,To=`data-${Co}`,Eo=O({code:D()}),Do=O({language:be([`python`,`sql`,`markdown`]),code:D().min(1)}),Oo=O({cells:me(Do).min(1)});function ko(e){return e.type.startsWith(`data-`)}var X=a(null),Ao=a(e=>e(X)?.status===`in_progress`),{valueAtom:Z,useActions:jo,createActions:Mo,reducer:No}=Ct(()=>new Map,{addStagedCell:(e,t)=>{let{cellId:n,edit:r}=t;return new Map([...e,[n,r]])},removeStagedCell:(e,t)=>{if(!e.has(t))return e;let n=new Map(e);return n.delete(t),n}});function Po(e){let t=(0,A.c)(2),n;return t[0]===e?n=t[1]:(n=Oe(Z,t=>t.get(e),Object.is),t[0]=e,t[1]=n),o(n)}function Fo(e){let t=(0,A.c)(15),{addStagedCell:n,removeStagedCell:r}=jo(),{createNewCell:i,updateCellCode:a}=d(),o=tt(),s;t[0]!==n||t[1]!==i?(s=e=>{let t=ae.create();return n({cellId:t,edit:{type:`add_cell`}}),i({cellId:`__end__`,code:e,before:!1,newCellId:t}),t},t[0]=n,t[1]=i,t[2]=s):s=t[2];let c=s,l;t[3]!==e||t[4]!==a?(l=t=>{let{cellId:n,code:r}=t;if(!e.get(Z).has(n)){k.error(`Staged cell not found`,{cellId:n});return}let i=te(n);i?ne(i,r):a({cellId:n,code:r,formattingChange:!1})},t[3]=e,t[4]=a,t[5]=l):l=t[5];let u=l,f;t[6]!==o||t[7]!==r?(f=e=>{r(e),o({cellId:e})},t[6]=o,t[7]=r,t[8]=f):f=t[8];let p=f,m;return t[9]!==n||t[10]!==c||t[11]!==p||t[12]!==r||t[13]!==u?(m={createStagedCell:c,updateStagedCell:u,addStagedCell:n,removeStagedCell:r,deleteStagedCell:p},t[9]=n,t[10]=c,t[11]=p,t[12]=r,t[13]=u,t[14]=m):m=t[14],m}function Io(e){let t=(0,A.c)(30),n=Fo(e),{createNewCell:r}=d(),i=(0,W.useRef)(null),a;t[0]===e?a=t[1]:(a={store:e},t[0]=e,t[1]=a),o(X,a);let s;t[2]===e?s=t[3]:(s={store:e},t[2]=e,t[3]=s),o(Z,s);let c;t[4]!==n||t[5]!==e?(c=t=>{let r=e.get(Z);for(let e of t.toReversed())r.has(e)&&n.deleteStagedCell(e)},t[4]=n,t[5]=e,t[6]=c):c=t[6];let l=c,u;t[7]!==r||t[8]!==l||t[9]!==n||t[10]!==e?(u=()=>{let t=e.get(X);t?.status===`in_progress`&&l(t.cellIds),i.current?.reconciler.discard(e.get(Z));let a=Symbol(`staged-cell-generation`);i.current={id:a,status:`in_progress`,reconciler:new Lo({...n,createNewCell:r})},e.set(X,{id:a,status:`in_progress`,cellIds:[]})},t[7]=r,t[8]=l,t[9]=n,t[10]=e,t[11]=u):u=t[11];let f=u,p;t[12]===e?p=t[13]:(p=t=>{let n=i.current;if(n?.status!==`in_progress`)return;let r=e.get(X),a=r?.id===n.id&&r.status===`in_progress`;if(!a||!t){n.reconciler.discard(e.get(Z)),a&&e.set(X,null),i.current=null;return}n.status=`complete`,e.set(X,{id:n.id,status:`complete`})},t[12]=e,t[13]=p);let m=p,h;t[14]===e?h=t[15]:(h=()=>{let t=i.current,n=e.get(X);return t!==null&&t.status===`complete`&&n?.status===`complete`&&n.id===t.id&&t.reconciler.hasStagedCells(e.get(Z))},t[14]=e,t[15]=h);let g=h,_;t[16]!==g||t[17]!==e?(_=()=>g()?(i.current?.reconciler.accept(),e.set(X,null),i.current=null,!0):!1,t[16]=g,t[17]=e,t[18]=_):_=t[18];let v=_,y;t[19]===e?y=t[20]:(y=()=>{let t=i.current,n=e.get(X);return t===null||n?.id!==t.id?!1:(t.reconciler.discard(e.get(Z)),e.set(X,null),i.current=null,!0)},t[19]=e,t[20]=y);let b=y,x;t[21]===e?x=t[22]:(x=t=>{if(t.type!==To)return;let n=i.current,r=e.get(X);if(n?.status!==`in_progress`||r?.id!==n.id||r.status!==`in_progress`)return;let a=Oo.parse(t.data);n.reconciler.reconcile(a.cells),e.set(X,{...r,cellIds:n.reconciler.stagedCellIds()})},t[21]=e,t[22]=x);let S=x,C;return t[23]!==v||t[24]!==f||t[25]!==b||t[26]!==m||t[27]!==g||t[28]!==S?(C={beginStagedCellGeneration:f,finishStagedCellGeneration:m,hasOwnedStagedCells:g,acceptOwnedStagedCells:v,discardOwnedStagedCells:b,onData:S},t[23]=v,t[24]=f,t[25]=b,t[26]=m,t[27]=g,t[28]=S,t[29]=C):C=t[29],C}var Lo=class{createdCells=[];actions;marimoImportCellId=null;constructor(e){this.actions=e}reconcile(e){for(let[t,n]of e.entries())if(t<this.createdCells.length){let e=this.createdCells[t],r=e.code!==n.code;if(this.createdCells[t]={...e,code:n.code},!r)continue;this.actions.updateStagedCell({cellId:e.cellId,code:n.code})}else{let e=this.actions.createStagedCell(n.code);this.createdCells.push({cellId:e,code:n.code})}let t=this.createdCells.splice(e.length);for(let{cellId:e}of t.toReversed())this.actions.deleteStagedCell(e);this.syncMarimoImport(e)}discard(e){for(let{cellId:t}of this.createdCells.toReversed())e.has(t)&&this.actions.deleteStagedCell(t);this.createdCells=[],this.marimoImportCellId&&e.has(this.marimoImportCellId)&&this.actions.deleteStagedCell(this.marimoImportCellId),this.marimoImportCellId=null}accept(){for(let e of this.stagedCellIds())this.actions.removeStagedCell(e)}hasStagedCells(e){return this.stagedCellIds().some(t=>e.has(t))}stagedCellIds(){let e=this.createdCells.map(({cellId:e})=>e);return this.marimoImportCellId&&e.push(this.marimoImportCellId),e}syncMarimoImport(e){if(!e.some(e=>e.language!==`python`)){this.marimoImportCellId&&=(this.actions.deleteStagedCell(this.marimoImportCellId),null);return}if(this.marimoImportCellId)return;let t=u({autoInstantiate:!1,createNewCell:this.actions.createNewCell,fromCellId:this.createdCells[0]?.cellId,before:!0});t&&(this.actions.addStagedCell({cellId:t,edit:{type:`add_cell`}}),this.marimoImportCellId=t)}},Ro={baseDescription:`Perform editing operations on the current notebook. You should prefer to create new cells unless you need to edit existing cells. Call this tool multiple times to perform multiple edits. Separate code into logical individual cells to take advantage of the notebook's reactive execution model.`,prerequisites:[`If you are updating existing cells, you need the cellIds. If they are not known, call the lightweight_cell_map_tool to find out.`],additionalInfo:`
21
21
  Args:
22
22
  edit (object): The editing operation to perform with the following structure:
23
23
  - type: One of "update_cell", "add_cell", or "delete_cell"
@@ -41,12 +41,12 @@ ${t}`,d++;break;case`id`:l=t.includes(`\0`)?void 0:t;break;case`retry`:/^\d+$/.t
41
41
  - SQL cells: use mo.sql(f"""{content}""") function to insert content. If a database engine is specified, use mo.sql(f"""{content}""", engine=engine) instead.
42
42
 
43
43
  Returns:
44
- - A result object containing standard tool metadata.`},zo=O({edit:O({type:be([`update_cell`,`add_cell`,`delete_cell`]),code:D().optional(),position:O({type:be([`relative`,`column_end`,`notebook_end`]).optional(),cellId:D().optional(),columnIndex:de().optional(),before:se().optional()})})}),Bo=class{name=`edit_notebook_tool`;description=Ro;schema=zo;outputSchema=xo;mode=[`agent`];handler=async({edit:e},t)=>{let{addStagedCell:n,createNewCell:r,store:i}=t;switch(e.type){case`update_cell`:{let{position:t,code:r}=e,a=t.cellId;if(!a)throw new Y(`Cell ID is required for update_cell`,`CELL_ID_REQUIRED_FOR_UPDATE_CELL`,!0,`Provide a cell ID to update`);if(!r)throw new Y(`Code is required for update_cell`,`CODE_REQUIRED_FOR_UPDATE_CELL`,!0,`Provide the new code to update the cell`);let o=i.get(S);this.validateCellIdExists(a,o);let s=this.getCellEditorView(a,o);Rt(a);let c=i.get(Z).get(a);if(c?.type===`add_cell`){ne(s,r);break}let l=s.state.doc.toString(),u=c?.previousCode??l;if(r===u)break;n({cellId:a,edit:{type:`update_cell`,previousCode:u}}),ne(s,r);break}case`add_cell`:{let{position:t,code:a}=e,o=`__end__`,s=!1,c=ae.create(),l=i.get(S);switch(t.type){case`relative`:{let e=t.cellId;if(!e)throw new Y(`Cell ID is required for add_cell with relative position`,`TOOL_ERROR`,!0,`Provide a cell ID to add the cell before`);if(t.before===void 0)throw new Y(`Before is required for add_cell with relative position`,`TOOL_ERROR`,!0,`Provide a boolean value for before, true to add before cell ${e}, false to add after the cell`);this.validateCellIdExists(e,l),o=e,s=t.before;break}case`column_end`:if(!t.columnIndex)throw new Y(`Column index is required for add_cell with column_end position`,`TOOL_ERROR`,!0,`Provide a column index to add the cell at the end of`);o={type:`__end__`,columnId:this.getColumnId(t.columnIndex,l)}}r({cellId:o,before:s,code:a,newCellId:c}),n({cellId:c,edit:{type:`add_cell`}}),Rt(c);break}case`delete_cell`:{let{position:t}=e,r=t.cellId;if(!r)throw new Y(`Cell ID is required for delete_cell`,`CELL_ID_REQUIRED_FOR_DELETE_CELL`,!0,`Provide a cell ID to delete`);let a=i.get(S);this.validateCellIdExists(r,a),n({cellId:r,edit:{type:`delete_cell`,previousCode:this.getCellEditorView(r,a).state.doc.toString()}}),Rt(r);break}}return{status:`success`,next_steps:[`If you need to perform more edits, call this tool again.`,`You should use the lint notebook tool to check for errors and lint issues. Fix them by editing the notebook.`,`You should use the run stale cells tool to run the cells that have been edited or newly added. This allows you to see the output of the cells and fix any errors.`]}};validateCellIdExists(e,t){if(!t.cellIds.getColumns().some(t=>t.idSet.has(e)))throw new Y(`Cell not found`,`CELL_NOT_FOUND`,!1,`Check which cells exist in the notebook`)}getColumnId(e,t){let n=t.cellIds.getColumns();if(e<0||e>=n.length)throw new Y(`Column index is out of range`,`COLUMN_INDEX_OUT_OF_RANGE`,!0,`Choose a column index between 0 and the number of columns in the notebook (0-based)`);return n[e].id}getCellEditorView(e,t){let n=t.cellHandles[e].current;if(!n?.editorView)throw new Y(`Cell editor not found`,`CELL_EDITOR_NOT_FOUND`,!1,`Internal error, ask the user to report this error`);return n.editorView}};function Vo(e,t){return e?!!([`image/`,`video/`,`audio/`,`application/pdf`].some(t=>e.startsWith(t))||[`svg`,`vega`].some(t=>e.includes(t))||e===`text/html`&&[`<img`,`<video`,`<audio`,`<iframe`,`<canvas`,`<svg`,`<marimo-ui-element`].some(e=>t.includes(e))):!1}var Ho=class extends ct{title=`Cell Outputs`;mentionPrefix=`@`;contextType=`cell-output`;store;constructor(e){super(),this.store=e}getItems(){let e=this.store.get(S),t=[];for(let n of e.cellIds.inOrderIds){let r=Go(n,e),i=r.cellOutput;if(!i)continue;let a=i.output.mimetype||`unknown`;t.push({uri:this.asURI(n),name:r.cellName,type:this.contextType,description:`Cell output (${a})`,data:{...r,cellOutput:i}})}return t}formatCompletion(e){let{cellOutput:t,cellName:n,cellCode:r}=e.data;return{label:`@${n}`,displayLabel:n,detail:`${t.outputType} output`,boost:t.outputType===`media`?at.HIGH:at.MEDIUM,type:this.contextType,section:rt.CELL_OUTPUT,apply:`@${n}`,info:()=>{let e=document.createElement(`div`);e.classList.add(`mo-cm-tooltip`,`docs-documentation`,`min-w-[300px]`,`max-w-[500px]`,`flex`,`flex-col`,`gap-2`);let i=document.createElement(`div`);i.classList.add(`flex`,`flex-col`,`gap-1`);let a=document.createElement(`div`);a.classList.add(`font-bold`,`text-base`),a.textContent=n,i.append(a);let o=document.createElement(`div`);if(o.classList.add(`text-sm`,`text-muted-foreground`),i.append(o),e.append(i),r){let t=document.createElement(`div`);t.classList.add(`text-xs`,`font-medium`,`text-muted-foreground`),t.textContent=`Code:`,e.append(t);let n=document.createElement(`div`);n.classList.add(`text-xs`,`font-mono`,`bg-muted`,`p-2`,`rounded`,`max-h-20`,`overflow-y-auto`),n.textContent=r.slice(0,200)+(r.length>200?`...`:``),e.append(n)}if(t.processedContent){let n=document.createElement(`div`);n.classList.add(`text-xs`,`font-medium`,`text-muted-foreground`,`mt-2`),n.textContent=`Output Preview:`,e.append(n);let r=document.createElement(`div`);r.classList.add(`text-xs`,`bg-muted`,`p-2`,`rounded`,`max-h-24`,`overflow-y-auto`,`mb-2`),r.textContent=t.processedContent.slice(0,300)+(t.processedContent.length>300?`...`:``),e.append(r)}if(t.outputType===`media`){let t=document.createElement(`div`);t.classList.add(`text-xs`,`text-muted-foreground`,`italic`,`mb-2`),t.textContent=`A screenshot of the output will be attached`,e.append(t)}return e}}}formatContext(e){let{cellOutput:t,cellName:n,cellId:r,cellCode:i}=e.data,a={name:n,cellId:r,outputType:t.outputType,mimetype:t.output.mimetype},o=`Cell Code:\n${i}\n\n`;return t.outputType===`text`&&t.processedContent?o+=`Output:\n${t.processedContent}`:t.outputType===`media`&&(o+=`Media Output: Contains ${t.output.mimetype} content`,t.imageUrl&&(o+=`\nImage URL: ${t.imageUrl}`)),st({type:this.contextType,data:a,details:o})}async getAttachments(e){let t=e[0].data.cellId,n=e[0].data.cellName;return Uo(e.map(e=>e.data.cellOutput),t,n)}};async function Uo(e,t,n){let r=e.filter(e=>e.shouldDownloadImage&&e.outputType===`media`);if(r.length===0)return[];let i=r.flatMap(e=>{let r=document.getElementById(C.create(t));return r?{cellId:t,cellName:n,mimetype:e.output.mimetype,element:r}:(k.warn(`Output element not found for cell ${t}`),[])});try{return await Promise.all(i.map(async e=>({type:`file`,filename:`${n}-output-screenshot`,mediaType:`image/png`,url:await zt(e.element)})))}catch(e){return k.error(`Error downloading cell output images:`,e),[]}}function Wo(e){if(Xe(e))return null;let t=e.mimetype,n=Vo(t,String(e.data))?`media`:`text`,r=Wt(e),i,a=!1;return n===`media`&&(typeof e.data==`string`&&e.data.startsWith(`data:`)||typeof e.data==`string`&&e.data.startsWith(`http`)?i=e.data:a=!0),{processedContent:r,imageUrl:i,shouldDownloadImage:a,outputType:n,output:e}}function Go(e,t,n){let{includeConsoleOutput:r=!1}=n||{},i=t.cellRuntime[e],a=t.cellData[e],o=t.cellIds.inOrderIds.indexOf(e),s=m(a.name,o),c;r&&(c=i.consoleOutputs.map(e=>Wo(e)).filter(e=>e!==null));let l,u=i.output;return u&&!Xe(u)&&(l=Wo(u)??void 0),{cellId:e,cellName:s,cellCode:a.code,cellOutput:l,consoleOutputs:c}}var Ko=200,qo=3e4,Jo=2e3,Yo=3e3,Xo=4e4,Zo={baseDescription:`Run cells in the current notebook that are stale. Stale cells are cells that have been edited or newly added. You can run this tool after editing the notebook or when requested. The output of the ran cells will be returned alongside metadata.`},Qo=O({type:fe(`file`),url:D(),mediaType:D()}),$o=class{name=`run_stale_cells_tool`;description=Zo;schema=O({});outputSchema=xo.extend({cellsToOutput:le(D(),O({consoleOutput:D().optional(),cellOutput:D().optional(),consoleAttachments:me(Qo).optional(),cellAttachments:me(Qo).optional()}).nullable()).optional()});mode=[`agent`];postExecutionDelay;constructor(e){this.postExecutionDelay=e?.postExecutionDelay??Ko}handler=async(e,t)=>{let{prepareForRun:n,sendRun:r,store:i}=t,a=i.get(S),o=ee(a);if(o.length===0)return{status:`success`,message:`No stale cells found.`};if(await Mt({cellIds:o,sendRun:r,prepareForRun:n,notebook:a}),!await this.waitForCellsToFinish(i,o,qo,this.postExecutionDelay))return{status:`success`,message:`No output was returned because some cells have not finished executing`};let s=i.get(S),c=new Map,l=!1,u=!1,d=0;for(let e of o){let t=Go(e,s,{includeConsoleOutput:!0}),n=t.cellOutput,r=t.consoleOutputs,i=r&&r.length>0;if((n&&this.outputHasErrors(n)||i&&r.some(e=>this.outputHasErrors(e)))&&(l=!0),!n&&!i){c.set(e,null);continue}if(d>=Xo){c.set(e,{cellOutput:`Cell executed (output omitted due to context limits).`});continue}let a,o;n&&(a=this.formatOutputString(n),d+=a.length),i&&(u=!0,o=r.map(e=>this.formatOutputString(e)).join(`
44
+ - A result object containing standard tool metadata.`},zo=O({edit:O({type:be([`update_cell`,`add_cell`,`delete_cell`]),code:D().optional(),position:O({type:be([`relative`,`column_end`,`notebook_end`]).optional(),cellId:D().optional(),columnIndex:de().optional(),before:se().optional()})})}),Bo=class{name=`edit_notebook_tool`;description=Ro;schema=zo;outputSchema=xo;mode=[`agent`];handler=async({edit:e},t)=>{let{addStagedCell:n,createNewCell:r,store:i}=t;switch(e.type){case`update_cell`:{let{position:t,code:r}=e,a=t.cellId;if(!a)throw new Y(`Cell ID is required for update_cell`,{code:`CELL_ID_REQUIRED_FOR_UPDATE_CELL`,isRetryable:!0,suggestedFix:`Provide a cell ID to update`});if(!r)throw new Y(`Code is required for update_cell`,{code:`CODE_REQUIRED_FOR_UPDATE_CELL`,isRetryable:!0,suggestedFix:`Provide the new code to update the cell`});let o=i.get(S);this.validateCellIdExists(a,o);let s=this.getCellEditorView(a,o);Rt(a);let c=i.get(Z).get(a);if(c?.type===`add_cell`){ne(s,r);break}let l=s.state.doc.toString(),u=c?.previousCode??l;if(r===u)break;n({cellId:a,edit:{type:`update_cell`,previousCode:u}}),ne(s,r);break}case`add_cell`:{let{position:t,code:a}=e,o=`__end__`,s=!1,c=ae.create(),l=i.get(S);switch(t.type){case`relative`:{let e=t.cellId;if(!e)throw new Y(`Cell ID is required for add_cell with relative position`,{code:`TOOL_ERROR`,isRetryable:!0,suggestedFix:`Provide a cell ID to add the cell before`});if(t.before===void 0)throw new Y(`Before is required for add_cell with relative position`,{code:`TOOL_ERROR`,isRetryable:!0,suggestedFix:`Provide a boolean value for before, true to add before cell ${e}, false to add after the cell`});this.validateCellIdExists(e,l),o=e,s=t.before;break}case`column_end`:if(!t.columnIndex)throw new Y(`Column index is required for add_cell with column_end position`,{code:`TOOL_ERROR`,isRetryable:!0,suggestedFix:`Provide a column index to add the cell at the end of`});o={type:`__end__`,columnId:this.getColumnId(t.columnIndex,l)}}r({cellId:o,before:s,code:a,newCellId:c}),n({cellId:c,edit:{type:`add_cell`}}),Rt(c);break}case`delete_cell`:{let{position:t}=e,r=t.cellId;if(!r)throw new Y(`Cell ID is required for delete_cell`,{code:`CELL_ID_REQUIRED_FOR_DELETE_CELL`,isRetryable:!0,suggestedFix:`Provide a cell ID to delete`});let a=i.get(S);this.validateCellIdExists(r,a),n({cellId:r,edit:{type:`delete_cell`,previousCode:this.getCellEditorView(r,a).state.doc.toString()}}),Rt(r);break}}return{status:`success`,next_steps:[`If you need to perform more edits, call this tool again.`,`You should use the lint notebook tool to check for errors and lint issues. Fix them by editing the notebook.`,`You should use the run stale cells tool to run the cells that have been edited or newly added. This allows you to see the output of the cells and fix any errors.`]}};validateCellIdExists(e,t){if(!t.cellIds.getColumns().some(t=>t.idSet.has(e)))throw new Y(`Cell not found`,{code:`CELL_NOT_FOUND`,isRetryable:!1,suggestedFix:`Check which cells exist in the notebook`})}getColumnId(e,t){let n=t.cellIds.getColumns();if(e<0||e>=n.length)throw new Y(`Column index is out of range`,{code:`COLUMN_INDEX_OUT_OF_RANGE`,isRetryable:!0,suggestedFix:`Choose a column index between 0 and the number of columns in the notebook (0-based)`});return n[e].id}getCellEditorView(e,t){let n=t.cellHandles[e].current;if(!n?.editorView)throw new Y(`Cell editor not found`,{code:`CELL_EDITOR_NOT_FOUND`,isRetryable:!1,suggestedFix:`Internal error, ask the user to report this error`});return n.editorView}};function Vo(e,t){return e?!!([`image/`,`video/`,`audio/`,`application/pdf`].some(t=>e.startsWith(t))||[`svg`,`vega`].some(t=>e.includes(t))||e===`text/html`&&[`<img`,`<video`,`<audio`,`<iframe`,`<canvas`,`<svg`,`<marimo-ui-element`].some(e=>t.includes(e))):!1}var Ho=class extends ct{title=`Cell Outputs`;mentionPrefix=`@`;contextType=`cell-output`;store;constructor(e){super(),this.store=e}getItems(){let e=this.store.get(S),t=[];for(let n of e.cellIds.inOrderIds){let r=Go(n,e),i=r.cellOutput;if(!i)continue;let a=i.output.mimetype||`unknown`;t.push({uri:this.asURI(n),name:r.cellName,type:this.contextType,description:`Cell output (${a})`,data:{...r,cellOutput:i}})}return t}formatCompletion(e){let{cellOutput:t,cellName:n,cellCode:r}=e.data;return{label:`@${n}`,displayLabel:n,detail:`${t.outputType} output`,boost:t.outputType===`media`?at.HIGH:at.MEDIUM,type:this.contextType,section:rt.CELL_OUTPUT,apply:`@${n}`,info:()=>{let e=document.createElement(`div`);e.classList.add(`mo-cm-tooltip`,`docs-documentation`,`min-w-[300px]`,`max-w-[500px]`,`flex`,`flex-col`,`gap-2`);let i=document.createElement(`div`);i.classList.add(`flex`,`flex-col`,`gap-1`);let a=document.createElement(`div`);a.classList.add(`font-bold`,`text-base`),a.textContent=n,i.append(a);let o=document.createElement(`div`);if(o.classList.add(`text-sm`,`text-muted-foreground`),i.append(o),e.append(i),r){let t=document.createElement(`div`);t.classList.add(`text-xs`,`font-medium`,`text-muted-foreground`),t.textContent=`Code:`,e.append(t);let n=document.createElement(`div`);n.classList.add(`text-xs`,`font-mono`,`bg-muted`,`p-2`,`rounded`,`max-h-20`,`overflow-y-auto`),n.textContent=r.slice(0,200)+(r.length>200?`...`:``),e.append(n)}if(t.processedContent){let n=document.createElement(`div`);n.classList.add(`text-xs`,`font-medium`,`text-muted-foreground`,`mt-2`),n.textContent=`Output Preview:`,e.append(n);let r=document.createElement(`div`);r.classList.add(`text-xs`,`bg-muted`,`p-2`,`rounded`,`max-h-24`,`overflow-y-auto`,`mb-2`),r.textContent=t.processedContent.slice(0,300)+(t.processedContent.length>300?`...`:``),e.append(r)}if(t.outputType===`media`){let t=document.createElement(`div`);t.classList.add(`text-xs`,`text-muted-foreground`,`italic`,`mb-2`),t.textContent=`A screenshot of the output will be attached`,e.append(t)}return e}}}formatContext(e){let{cellOutput:t,cellName:n,cellId:r,cellCode:i}=e.data,a={name:n,cellId:r,outputType:t.outputType,mimetype:t.output.mimetype},o=`Cell Code:\n${i}\n\n`;return t.outputType===`text`&&t.processedContent?o+=`Output:\n${t.processedContent}`:t.outputType===`media`&&(o+=`Media Output: Contains ${t.output.mimetype} content`,t.imageUrl&&(o+=`\nImage URL: ${t.imageUrl}`)),st({type:this.contextType,data:a,details:o})}async getAttachments(e){let t=e[0].data.cellId,n=e[0].data.cellName;return Uo(e.map(e=>e.data.cellOutput),t,n)}};async function Uo(e,t,n){let r=e.filter(e=>e.shouldDownloadImage&&e.outputType===`media`);if(r.length===0)return[];let i=r.flatMap(e=>{let r=document.getElementById(C.create(t));return r?{cellId:t,cellName:n,mimetype:e.output.mimetype,element:r}:(k.warn(`Output element not found for cell ${t}`),[])});try{return await Promise.all(i.map(async e=>({type:`file`,filename:`${n}-output-screenshot`,mediaType:`image/png`,url:await zt(e.element)})))}catch(e){return k.error(`Error downloading cell output images:`,e),[]}}function Wo(e){if(Xe(e))return null;let t=e.mimetype,n=Vo(t,String(e.data))?`media`:`text`,r=Wt(e),i,a=!1;return n===`media`&&(typeof e.data==`string`&&e.data.startsWith(`data:`)||typeof e.data==`string`&&e.data.startsWith(`http`)?i=e.data:a=!0),{processedContent:r,imageUrl:i,shouldDownloadImage:a,outputType:n,output:e}}function Go(e,t,n){let{includeConsoleOutput:r=!1}=n||{},i=t.cellRuntime[e],a=t.cellData[e],o=t.cellIds.inOrderIds.indexOf(e),s=m(a.name,o),c;r&&(c=i.consoleOutputs.map(e=>Wo(e)).filter(e=>e!==null));let l,u=i.output;return u&&!Xe(u)&&(l=Wo(u)??void 0),{cellId:e,cellName:s,cellCode:a.code,cellOutput:l,consoleOutputs:c}}var Ko=200,qo=3e4,Jo=2e3,Yo=3e3,Xo=4e4,Zo={baseDescription:`Run cells in the current notebook that are stale. Stale cells are cells that have been edited or newly added. You can run this tool after editing the notebook or when requested. The output of the ran cells will be returned alongside metadata.`},Qo=O({type:fe(`file`),url:D(),mediaType:D()}),$o=class{name=`run_stale_cells_tool`;description=Zo;schema=O({});outputSchema=xo.extend({cellsToOutput:le(D(),O({consoleOutput:D().optional(),cellOutput:D().optional(),consoleAttachments:me(Qo).optional(),cellAttachments:me(Qo).optional()}).nullable()).optional()});mode=[`agent`];postExecutionDelay;constructor(e){this.postExecutionDelay=e?.postExecutionDelay??Ko}handler=async(e,t)=>{let{prepareForRun:n,sendRun:r,store:i}=t,a=i.get(S),o=ee(a);if(o.length===0)return{status:`success`,message:`No stale cells found.`};if(await Mt({cellIds:o,sendRun:r,prepareForRun:n,notebook:a}),!await this.waitForCellsToFinish(i,o,qo,this.postExecutionDelay))return{status:`success`,message:`No output was returned because some cells have not finished executing`};let s=i.get(S),c=new Map,l=!1,u=!1,d=0;for(let e of o){let t=Go(e,s,{includeConsoleOutput:!0}),n=t.cellOutput,r=t.consoleOutputs,i=r&&r.length>0;if((n&&this.outputHasErrors(n)||i&&r.some(e=>this.outputHasErrors(e)))&&(l=!0),!n&&!i){c.set(e,null);continue}if(d>=Xo){c.set(e,{cellOutput:`Cell executed (output omitted due to context limits).`});continue}let a,o;n&&(a=this.formatOutputString(n),d+=a.length),i&&(u=!0,o=r.map(e=>this.formatOutputString(e)).join(`
45
45
  `),o=this.truncateString(o,Jo),d+=o.length),c.set(e,{cellOutput:a,consoleOutput:o})}if(c.size===0)return{status:`success`,message:`Stale cells have been run. No output was returned.`};let f=[`Review the output of the cells. The CellId is the key of the result object.`,l?`There are errors in the cells. Please fix them by using the edit notebook tool and the given CellIds.`:`You may edit the notebook further with the given CellIds.`];return{status:`success`,cellsToOutput:Object.fromEntries(c),message:u?`Console output represents the stdout or stderr of the cell (eg. print statements).`:void 0,next_steps:f}};outputHasErrors(e){return e.output.mimetype===`application/vnd.marimo+error`||e.output.mimetype===`application/vnd.marimo+traceback`}formatOutputString(e){let{outputType:t,processedContent:n,imageUrl:r,output:i}=e;if(t===`media`){let e=`Media Output: Contains ${i.mimetype} content`;return r?`${e}\nImage URL: ${r}`:e}if(i.mimetype===`text/html`)return`HTML Output: text/html content (${(typeof i.data==`string`?i.data.length:JSON.stringify(i.data).length).toLocaleString()} chars). Full output visible in notebook UI.`;let a=this.outputHasErrors(e)?Yo:Jo,o=n;return o||=typeof i.data==`string`?i.data:JSON.stringify(i.data),`Output:\n${this.truncateString(o,a)}`}truncateString(e,t){return e.length<=t?e:`${e.slice(0,t)}\n\n[TRUNCATED: ${e.length.toLocaleString()} → ${t.toLocaleString()} chars. Full output visible in the notebook UI.]`}async waitForCellsToFinish(e,t,r,i){let a=e=>t.every(t=>{let n=e.cellRuntime[t];return n?.status!==`running`&&n?.status!==`queued`}),o=async()=>(i>0&&await new Promise(e=>setTimeout(e,i)),!0);if(a(e.get(S)))return await o();try{return await Promise.race([n(S,a),new Promise((e,t)=>setTimeout(()=>t(Error(`timeout`)),r))]),await o()}catch{return!1}}};function es(e){let t=e.baseDescription;return e.whenToUse&&(t+=`\n\n## When to use:\n- ${e.whenToUse.join(`
46
46
  - `)}`),e.avoidIf&&(t+=`\n\n## Avoid if:\n- ${e.avoidIf.join(`
47
47
  - `)}`),e.prerequisites&&(t+=`\n\n## Prerequisites:\n- ${e.prerequisites.join(`
48
48
  - `)}`),e.sideEffects&&(t+=`\n\n## Side effects:\n- ${e.sideEffects.join(`
49
- - `)}`),e.additionalInfo&&(t+=`\n\n## Additional info:\n- ${e.additionalInfo}`),t}var ts=class{tools=new Map;constructor(e=[]){this.tools=new Map(e.map(e=>[e.name,e]))}has(e){return this.tools.has(e)}getToolOrThrow(e){let t=this.tools.get(e);if(!t)throw Error(`Tool ${e} not found`);return t}async invoke({toolName:e,rawArgs:t,toolContext:n}){let r=this.getToolOrThrow(e),i=r.handler,a=r.schema,o=r.outputSchema;try{let r=await a.safeParseAsync(t);if(r.error)throw new Y(`Tool ${e} returned invalid input: ${ye(r.error)}`,`INVALID_ARGUMENTS`,!0,`Please check the arguments and try again.`);let s=r.data,c=await i(s,n),l=await o.safeParseAsync(c);if(l.error){let t=ye(l.error);throw Error(`Tool ${e} returned invalid output: ${t}`)}return{tool_name:e,result:l.data,error:null}}catch(n){return n instanceof Y?{tool_name:e,result:null,error:n.toStructuredString()}:{tool_name:e,result:null,error:new Y(n instanceof Error?n.message:String(n),`TOOL_ERROR`,!1,`Check the error message and try again with valid arguments.`,{args:t,errorType:n?.constructor?.name??typeof n}).toStructuredString()}}}getToolSchemas(e){return[...this.tools.values()].filter(t=>t.mode.includes(e)).map(e=>({name:e.name,description:es(e.description),parameters:ue(e.schema),source:`frontend`,mode:e.mode}))}};T([v()],ts.prototype,`getToolSchemas`,null);var ns=new ts([new Bo,new $o]);function rs(e,t){let n=[`Code:\n${e.cellCode}`];if(e.tracebackHtml&&n.push(`Traceback:\n${y(e.tracebackHtml)}`),e.errorData.length>0&&n.push(e.errorData.map(e=>It(e)).join(`
49
+ - `)}`),e.additionalInfo&&(t+=`\n\n## Additional info:\n- ${e.additionalInfo}`),t}var ts=class{tools=new Map;constructor(e=[]){this.tools=new Map(e.map(e=>[e.name,e]))}has(e){return this.tools.has(e)}getToolOrThrow(e){let t=this.tools.get(e);if(!t)throw Error(`Tool ${e} not found`);return t}async invoke({toolName:e,rawArgs:t,toolContext:n}){let r=this.getToolOrThrow(e),i=r.handler,a=r.schema,o=r.outputSchema;try{let r=await a.safeParseAsync(t);if(r.error)throw new Y(`Tool ${e} returned invalid input: ${ye(r.error)}`,{code:`INVALID_ARGUMENTS`,isRetryable:!0,suggestedFix:`Please check the arguments and try again.`});let s=r.data,c=await i(s,n),l=await o.safeParseAsync(c);if(l.error){let t=ye(l.error);throw Error(`Tool ${e} returned invalid output: ${t}`)}return{tool_name:e,result:l.data,error:null}}catch(n){return n instanceof Y?{tool_name:e,result:null,error:n.toStructuredString()}:{tool_name:e,result:null,error:new Y(n instanceof Error?n.message:String(n),{code:`TOOL_ERROR`,isRetryable:!1,suggestedFix:`Check the error message and try again with valid arguments.`,meta:{args:t,errorType:n?.constructor?.name??typeof n}}).toStructuredString()}}}getToolSchemas(e){return[...this.tools.values()].filter(t=>t.mode.includes(e)).map(e=>({name:e.name,description:es(e.description),parameters:ue(e.schema),source:`frontend`,mode:e.mode}))}};T([v()],ts.prototype,`getToolSchemas`,null);var ns=new ts([new Bo,new $o]);function rs(e,t){let n=[`Code:\n${e.cellCode}`];if(e.tracebackHtml&&n.push(`Traceback:\n${y(e.tracebackHtml)}`),e.errorData.length>0&&n.push(e.errorData.map(e=>It(e)).join(`
50
50
 
51
51
  `)),e.errorData.some(e=>e.type===`sql-error`)){let r=ot(e.cellId,t);r&&n.push(`Database schema:\n${r}`)}return n.join(`
52
52
 
@@ -55,7 +55,7 @@ ${t}`,d++;break;case`id`:l=t.includes(`\0`)?void 0:t;break;case`retry`:/^\d+$/.t
55
55
 
56
56
  `)}},ls=x(),us={maxDepth:3,maxResults:20,defaultResultsLimit:5,includeDirectories:!1},ds=class extends ct{title=`Files`;mentionPrefix=`#`;contextType=`file`;apiRequests;config;constructor(e,t=us){super(),this.apiRequests=e,this.config=t}createCompletionSource(){return async e=>{let t=e.matchBefore(/#[^\s#]*/);if(!t)return null;let n=t.text;if(!n.startsWith(`#`))return null;let r=n.slice(1);if(r.length===0)return this.getDefaultCompletions(t);try{let e=(await this.searchFiles(r)||[]).map(e=>{let t={uri:this.asURI(e.path),name:e.name,type:this.contextType,description:e.isDirectory?`Directory`:`File`,data:{path:e.path,isDirectory:e.isDirectory}};return this.formatCompletion(t)});return{from:t.from,options:e}}catch(e){return k.error(`Failed to search files:`,e),null}}}searchFiles=async(e,t={})=>{let{maxDepth:n,maxResults:r,includeDirectories:i}={...this.config,...t};return(await this.apiRequests.sendSearchFiles({query:e,includeFiles:!0,includeDirectories:i,depth:n,limit:r})).files};async getDefaultCompletions(e){try{for(let t of[`py`,`md`,`csv`])try{let n=await this.searchFiles(t,{maxDepth:1,maxResults:5});if(n&&n.length>0){let t=n.map(e=>{let t={uri:this.asURI(e.path),name:e.name,type:this.contextType,description:e.isDirectory?`Directory`:`File`,data:{path:e.path,isDirectory:e.isDirectory}};return this.formatCompletion(t)});return{from:e.from,options:t}}}catch(e){k.error(`Failed to get default file completions:`,e)}return{from:e.from,options:[]}}catch(e){return k.error(`Failed to get default file completions:`,e),null}}getItems(){return[]}formatCompletion(e){let{data:t,name:n}=e,r=t.isDirectory?`📁`:`📄`;return{...this.createBasicCompletion(e),type:`file`,section:rt.FILE,boost:t.isDirectory?at.MEDIUM:at.LOW,detail:t.path,displayLabel:`${r} ${n}`,apply:async(e,r,i,a)=>{let o=e.state.facet(ls)?.addAttachment;if(!o){k.warn(`No addAttachment callback provided`);return}let s=await this.apiRequests.sendFileDetails({path:t.path}).catch(e=>(ut({title:`Failed to get file details`,description:e.message}),null));if(!s)return;let c=s.mimeType||`text/plain`,l=Nt({contents:s.contents??``,mimeType:c,isBase64:s.isBase64??!1});o(new File([l],n,{type:c})),e.dispatch({changes:{from:i,to:a,insert:``}}),Et(e)},info:()=>{let e=document.createElement(`div`);e.classList.add(`flex`,`flex-col`,`gap-1`,`p-2`);let r=document.createElement(`div`);r.classList.add(`font-bold`),r.textContent=n,e.append(r);let i=document.createElement(`div`);return i.classList.add(`text-xs`,`text-muted-foreground`),i.textContent=t.path,e.append(i),e}}}formatContext(e){let{data:t,name:n}=e;return st({type:this.contextType,data:{name:n,path:t.path,isDirectory:t.isDirectory},details:t.isDirectory?`Directory containing files and subdirectories`:`File`})}},fs=class extends ct{title=`Tables`;mentionPrefix=`@`;contextType=`data`;tablesMap;constructor(e){super(),this.tablesMap=e}getItems(){return[...this.tablesMap.entries()].map(([e,t])=>({uri:this.asURI(e),name:e,type:this.contextType,description:t.source===`memory`?`in-memory`:t.source,data:t}))}formatContext(e){let{data:t}=e,{columns:n,source:r,num_rows:i,num_columns:a,name:o,variable_name:s}=t,c=[i==null?void 0:`${i} rows`,a==null?void 0:`${a} columns`].filter(Boolean).join(`, `),l=``;if(c&&(l+=`Shape: ${c}\n`),s&&(l+=`Variable: ${s}\n`),n&&n.length>0){l+=`Columns:
57
57
  `;for(let e of n){let t=` ${e.name} (${e.type})`;if(e.sample_values&&e.sample_values.length>0){let n=e.sample_values.slice(0,3).map(e=>e===null?`null`:String(e)).join(`, `);t+=` - samples: [${n}]`}l+=`${t}\n`}}return st({type:this.contextType,data:{name:o,source:r??`unknown`},details:l.trim()})}formatCompletion(e){let t=e.data.name,n=e.data;return{label:`@${t}`,displayLabel:t,detail:n.source===`memory`?`in-memory`:n.source,boost:n.source_type===`local`?at.LOCAL_TABLE:at.REMOTE_TABLE,type:p(n),apply:`@${t}`,section:{name:p(n)===`dataframe`?`Dataframe`:`Table`,rank:rt.TABLE.rank},info:()=>this.createTableInfoElement(t,n)}}createTableInfoElement(e,t){let n=document.createElement(`div`);n.classList.add(`mo-cm-tooltip`,`docs-documentation`,`min-w-[200px]`,`flex`,`flex-col`,`gap-1`,`p-2`);let r=document.createElement(`div`);r.classList.add(`flex`,`flex-col`,`gap-1`);let i=document.createElement(`div`);if(i.classList.add(`font-bold`,`text-base`),i.textContent=e,r.append(i),t.source){let e=document.createElement(`div`);e.classList.add(`text-xs`,`text-muted-foreground`),e.textContent=`Source: ${t.source}`,r.append(e)}n.append(r);let a=[t.num_rows==null?void 0:`${t.num_rows} rows`,t.num_columns==null?void 0:`${t.num_columns} columns`].filter(Boolean).join(`, `);if(a){let e=document.createElement(`div`);e.classList.add(`text-xs`,`bg-muted`,`px-2`,`py-1`,`rounded`),e.textContent=a,n.append(e)}if(t.columns&&t.columns.length>0){let e=document.createElement(`div`);e.classList.add(`overflow-auto`,`max-h-60`);let r=document.createElement(`table`);r.classList.add(`w-full`,`text-xs`,`border-collapse`);let i=r.insertRow();i.classList.add(`bg-muted`);let a=i.insertCell();a.classList.add(`p-2`,`font-medium`,`text-left`),a.textContent=`Column`;let o=i.insertCell();o.classList.add(`p-2`,`font-medium`,`text-left`),o.textContent=`Type`;let s=t.columns.some(e=>this.getItemMetadata(t,e)!==void 0),c;s&&(c=i.insertCell(),c.classList.add(`p-2`,`font-medium`,`text-left`),c.textContent=`Metadata`),t.columns.forEach((e,n)=>{let i=r.insertRow();i.classList.add(n%2==0?`bg-background`:`bg-muted/30`);let a=i.insertCell();a.classList.add(`p-2`,`font-mono`),a.textContent=e.name;let o=i.insertCell();if(o.classList.add(`p-2`,`text-muted-foreground`),o.textContent=e.type,s){let n=i.insertCell();n.classList.add(`p-2`);let r=this.getItemMetadata(t,e);r&&n.append(r)}}),e.append(r),n.append(e)}return n}getItemMetadata(e,t){let n=e.primary_keys?.includes(t.name),r=e.indexes?.includes(t.name);if(n||r){let e=document.createElement(`span`);e.textContent=n?`PK`:`IDX`;let t=n?`bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200`:`bg-amber-100 text-amber-800 dark:bg-amber-900 dark:text-amber-200`;return e.classList.add(`text-xs`,`px-1.5`,`py-0.5`,`rounded-full`,`font-medium`,...t.split(` `)),e}}},ps=class extends ct{title=`Variables`;mentionPrefix=`@`;contextType=`variable`;variables;tablesMap;constructor(e,t){super(),this.variables=e,this.tablesMap=t}getItems(){let e=new Set(this.tablesMap.keys());return Object.entries(this.variables).flatMap(([t,n])=>e.has(t)?[]:[{uri:this.asURI(t),name:t,type:this.contextType,description:n.dataType??``,dataType:n.dataType,data:{variable:n}}])}formatCompletion(e){let{data:t}=e,{variable:n}=t;return{label:`@${n.name}`,displayLabel:n.name,detail:n.dataType??``,type:this.contextType,section:rt.VARIABLE,info:()=>w(n)}}formatContext(e){let{data:t}=e,{variable:n}=t;return st({type:this.contextType,data:{name:n.name,dataType:n.dataType},details:n.value==null?void 0:JSON.stringify(n.value)})}};function ms(e){let t=e.get(h),n=e.get(E),r=e.get(ie);return new it().register(new fs(n)).register(new ps(r,n)).register(new cs(e)).register(new Ho(e)).register(new lt(t.connectionsMap,n))}function hs(){return new ds(Ot())}function gs({input:e}){let t=``;return e.includes(`@`)&&(t=ws(e),k.debug(`Included context`,t)),{includeOtherCode:b(``),context:{plainText:t,schema:[],variables:[]}}}var _s=`data-marimo-context`,vs={marimo:{source:`context`}};function ys(e){return e.type===`file`&&e.providerMetadata?.marimo?.source===vs.marimo.source}function bs(e){return{...e,providerMetadata:{...e.providerMetadata,marimo:{...e.providerMetadata?.marimo,...vs.marimo}}}}async function xs(e){if(!e.includes(`@`))return{plainText:``,contextIds:[],attachments:[]};let t=ms(s),n=t.parseAllContextIds(e);if(n.length===0)return{plainText:``,contextIds:[],attachments:[]};let r=t.formatContextForAI(n),i=[];try{i=(await t.getAttachmentsForContext(n)).map(bs)}catch(e){k.error(`Error getting attachments:`,e)}return{plainText:r,contextIds:n,attachments:i}}async function Ss(e){let{plainText:t,contextIds:n,attachments:r}=await xs(e),i=null;return t.trim()&&(i={type:_s,data:{plainText:t,contextIds:n.map(String)}}),{contextPart:i,attachments:r}}async function Cs({input:e}){let{plainText:t,attachments:n}=await xs(e);return{body:{includeOtherCode:b(``),context:{plainText:t,schema:[],variables:[]}},attachments:n}}function ws(e){let t=ms(s),n=t.parseAllContextIds(e);return t.formatContextForAI(n)}function Ts(e,t=[]){return n=>{let r=e.map(e=>n.matchBefore(e)).find(Boolean);return!r||r&&r.from===r.to&&!n.explicit?null:{from:r?.from,options:[...t]}}}function Es(e){if(e.current?.view){let t=e.current.view.state.selection.main.from;e.current.view.dispatch({changes:{from:t,to:t,insert:`@`},selection:{anchor:t+1,head:t+1}}),e.current.view.focus(),wt(e.current.view)}}var Ds=new Set([`openai`,`google`,`anthropic`]),Os=[`image/*`,`text/*`],ks=52428800;function As(e){return e.length>50?`${e.slice(0,50)}...`:e}async function js(e){return await Promise.all(e.map(async e=>({type:`file`,mediaType:e.type,filename:e.name,url:await We(e,`dataUrl`)})))}function Ms(e){if(e.length===0)return!1;let t=e.at(-1);if(!t||t.role!==`assistant`||!t.parts)return!1;let n=t.parts;return n.length!==0&&n[n.length-1].type===`reasoning`}function Ns(e){return e.map(e=>e.type===`text`?e.text:``).join(`
58
- `)}async function Ps(e){let t=await Cs({input:Ns(e.flatMap(e=>e.parts))});function n(e,n){return n?{...e,parts:[...e.parts,...t.attachments]}:e}return{...t.body,uiMessages:e.map((t,r)=>n(t,r===e.length-1))}}async function Fs({invokeAiTool:e,addToolOutput:t,toolCall:n,toolContext:r}){try{if(ns.has(n.toolName)){let e=await ns.invoke({toolName:n.toolName,rawArgs:n.input,toolContext:r});t({tool:n.toolName,toolCallId:n.toolCallId,output:e.result||e.error})}else{let r=await e({toolName:n.toolName,arguments:n.input??{}});t({tool:n.toolName,toolCallId:n.toolCallId,output:r.result||r.error})}}catch(e){k.error(`Tool call failed:`,e),t({tool:n.toolName,toolCallId:n.toolCallId,output:`Error: ${e instanceof Error?e.message:String(e)}`})}}function Is(e){let t=e.at(-1);if(!t||t.role!==`assistant`)return!1;let n=t.parts.at(-1);return!n||!H(n)?!1:Ga({messages:e})||Wa({messages:e})||n.state===`output-denied`&&!n.providerExecuted}function Ls(e){let t=e.at(-1);return!t||t.role!==`assistant`?!1:t.parts.some(e=>H(e)&&Rs(e.state))}function Rs(e){switch(e){case`approval-requested`:case`input-streaming`:case`input-available`:return!0;case`approval-responded`:case`output-available`:case`output-error`:case`output-denied`:return!1;default:return e}}function zs(){let e=(0,A.c)(7),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0];let[n,r]=(0,W.useState)(t),i;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(i=e=>{if(e.length!==0){if(e.reduce(Bs,0)>ks){ut({title:`File size exceeded`,description:`Attachments must be under 50 MB`,variant:`danger`});return}r(t=>[...t,...e])}},e[1]=i):i=e[1];let a=c(i),o;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(o=()=>r([]),e[2]=o):o=e[2];let s=o,l;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(l=e=>r(t=>t.filter(t=>t!==e)),e[3]=l):l=e[3];let u=l,d;return e[4]!==a||e[5]!==n?(d={files:n,addFiles:a,clearFiles:s,removeFile:u},e[4]=a,e[5]=n,e[6]=d):d=e[6],d}function Bs(e,t){return e+t.size}function Vs(e){return e.isError?!1:e.isAbort?!0:!e.hasPendingToolCalls&&!e.hasUnresolvedToolCalls}function Hs(){let[e,t]=(0,W.useState)([]),n=(0,W.useRef)([]),r=(0,W.useRef)(!1);return n.current=e,r.current=e.length>0,{messages:e,enqueue:c(e=>{t(t=>{let i=[...t,{id:At(),parts:e}];return n.current=i,r.current=!0,i})}),flushNext:c(e=>{let i=n.current;if(i.length===0)return;let[a,...o]=i;n.current=o,r.current=o.length>0,t(o),e(a.parts)}),clear:c(()=>{n.current=[],r.current=!1,t([])}),hasQueuedRef:r}}var Us=e=>{let t=(0,A.c)(6),{attachment:n}=e;if(n.mediaType?.startsWith(`image/`)){let e=n.filename||`Attachment`,r;return t[0]!==n.url||t[1]!==e?(r=(0,G.jsx)(`img`,{src:n.url,alt:e,className:`max-h-[100px] max-w-[100px] object-contain mb-1.5`}),t[0]=n.url,t[1]=e,t[2]=r):r=t[2],r}let r;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,G.jsx)(Ze,{className:`h-3 w-3 mt-0.5`}),t[3]=r):r=t[3];let i=n.filename||`Attachment`,a;return t[4]===i?a=t[5]:(a=(0,G.jsxs)(`div`,{className:`flex flex-row gap-1 items-center text-xs`,children:[r,i]}),t[4]=i,t[5]=a),a},Ws=e=>{let t=(0,A.c)(12),{file:n,className:r,onRemove:i}=e,[a,o]=(0,W.useState)(!1),s;t[0]===r?s=t[1]:(s=je(`py-1 px-1.5 bg-muted rounded-md cursor-pointer flex flex-row gap-1 items-center text-xs`,r),t[0]=r,t[1]=s);let c,l;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(c=()=>o(!0),l=()=>o(!1),t[2]=c,t[3]=l):(c=t[2],l=t[3]);let u;t[4]!==n||t[5]!==a||t[6]!==i?(u=a?(0,G.jsx)(Je,{className:`h-3 w-3 mt-0.5`,onClick:i}):Js(n),t[4]=n,t[5]=a,t[6]=i,t[7]=u):u=t[7];let d;return t[8]!==n.name||t[9]!==s||t[10]!==u?(d=(0,G.jsxs)(`div`,{className:s,onMouseEnter:c,onMouseLeave:l,children:[u,n.name]}),t[8]=n.name,t[9]=s,t[10]=u,t[11]=d):d=t[11],d},Gs=e=>{let t=(0,A.c)(12),{isLoading:n,onStop:r,onSendClick:i,isEmpty:a,showStopLabel:o}=e,s=o!==void 0&&o,c;t[0]===s?c=t[1]:(c=s?(0,G.jsxs)(`div`,{className:`flex flex-row items-center gap-1 px-1.5`,children:[(0,G.jsx)(`span`,{className:`text-xs text-error`,children:`Stop`}),(0,G.jsx)($e,{size:`small`})]}):(0,G.jsx)(Gt,{className:`size-4 text-error`}),t[0]=s,t[1]=c);let l=c,u=n?`Stop`:`Submit`,d=n?r:i,f=!n&&a,p;t[2]!==n||t[3]!==l?(p=n?l:(0,G.jsx)(qt,{className:`h-3.5 w-3.5`}),t[2]=n,t[3]=l,t[4]=p):p=t[4];let m;t[5]!==d||t[6]!==f||t[7]!==p?(m=(0,G.jsx)(ze,{variant:`text`,size:`sm`,className:`h-6 min-w-6 p-0 hover:bg-muted/30 cursor-pointer`,onClick:d,disabled:f,children:p}),t[5]=d,t[6]=f,t[7]=p,t[8]=m):m=t[8];let h;return t[9]!==u||t[10]!==m?(h=(0,G.jsx)(Re,{content:u,children:m}),t[9]=u,t[10]=m,t[11]=h):h=t[11],h},Ks=e=>{let t=(0,A.c)(4),{handleAddContext:n,isLoading:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,G.jsx)(Ue,{className:`h-3.5 w-3.5`}),t[0]=i):i=t[0];let a;return t[1]!==n||t[2]!==r?(a=(0,G.jsx)(Re,{content:`Add context`,children:(0,G.jsx)(ze,{variant:`text`,size:`icon`,onClick:n,disabled:r,children:i})}),t[1]=n,t[2]=r,t[3]=a):a=t[3],a},qs=e=>{let t=(0,A.c)(15),{fileInputRef:n,isLoading:r,onAddFiles:i}=e,a;t[0]===n?a=t[1]:(a=()=>n.current?.click(),t[0]=n,t[1]=a);let o;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,G.jsx)(Kt,{className:`h-3.5 w-3.5`}),t[2]=o):o=t[2];let s;t[3]!==r||t[4]!==a?(s=(0,G.jsx)(Re,{content:`Attach a file`,children:(0,G.jsx)(ze,{variant:`text`,size:`icon`,onClick:a,disabled:r,children:o})}),t[3]=r,t[4]=a,t[5]=s):s=t[5];let c;t[6]===i?c=t[7]:(c=e=>{e.target.files&&i([...e.target.files])},t[6]=i,t[7]=c);let l;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(l=Os.join(`,`),t[8]=l):l=t[8];let u;t[9]!==n||t[10]!==c?(u=(0,G.jsx)(nt,{ref:n,type:`file`,multiple:!0,hidden:!0,onChange:c,accept:l}),t[9]=n,t[10]=c,t[11]=u):u=t[11];let d;return t[12]!==s||t[13]!==u?(d=(0,G.jsxs)(G.Fragment,{children:[s,u]}),t[12]=s,t[13]=u,t[14]=d):d=t[14],d};function Js(e){let t=`h-3 w-3 mt-0.5`;return e.type.startsWith(`image/`)?(0,G.jsx)(Qe,{className:t}):e.type.startsWith(`text/`)?(0,G.jsx)(He,{className:t}):(0,G.jsx)(Ze,{className:t})}var Ys=e=>{let t=(0,A.c)(15),{icon:n,title:r,subtitle:i,href:a}=e,o;t[0]===r?o=t[1]:(o=(0,G.jsx)(`span`,{className:`truncate font-medium`,children:r}),t[0]=r,t[1]=o);let s;t[2]===i?s=t[3]:(s=i&&(0,G.jsxs)(`span`,{className:`truncate opacity-70`,children:[`(`,i,`)`]}),t[2]=i,t[3]=s);let c;t[4]!==n||t[5]!==o||t[6]!==s?(c=(0,G.jsxs)(G.Fragment,{children:[n,o,s]}),t[4]=n,t[5]=o,t[6]=s,t[7]=c):c=t[7];let l=c;if(a&&De(a)){let e=i??r,n;return t[8]!==l||t[9]!==a||t[10]!==e?(n=(0,G.jsx)(`a`,{href:a,target:`_blank`,rel:`noopener noreferrer`,title:e,className:`inline-flex max-w-full items-center gap-1.5 rounded-md border bg-muted/50 px-2 py-1 my-1 text-xs text-muted-foreground hover:bg-muted hover:text-foreground transition-colors`,children:l}),t[8]=l,t[9]=a,t[10]=e,t[11]=n):n=t[11],n}let u=i??r,d;return t[12]!==l||t[13]!==u?(d=(0,G.jsx)(`div`,{className:`inline-flex max-w-full items-center gap-1.5 rounded-md border bg-muted/50 px-2 py-1 my-1 text-xs text-muted-foreground`,title:u,children:l}),t[12]=l,t[13]=u,t[14]=d):d=t[14],d},Xs=gt.define(),Q=dt.define({create(){return new Map},update(e,t){let n=!1,r=e;for(let i of t.effects)if(i.is(Xs)){n||=(r=new Map(e),!0);for(let[e,t]of i.value)r.set(e,t)}return r}}),Zs=dt.define({create(){return{onResourceClick:void 0,onResourceMouseOver:void 0,onResourceMouseOut:void 0,onPromptSubmit:void 0}},update(e){return e}}),Qs=gt.define();dt.define({create(){return new Map},update(e,t){let n=!1,r=e;for(let i of t.effects)if(i.is(Qs)){n||=(r=new Map(e),!0);for(let[e,t]of i.value)r.set(e,t)}return r}});var $s=(e,t)=>async n=>{let r=n.matchBefore(/@(\w+)?/);if(!r||r.from===r.to&&!n.explicit)return null;let i=await e();if(i.length===0)return null;let a=Xs.of(new Map(i.map(e=>[e.uri,e])));n.view&&n.view.dispatch({effects:a});let o=i.map(e=>({label:`@${e.name}`,displayLabel:e.name,detail:e.uri,info:e.description||void 0,type:e.mimeType?`constant`:`variable`,boost:e.description?100:0,...t?.(e),apply:(t,n,r,i)=>{t.dispatch({changes:{from:r,to:i,insert:`@${e.uri} `}})}}));return{from:r.from,options:o}},ec=/@[\w-]+:\/\/(?!\/)[^\s]+/;function $(e){return e.matchAll(new RegExp(ec.source,`g`))}var tc=class extends yt{resource;view;constructor(e,t){super(),this.resource=e,this.view=t}eq(e){return e.resource.uri===this.resource.uri}toDOM(){let e=document.createElement(`span`);e.className=`cm-resource-widget`,e.textContent=`@${this.resource.name}`;let t=this.view.state.field(Zs,!1),n=t?.onResourceClick,r=t?.onResourceMouseOver,i=t?.onResourceMouseOut;return n&&(e.style.cursor=`pointer`,e.addEventListener(`click`,e=>{e.preventDefault(),e.stopPropagation(),n(this.resource)})),r&&e.addEventListener(`mouseover`,e=>{e.preventDefault(),e.stopPropagation(),r(this.resource)}),i&&e.addEventListener(`mouseout`,e=>{e.preventDefault(),e.stopPropagation(),i(this.resource)}),e}},nc=class extends yt{uri;view;constructor(e,t){super(),this.uri=e,this.view=t}eq(e){return e.uri===this.uri}toDOM(){let e=document.createElement(`span`);return e.className=`cm-not-found-resource-widget`,e.textContent=`@${this.uri.split(`://`)[1]??this.uri}`,e}};function rc(e){let t=e.state.field(Q),n=[];for(let{from:r,to:i}of e.visibleRanges){let a=e.state.doc.sliceString(r,i);for(let i of $(a)){let a=r+i.index,o=i[0].slice(1),s=t.get(o);s?n.push(vt.replace({widget:new tc(s,e)}).range(a,a+i[0].length)):n.push(vt.replace({widget:new nc(o,e)}).range(a,a+i[0].length))}}return vt.set(n)}var ic=St.fromClass(class{decorations;constructor(e){this.decorations=rc(e)}update(e){(e.docChanged||e.viewportChanged||e.transactions.some(e=>e.effects.some(e=>e.is(Xs))))&&(this.decorations=rc(e.view))}},{decorations:e=>e.decorations});function ac(e){let t=document.createElement(`div`);t.className=`cm-tooltip-cursor`;let n=document.createElement(`div`);if(n.className=`cm-tooltip-cursor-title`,n.textContent=`${e.name} (${e.uri})`,t.appendChild(n),e.description){let n=document.createElement(`div`);n.className=`cm-tooltip-cursor-description`,n.textContent=e.description,t.appendChild(n)}if(e.mimeType){let n=document.createElement(`div`);n.className=`cm-tooltip-cursor-mimetype`,n.textContent=e.mimeType,t.appendChild(n)}return{dom:t}}function oc(e,t,n,r=0){for(let i of $(e)){let e=r+i.index,a=e+i[0].length;if(t>=e&&t<=a){let t=i[0].slice(1),r=n.get(t);if(r)return{resource:r,start:e,end:a}}}return null}function sc(e){return _t((t,n)=>{let{from:r,text:i}=t.state.doc.lineAt(n),a=oc(i,n,t.state.field(Q),r);return a?{pos:a.start,end:a.end,above:!0,create(){return(e.createTooltip??ac)(a.resource)}}:null})}function cc(e,t){let n=e.field(Q),r=e.doc,i=r.lineAt(t),a=r.sliceString(i.from,i.to),o=Array.from($(a));if(o.length===0)return null;for(let e of o){let r=i.from+e.index,a=r+e[0].length,o=e[0].slice(1);if(t===a&&n.has(o))return{from:r,to:a,uri:o}}return null}function lc(e,t){let n=e.field(Q),r=e.doc,i=r.lineAt(t).to,a=r.sliceString(t,i),o=Array.from($(a));if(o.length===0)return null;let s=o[0];if(!s||s.index!==0)return null;let c=t,l=t+s[0].length,u=s[0].slice(1);return n.has(u)?{from:c,to:l,uri:u}:null}function uc(e,t){let n=e.field(Q),r=e.doc,i=r.lineAt(t),a=r.sliceString(i.from,i.to),o=Array.from($(a));for(let e of o){let r=i.from+e.index,a=r+e[0].length,o=e[0].slice(1);if(t>r&&t<a&&n.has(o))return{from:r,to:a,uri:o}}return null}function dc(e,t){let n=e.field(Q),r=e.doc,i=r.lineAt(t),a=r.sliceString(i.from,t),o=Array.from($(a)),s=null;for(let e of o){let r=i.from+e.index,a=r+e[0].length,o=e[0].slice(1);n.has(o)&&a<=t&&(t>a?s=a:t===a&&(s=r))}return s}function fc(e,t){let n=e.field(Q),r=e.doc,i=r.lineAt(t),a=r.sliceString(i.from,i.to),o=Array.from($(a));for(let e of o){let r=i.from+e.index,a=r+e[0].length,o=e[0].slice(1);if(n.has(o)&&r>=t){if(t<r)return r;if(t===r)return a}}return null}var pc=pt.transactionFilter.of(e=>{let t=e.annotation(xt.userEvent);if(!t)return e;let n=e.startState.selection.main;if(!n.empty)return e;if(t===`input.type`||t.startsWith(`input`)){if(e.changes.empty)return e;let t=e.startState.field(Q),n=e.startState.doc,r=!1,i=0,a=[];if(e.changes.iterChanges((e,o,s,c,l)=>{let u=l.toString(),d=e;if(/^\s+$/.test(u)){a.push({from:e,to:o,insert:u});return}let f=n.lineAt(d),p=n.sliceString(f.from,f.to),m=Array.from($(p)),h=!1,g=!1;for(let e of m){let r=f.from+e.index,i=r+e[0].length,a=e[0].slice(1);if(t.has(a)){if(d===r){let e=d>0?n.sliceString(d-1,d):``;e!==``&&e!==` `&&e!==`
58
+ `)}async function Ps(e){let t=await Cs({input:Ns(e.flatMap(e=>e.parts))});function n(e,n){return n?{...e,parts:[...e.parts,...t.attachments]}:e}return{...t.body,uiMessages:e.map((t,r)=>n(t,r===e.length-1))}}async function Fs({invokeAiTool:e,addToolOutput:t,toolCall:n,toolContext:r}){try{if(ns.has(n.toolName)){let e=await ns.invoke({toolName:n.toolName,rawArgs:n.input,toolContext:r});t({tool:n.toolName,toolCallId:n.toolCallId,output:e.result||e.error})}else{let r=await e({toolName:n.toolName,arguments:n.input??{}});t({tool:n.toolName,toolCallId:n.toolCallId,output:r.result||r.error})}}catch(e){k.error(`Tool call failed:`,e),t({tool:n.toolName,toolCallId:n.toolCallId,output:`Error: ${e instanceof Error?e.message:String(e)}`})}}function Is(e){let t=e.at(-1);if(!t||t.role!==`assistant`)return!1;let n=t.parts.at(-1);return!n||!H(n)?!1:Ga({messages:e})||Wa({messages:e})||n.state===`output-denied`&&!n.providerExecuted}function Ls(e){let t=e.at(-1);return!t||t.role!==`assistant`?!1:t.parts.some(e=>H(e)&&Rs(e.state))}function Rs(e){switch(e){case`approval-requested`:case`input-streaming`:case`input-available`:return!0;case`approval-responded`:case`output-available`:case`output-error`:case`output-denied`:return!1;default:return e}}function zs(){let e=(0,A.c)(7),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0];let[n,r]=(0,W.useState)(t),i;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(i=e=>{if(e.length!==0){if(e.reduce(Bs,0)>ks){ut({title:`File size exceeded`,description:`Attachments must be under 50 MB`,variant:`danger`});return}r(t=>[...t,...e])}},e[1]=i):i=e[1];let a=c(i),o;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(o=()=>r([]),e[2]=o):o=e[2];let s=o,l;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(l=e=>r(t=>t.filter(t=>t!==e)),e[3]=l):l=e[3];let u=l,d;return e[4]!==a||e[5]!==n?(d={files:n,addFiles:a,clearFiles:s,removeFile:u},e[4]=a,e[5]=n,e[6]=d):d=e[6],d}function Bs(e,t){return e+t.size}function Vs(e){return e.isError?!1:e.isAbort?!0:!e.hasPendingToolCalls&&!e.hasUnresolvedToolCalls}function Hs(){let e=(0,A.c)(10),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0];let[n,r]=(0,W.useState)(t),i;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(i=[],e[1]=i):i=e[1];let a=(0,W.useRef)(i),o=(0,W.useRef)(!1),s;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(s=e=>{let t=[...a.current,{id:At(),parts:e}];a.current=t,o.current=!0,r(t)},e[2]=s):s=e[2];let l=c(s),u;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(u=e=>{let t=a.current;if(t.length===0)return;let[n,...i]=t;a.current=i,o.current=i.length>0,r(i),e(n.parts)},e[3]=u):u=e[3];let d=c(u),f;e[4]===Symbol.for(`react.memo_cache_sentinel`)?(f=()=>{a.current=[],o.current=!1,r([])},e[4]=f):f=e[4];let p=c(f),m;return e[5]!==p||e[6]!==l||e[7]!==d||e[8]!==n?(m={messages:n,enqueue:l,flushNext:d,clear:p,hasQueuedRef:o},e[5]=p,e[6]=l,e[7]=d,e[8]=n,e[9]=m):m=e[9],m}var Us=e=>{let t=(0,A.c)(6),{attachment:n}=e;if(n.mediaType?.startsWith(`image/`)){let e=n.filename||`Attachment`,r;return t[0]!==n.url||t[1]!==e?(r=(0,G.jsx)(`img`,{src:n.url,alt:e,className:`max-h-[100px] max-w-[100px] object-contain mb-1.5`}),t[0]=n.url,t[1]=e,t[2]=r):r=t[2],r}let r;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,G.jsx)(Ze,{className:`h-3 w-3 mt-0.5`}),t[3]=r):r=t[3];let i=n.filename||`Attachment`,a;return t[4]===i?a=t[5]:(a=(0,G.jsxs)(`div`,{className:`flex flex-row gap-1 items-center text-xs`,children:[r,i]}),t[4]=i,t[5]=a),a},Ws=e=>{let t=(0,A.c)(12),{file:n,className:r,onRemove:i}=e,[a,o]=(0,W.useState)(!1),s;t[0]===r?s=t[1]:(s=je(`py-1 px-1.5 bg-muted rounded-md cursor-pointer flex flex-row gap-1 items-center text-xs`,r),t[0]=r,t[1]=s);let c,l;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(c=()=>o(!0),l=()=>o(!1),t[2]=c,t[3]=l):(c=t[2],l=t[3]);let u;t[4]!==n||t[5]!==a||t[6]!==i?(u=a?(0,G.jsx)(Je,{className:`h-3 w-3 mt-0.5`,onClick:i}):Js(n),t[4]=n,t[5]=a,t[6]=i,t[7]=u):u=t[7];let d;return t[8]!==n.name||t[9]!==s||t[10]!==u?(d=(0,G.jsxs)(`div`,{className:s,onMouseEnter:c,onMouseLeave:l,children:[u,n.name]}),t[8]=n.name,t[9]=s,t[10]=u,t[11]=d):d=t[11],d},Gs=e=>{let t=(0,A.c)(12),{isLoading:n,onStop:r,onSendClick:i,isEmpty:a,showStopLabel:o}=e,s=o!==void 0&&o,c;t[0]===s?c=t[1]:(c=s?(0,G.jsxs)(`div`,{className:`flex flex-row items-center gap-1 px-1.5`,children:[(0,G.jsx)(`span`,{className:`text-xs text-error`,children:`Stop`}),(0,G.jsx)($e,{size:`small`})]}):(0,G.jsx)(Gt,{className:`size-4 text-error`}),t[0]=s,t[1]=c);let l=c,u=n?`Stop`:`Submit`,d=n?r:i,f=!n&&a,p;t[2]!==n||t[3]!==l?(p=n?l:(0,G.jsx)(qt,{className:`h-3.5 w-3.5`}),t[2]=n,t[3]=l,t[4]=p):p=t[4];let m;t[5]!==d||t[6]!==f||t[7]!==p?(m=(0,G.jsx)(ze,{variant:`text`,size:`sm`,className:`h-6 min-w-6 p-0 hover:bg-muted/30 cursor-pointer`,onClick:d,disabled:f,children:p}),t[5]=d,t[6]=f,t[7]=p,t[8]=m):m=t[8];let h;return t[9]!==u||t[10]!==m?(h=(0,G.jsx)(Re,{content:u,children:m}),t[9]=u,t[10]=m,t[11]=h):h=t[11],h},Ks=e=>{let t=(0,A.c)(4),{handleAddContext:n,isLoading:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,G.jsx)(Ue,{className:`h-3.5 w-3.5`}),t[0]=i):i=t[0];let a;return t[1]!==n||t[2]!==r?(a=(0,G.jsx)(Re,{content:`Add context`,children:(0,G.jsx)(ze,{"aria-label":`Add context`,variant:`text`,size:`icon`,onClick:n,disabled:r,children:i})}),t[1]=n,t[2]=r,t[3]=a):a=t[3],a},qs=e=>{let t=(0,A.c)(15),{fileInputRef:n,isLoading:r,onAddFiles:i}=e,a;t[0]===n?a=t[1]:(a=()=>n.current?.click(),t[0]=n,t[1]=a);let o;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,G.jsx)(Kt,{className:`h-3.5 w-3.5`}),t[2]=o):o=t[2];let s;t[3]!==r||t[4]!==a?(s=(0,G.jsx)(Re,{content:`Attach a file`,children:(0,G.jsx)(ze,{"aria-label":`Attach a file`,variant:`text`,size:`icon`,onClick:a,disabled:r,children:o})}),t[3]=r,t[4]=a,t[5]=s):s=t[5];let c;t[6]===i?c=t[7]:(c=e=>{e.target.files&&i([...e.target.files])},t[6]=i,t[7]=c);let l;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(l=Os.join(`,`),t[8]=l):l=t[8];let u;t[9]!==n||t[10]!==c?(u=(0,G.jsx)(nt,{ref:n,type:`file`,multiple:!0,hidden:!0,onChange:c,accept:l}),t[9]=n,t[10]=c,t[11]=u):u=t[11];let d;return t[12]!==s||t[13]!==u?(d=(0,G.jsxs)(G.Fragment,{children:[s,u]}),t[12]=s,t[13]=u,t[14]=d):d=t[14],d};function Js(e){let t=`h-3 w-3 mt-0.5`;return e.type.startsWith(`image/`)?(0,G.jsx)(Qe,{className:t}):e.type.startsWith(`text/`)?(0,G.jsx)(He,{className:t}):(0,G.jsx)(Ze,{className:t})}var Ys=e=>{let t=(0,A.c)(15),{icon:n,title:r,subtitle:i,href:a}=e,o;t[0]===r?o=t[1]:(o=(0,G.jsx)(`span`,{className:`truncate font-medium`,children:r}),t[0]=r,t[1]=o);let s;t[2]===i?s=t[3]:(s=i&&(0,G.jsxs)(`span`,{className:`truncate opacity-70`,children:[`(`,i,`)`]}),t[2]=i,t[3]=s);let c;t[4]!==n||t[5]!==o||t[6]!==s?(c=(0,G.jsxs)(G.Fragment,{children:[n,o,s]}),t[4]=n,t[5]=o,t[6]=s,t[7]=c):c=t[7];let l=c;if(a&&De(a)){let e=i??r,n;return t[8]!==l||t[9]!==a||t[10]!==e?(n=(0,G.jsx)(`a`,{href:a,target:`_blank`,rel:`noopener noreferrer`,title:e,className:`inline-flex max-w-full items-center gap-1.5 rounded-md border bg-muted/50 px-2 py-1 my-1 text-xs text-muted-foreground hover:bg-muted hover:text-foreground transition-colors`,children:l}),t[8]=l,t[9]=a,t[10]=e,t[11]=n):n=t[11],n}let u=i??r,d;return t[12]!==l||t[13]!==u?(d=(0,G.jsx)(`div`,{className:`inline-flex max-w-full items-center gap-1.5 rounded-md border bg-muted/50 px-2 py-1 my-1 text-xs text-muted-foreground`,title:u,children:l}),t[12]=l,t[13]=u,t[14]=d):d=t[14],d},Xs=gt.define(),Q=dt.define({create(){return new Map},update(e,t){let n=!1,r=e;for(let i of t.effects)if(i.is(Xs)){n||=(r=new Map(e),!0);for(let[e,t]of i.value)r.set(e,t)}return r}}),Zs=dt.define({create(){return{onResourceClick:void 0,onResourceMouseOver:void 0,onResourceMouseOut:void 0,onPromptSubmit:void 0}},update(e){return e}}),Qs=gt.define();dt.define({create(){return new Map},update(e,t){let n=!1,r=e;for(let i of t.effects)if(i.is(Qs)){n||=(r=new Map(e),!0);for(let[e,t]of i.value)r.set(e,t)}return r}});var $s=(e,t)=>async n=>{let r=n.matchBefore(/@(\w+)?/);if(!r||r.from===r.to&&!n.explicit)return null;let i=await e();if(i.length===0)return null;let a=Xs.of(new Map(i.map(e=>[e.uri,e])));n.view&&n.view.dispatch({effects:a});let o=i.map(e=>({label:`@${e.name}`,displayLabel:e.name,detail:e.uri,info:e.description||void 0,type:e.mimeType?`constant`:`variable`,boost:e.description?100:0,...t?.(e),apply:(t,n,r,i)=>{t.dispatch({changes:{from:r,to:i,insert:`@${e.uri} `}})}}));return{from:r.from,options:o}},ec=/@[\w-]+:\/\/(?!\/)[^\s]+/;function $(e){return e.matchAll(new RegExp(ec.source,`g`))}var tc=class extends yt{resource;view;constructor(e,t){super(),this.resource=e,this.view=t}eq(e){return e.resource.uri===this.resource.uri}toDOM(){let e=document.createElement(`span`);e.className=`cm-resource-widget`,e.textContent=`@${this.resource.name}`;let t=this.view.state.field(Zs,!1),n=t?.onResourceClick,r=t?.onResourceMouseOver,i=t?.onResourceMouseOut;return n&&(e.style.cursor=`pointer`,e.addEventListener(`click`,e=>{e.preventDefault(),e.stopPropagation(),n(this.resource)})),r&&e.addEventListener(`mouseover`,e=>{e.preventDefault(),e.stopPropagation(),r(this.resource)}),i&&e.addEventListener(`mouseout`,e=>{e.preventDefault(),e.stopPropagation(),i(this.resource)}),e}},nc=class extends yt{uri;view;constructor(e,t){super(),this.uri=e,this.view=t}eq(e){return e.uri===this.uri}toDOM(){let e=document.createElement(`span`);return e.className=`cm-not-found-resource-widget`,e.textContent=`@${this.uri.split(`://`)[1]??this.uri}`,e}};function rc(e){let t=e.state.field(Q),n=[];for(let{from:r,to:i}of e.visibleRanges){let a=e.state.doc.sliceString(r,i);for(let i of $(a)){let a=r+i.index,o=i[0].slice(1),s=t.get(o);s?n.push(vt.replace({widget:new tc(s,e)}).range(a,a+i[0].length)):n.push(vt.replace({widget:new nc(o,e)}).range(a,a+i[0].length))}}return vt.set(n)}var ic=St.fromClass(class{decorations;constructor(e){this.decorations=rc(e)}update(e){(e.docChanged||e.viewportChanged||e.transactions.some(e=>e.effects.some(e=>e.is(Xs))))&&(this.decorations=rc(e.view))}},{decorations:e=>e.decorations});function ac(e){let t=document.createElement(`div`);t.className=`cm-tooltip-cursor`;let n=document.createElement(`div`);if(n.className=`cm-tooltip-cursor-title`,n.textContent=`${e.name} (${e.uri})`,t.appendChild(n),e.description){let n=document.createElement(`div`);n.className=`cm-tooltip-cursor-description`,n.textContent=e.description,t.appendChild(n)}if(e.mimeType){let n=document.createElement(`div`);n.className=`cm-tooltip-cursor-mimetype`,n.textContent=e.mimeType,t.appendChild(n)}return{dom:t}}function oc(e,t,n,r=0){for(let i of $(e)){let e=r+i.index,a=e+i[0].length;if(t>=e&&t<=a){let t=i[0].slice(1),r=n.get(t);if(r)return{resource:r,start:e,end:a}}}return null}function sc(e){return _t((t,n)=>{let{from:r,text:i}=t.state.doc.lineAt(n),a=oc(i,n,t.state.field(Q),r);return a?{pos:a.start,end:a.end,above:!0,create(){return(e.createTooltip??ac)(a.resource)}}:null})}function cc(e,t){let n=e.field(Q),r=e.doc,i=r.lineAt(t),a=r.sliceString(i.from,i.to),o=Array.from($(a));if(o.length===0)return null;for(let e of o){let r=i.from+e.index,a=r+e[0].length,o=e[0].slice(1);if(t===a&&n.has(o))return{from:r,to:a,uri:o}}return null}function lc(e,t){let n=e.field(Q),r=e.doc,i=r.lineAt(t).to,a=r.sliceString(t,i),o=Array.from($(a));if(o.length===0)return null;let s=o[0];if(!s||s.index!==0)return null;let c=t,l=t+s[0].length,u=s[0].slice(1);return n.has(u)?{from:c,to:l,uri:u}:null}function uc(e,t){let n=e.field(Q),r=e.doc,i=r.lineAt(t),a=r.sliceString(i.from,i.to),o=Array.from($(a));for(let e of o){let r=i.from+e.index,a=r+e[0].length,o=e[0].slice(1);if(t>r&&t<a&&n.has(o))return{from:r,to:a,uri:o}}return null}function dc(e,t){let n=e.field(Q),r=e.doc,i=r.lineAt(t),a=r.sliceString(i.from,t),o=Array.from($(a)),s=null;for(let e of o){let r=i.from+e.index,a=r+e[0].length,o=e[0].slice(1);n.has(o)&&a<=t&&(t>a?s=a:t===a&&(s=r))}return s}function fc(e,t){let n=e.field(Q),r=e.doc,i=r.lineAt(t),a=r.sliceString(i.from,i.to),o=Array.from($(a));for(let e of o){let r=i.from+e.index,a=r+e[0].length,o=e[0].slice(1);if(n.has(o)&&r>=t){if(t<r)return r;if(t===r)return a}}return null}var pc=pt.transactionFilter.of(e=>{let t=e.annotation(xt.userEvent);if(!t)return e;let n=e.startState.selection.main;if(!n.empty)return e;if(t===`input.type`||t.startsWith(`input`)){if(e.changes.empty)return e;let t=e.startState.field(Q),n=e.startState.doc,r=!1,i=0,a=[];if(e.changes.iterChanges((e,o,s,c,l)=>{let u=l.toString(),d=e;if(/^\s+$/.test(u)){a.push({from:e,to:o,insert:u});return}let f=n.lineAt(d),p=n.sliceString(f.from,f.to),m=Array.from($(p)),h=!1,g=!1;for(let e of m){let r=f.from+e.index,i=r+e[0].length,a=e[0].slice(1);if(t.has(a)){if(d===r){let e=d>0?n.sliceString(d-1,d):``;e!==``&&e!==` `&&e!==`
59
59
  `&&e!==` `&&(h=!0)}if(d===i){let e=d<n.length?n.sliceString(d,d+1):``;(e===``||e!==` `&&e!==`
60
60
  `&&e!==` `)&&(g=!0)}}}let _=u;h&&(_=` ${_}`,i+=1),g&&(_=` ${_}`,i+=1),_!==u&&(r=!0),a.push({from:e,to:o,insert:_})}),r)return[{changes:a,selection:e.selection?{anchor:e.selection.main.anchor+i,head:e.selection.main.head+i}:void 0,scrollIntoView:e.scrollIntoView}]}if(t===`delete.backward`||t===`delete.forward`){let r=null;return t===`delete.backward`?r=cc(e.startState,n.head):t===`delete.forward`&&(r=lc(e.startState,n.head)),r?[{changes:{from:r.from,to:r.to,insert:``},selection:{anchor:r.from},scrollIntoView:!0}]:e}if(e.selection?.main.empty&&n.empty&&!t.startsWith(`input`)&&t!==`input.type`){let t=n.head,r=e.selection.main.head,i=null;if(r<t){let n=uc(e.startState,t);i=n&&t>n.from?n.from:dc(e.startState,t)}else if(r>t){let n=uc(e.startState,t);i=n&&t<n.to?n.to:fc(e.startState,t)}if(i!==null&&i!==r)return[{selection:{anchor:i},scrollIntoView:!0}]}return e}),mc=150;function hc(e,t){let n=new Set;for(let r of $(e)){let e=r[0].slice(1);t.has(e)||n.add(e)}return[...n]}function gc(e){return[...e].sort().join(`
61
61
  `)}function _c(e){return!$(e).next().done}function vc(e){let t=[],n=[];return e.changes.iterChanges((r,i,a,o)=>{let s=e.startState.doc.lineAt(r),c=e.startState.doc.lineAt(i===r?r:i-1);t.push(e.startState.doc.sliceString(s.from,c.to));let l=e.state.doc.lineAt(a),u=e.state.doc.lineAt(o===a?a:o-1);n.push(e.state.doc.sliceString(l.from,u.to))}),{before:t.join(`
@@ -72,5 +72,5 @@ ${t}`,d++;break;case`id`:l=t.includes(`\0`)?void 0:t;break;case`retry`:/^\d+$/.t
72
72
  border-(--green-6) border hover:shadow-xs rounded px-3 ${o}`,y;t[24]===s?y=t[25]:(y=s&&(0,G.jsx)(Bt,{className:`ml-1 inline`,shortcut:s}),t[24]=s,t[25]=y);let b;return t[26]!==n||t[27]!==r||t[28]!==p||t[29]!==v||t[30]!==y||t[31]!==_?(b=(0,G.jsxs)(ze,{variant:`text`,size:p,disabled:n,onClick:r,className:v,children:[_,y]}),t[26]=n,t[27]=r,t[28]=p,t[29]=v,t[30]=y,t[31]=_,t[32]=b):b=t[32],b},Mc=e=>{let t=(0,A.c)(9),{onDecline:n,disabled:r,multipleCompletions:i,size:a,className:o,declineShortcut:s,borderless:c,label:l}=e,u=r!==void 0&&r,d=i!==void 0&&i,f=a===void 0?`sm`:a,p=`h-6 text-(--red-10) bg-(--red-3)/60 hover:bg-(--red-3)
73
73
  dark:bg-(--red-4)/80 dark:hover:bg-(--red-3) rounded px-3 font-semibold
74
74
  active:bg-(--red-5) dark:active:bg-(--red-4)
75
- border-(--red-6) border hover:shadow-xs ${c!==void 0&&c&&`border-none rounded-md`} ${o}`,m=l??`Reject${d?` all`:``}`,h;t[0]===s?h=t[1]:(h=s&&(0,G.jsx)(Bt,{className:`ml-1 inline`,shortcut:s}),t[0]=s,t[1]=h);let g;return t[2]!==u||t[3]!==n||t[4]!==f||t[5]!==p||t[6]!==m||t[7]!==h?(g=(0,G.jsxs)(ze,{variant:`text`,size:f,disabled:u,onClick:n,className:p,children:[m,h]}),t[2]=u,t[3]=n,t[4]=f,t[5]=p,t[6]=m,t[7]=h,t[8]=g):g=t[8],g},Nc=class{activeAttempt=null;cancel(){this.activeAttempt&&(this.activeAttempt.cancelled=!0)}async run({prepare:e,submit:t,onError:n}){if(this.activeAttempt!==null)return;let r={cancelled:!1};this.activeAttempt=r;try{let n=await e();if(r.cancelled)return;await t(n)}catch(e){r.cancelled||n(e)}finally{this.activeAttempt=null}}},Pc=ke(`marimo:ai-language`,`python`,g),Fc=`marimo:ai-prompt-history`,Ic=new f(me(D()),()=>[]),Lc=({onClose:e})=>{let t=i(),[n,a]=(0,W.useState)(``),{acceptOwnedStagedCells:s,beginStagedCellGeneration:l,discardOwnedStagedCells:u,finishStagedCellGeneration:d,hasOwnedStagedCells:f,onData:p}=Io(t),[m,h]=r(Pc),g=Ae(),_=(0,W.useRef)(null),v=(0,W.useRef)(new Nc).current,y=(0,W.useRef)(null),{files:b,addFiles:x,removeFile:S}=zs(),C=o(Te),ee=(0,W.useMemo)(()=>new Ha({api:g.getAiURL(`completion`).toString(),headers:()=>g.headers(),prepareSendMessagesRequest:async e=>{let t={...await Ps(e.messages),id:e.id,code:``,prompt:``,language:m};return{api:g.getAiURL(`completion`).toString(),body:t}}}),[m,g]),te=c(e=>{d(!1),ut({title:`Generate with AI failed`,description:Pt(e)})}),{sendMessage:ne,stop:w,status:T}=lo({throttle:100,transport:ee,onData:p,onError:te,onFinish:({isAbort:e,isDisconnect:t,isError:n,finishReason:r})=>{d(!e&&!t&&!n&&r===`stop`)}}),E=T===`streaming`||T===`submitted`,ie=f(),ae=c(()=>{v.cancel(),d(!1),w()}),oe=c(()=>{v.cancel(),u(),w()});(0,W.useEffect)(()=>()=>{ae()},[ae]);let se=C?.models?.edit_model||`openai/gpt-4o`,ce=Ge.parse(se).providerId,le=Ds.has(ce),ue=async()=>{E||await v.run({prepare:async()=>(_.current?.view&&yo(_.current.view),b?await js(b):void 0),submit:async e=>{l(),await ne({text:n,files:e})},onError:te})},D=(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Vt,{className:`size-4 mr-2`}),`Python`]}),de=(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Ve,{className:`size-4 mr-2`}),`SQL`]}),O=(0,G.jsxs)(Le,{modal:!1,children:[(0,G.jsxs)(Fe,{className:`flex items-center justify-between h-7 text-xs px-2 py-0.5 border rounded-md hover:text-accent-foreground`,"data-testid":`language-button`,children:[m===`python`?D:de,(0,G.jsx)(Ye,{className:`ml-1 h-3.5 w-3.5 text-muted-foreground/70`})]}),(0,G.jsxs)(Ie,{align:`center`,children:[(0,G.jsx)(`div`,{className:`px-2 py-1 text-sm text-muted-foreground`,children:`Select language`}),(0,G.jsx)(Pe,{}),(0,G.jsx)(Ne,{onClick:()=>h(`python`),children:D}),(0,G.jsx)(Ne,{onClick:()=>h(`sql`),children:de})]})]}),fe=()=>{s()&&e()},pe=()=>{oe(),_.current?.view?.focus()},me=()=>{oe(),e()},he=(0,G.jsxs)(`div`,{className:`flex items-center px-3`,children:[(0,G.jsx)(re,{className:`size-4 text-(--blue-11) mr-2`}),(0,G.jsx)(Rc,{inputRef:_,onClose:me,value:n,onChange:e=>{a(e)},onSubmit:ue,onKeyDown:kc({handleAcceptCompletion:fe,handleDeclineCompletion:pe,isLoading:E,hasCompletion:ie})}),(0,G.jsx)(ze,{variant:`text`,size:`sm`,className:`mb-0 px-1`,onClick:me,children:(0,G.jsx)(Je,{className:`size-4`})})]}),ge=(0,G.jsxs)(`div`,{className:`px-3 pt-1 flex flex-row items-center justify-between`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(qe,{triggerClassName:`h-7 text-xs max-w-64`,iconSize:`small`,forRole:`edit`,showAddCustomModelDocs:!0}),O,(0,G.jsx)(Ke,{})]}),(0,G.jsxs)(`div`,{className:`flex flex-row items-center`,children:[b.length>0&&(0,G.jsx)(`div`,{className:`flex flex-row gap-1 flex-wrap pr-1`,children:b?.map((e,t)=>(0,G.jsx)(Ws,{file:e,onRemove:()=>S(e)},`${e.name}-${t}`))}),(0,G.jsx)(Ks,{handleAddContext:()=>Es(_),isLoading:E}),le&&(0,G.jsx)(qs,{fileInputRef:y,isLoading:E,onAddFiles:x}),(0,G.jsx)(Gs,{isLoading:E,onStop:ae,onSendClick:ue,isEmpty:!n.trim(),showStopLabel:!0})]})]});return(0,G.jsxs)(`div`,{className:je(`flex flex-col w-full py-2`),children:[he,ge]})},Rc=e=>{let t=(0,A.c)(35),{value:n,placeholder:r,inputRef:a,className:o,onChange:s,onSubmit:l,onKeyDown:u,onClose:d,onAddFiles:f,additionalCompletions:p,maxHeight:m}=e,h=l,g=d,_=i(),{theme:v}=jt(),y;t[0]===p?y=t[1]:(y=e=>p?Ts([p.triggerCompletionRegex],p.completions)(e):null,t[0]=p,t[1]=y);let b=c(y),x,S,C,ee;if(t[2]!==b||t[3]!==f||t[4]!==_){let e=kt();t[9]===Symbol.for(`react.memo_cache_sentinel`)?(x=Dt({}),t[9]=x):x=t[9],S=e,C=Ec({language:e.language,store:_,onAddFiles:f}),ee=e.language.data.of({autocomplete:b}),t[2]=b,t[3]=f,t[4]=_,t[5]=x,t[6]=S,t[7]=C,t[8]=ee}else x=t[5],S=t[6],C=t[7],ee=t[8];let te;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(te=bo({storage:{load:zc,save:Bc}}),t[10]=te):te=t[10];let ne;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(ne=Ht(),t[11]=ne):ne=t[11];let w;t[12]===h?w=t[13]:(w=mt.highest(ft.of([{preventDefault:!0,stopPropagation:!0,any:(e,t)=>{let n=t.metaKey||t.ctrlKey||t.shiftKey;if(t.key===`Enter`&&!n)return h(t,e.state.doc.toString()),t.preventDefault(),t.stopPropagation(),!0;if(t.key===`Enter`&&t.shiftKey){let n=e.state.selection.main.from;return e.dispatch({changes:{from:n,to:n,insert:`
75
+ border-(--red-6) border hover:shadow-xs ${c!==void 0&&c&&`border-none rounded-md`} ${o}`,m=l??`Reject${d?` all`:``}`,h;t[0]===s?h=t[1]:(h=s&&(0,G.jsx)(Bt,{className:`ml-1 inline`,shortcut:s}),t[0]=s,t[1]=h);let g;return t[2]!==u||t[3]!==n||t[4]!==f||t[5]!==p||t[6]!==m||t[7]!==h?(g=(0,G.jsxs)(ze,{variant:`text`,size:f,disabled:u,onClick:n,className:p,children:[m,h]}),t[2]=u,t[3]=n,t[4]=f,t[5]=p,t[6]=m,t[7]=h,t[8]=g):g=t[8],g},Nc=class{activeAttempt=null;cancel(){this.activeAttempt&&(this.activeAttempt.cancelled=!0)}async run({prepare:e,submit:t,onError:n}){if(this.activeAttempt!==null)return;let r={cancelled:!1};this.activeAttempt=r;try{let n=await e();if(r.cancelled)return;await t(n)}catch(e){r.cancelled||n(e)}finally{this.activeAttempt=null}}},Pc=ke(`marimo:ai-language`,`python`,g),Fc=`marimo:ai-prompt-history`,Ic=new f(me(D()),()=>[]),Lc=({onClose:e})=>{let t=i(),[n,a]=(0,W.useState)(``),{acceptOwnedStagedCells:s,beginStagedCellGeneration:l,discardOwnedStagedCells:u,finishStagedCellGeneration:d,hasOwnedStagedCells:f,onData:p}=Io(t),[m,h]=r(Pc),g=Ae(),_=(0,W.useRef)(null),[v]=(0,W.useState)(()=>new Nc),y=(0,W.useRef)(null),{files:b,addFiles:x,removeFile:S}=zs(),C=o(Te),ee=(0,W.useMemo)(()=>new Ha({api:g.getAiURL(`completion`).toString(),headers:()=>g.headers(),prepareSendMessagesRequest:async e=>{let t={...await Ps(e.messages),id:e.id,code:``,prompt:``,language:m};return{api:g.getAiURL(`completion`).toString(),body:t}}}),[m,g]),te=c(e=>{d(!1),ut({title:`Generate with AI failed`,description:Pt(e)})}),{sendMessage:ne,stop:w,status:T}=lo({throttle:100,transport:ee,onData:p,onError:te,onFinish:({isAbort:e,isDisconnect:t,isError:n,finishReason:r})=>{d(!e&&!t&&!n&&r===`stop`)}}),E=T===`streaming`||T===`submitted`,ie=f(),ae=c(()=>{v.cancel(),d(!1),w()}),oe=c(()=>{v.cancel(),u(),w()});(0,W.useEffect)(()=>()=>{ae()},[ae]);let se=C?.models?.edit_model||`openai/gpt-4o`,ce=Ge.parse(se).providerId,le=Ds.has(ce),ue=async()=>{E||await v.run({prepare:async()=>(_.current?.view&&yo(_.current.view),b?await js(b):void 0),submit:async e=>{l(),await ne({text:n,files:e})},onError:te})},D=(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Vt,{className:`size-4 mr-2`}),`Python`]}),de=(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Ve,{className:`size-4 mr-2`}),`SQL`]}),O=(0,G.jsxs)(Le,{modal:!1,children:[(0,G.jsxs)(Fe,{className:`flex items-center justify-between h-7 text-xs px-2 py-0.5 border rounded-md hover:text-accent-foreground`,"data-testid":`language-button`,children:[m===`python`?D:de,(0,G.jsx)(Ye,{className:`ml-1 h-3.5 w-3.5 text-muted-foreground/70`})]}),(0,G.jsxs)(Ie,{align:`center`,children:[(0,G.jsx)(`div`,{className:`px-2 py-1 text-sm text-muted-foreground`,children:`Select language`}),(0,G.jsx)(Pe,{}),(0,G.jsx)(Ne,{onClick:()=>h(`python`),children:D}),(0,G.jsx)(Ne,{onClick:()=>h(`sql`),children:de})]})]}),fe=()=>{s()&&e()},pe=()=>{oe(),_.current?.view?.focus()},me=()=>{oe(),e()},he=(0,G.jsxs)(`div`,{className:`flex items-center px-3`,children:[(0,G.jsx)(re,{className:`size-4 text-(--blue-11) mr-2`}),(0,G.jsx)(Rc,{inputRef:_,onClose:me,value:n,onChange:e=>{a(e)},onSubmit:ue,onKeyDown:kc({handleAcceptCompletion:fe,handleDeclineCompletion:pe,isLoading:E,hasCompletion:ie})}),(0,G.jsx)(ze,{variant:`text`,size:`sm`,className:`mb-0 px-1`,onClick:me,children:(0,G.jsx)(Je,{className:`size-4`})})]}),ge=(0,G.jsxs)(`div`,{className:`px-3 pt-1 flex flex-row items-center justify-between`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(qe,{triggerClassName:`h-7 text-xs max-w-64`,iconSize:`small`,forRole:`edit`,showAddCustomModelDocs:!0}),O,(0,G.jsx)(Ke,{})]}),(0,G.jsxs)(`div`,{className:`flex flex-row items-center`,children:[b.length>0&&(0,G.jsx)(`div`,{className:`flex flex-row gap-1 flex-wrap pr-1`,children:b?.map((e,t)=>(0,G.jsx)(Ws,{file:e,onRemove:()=>S(e)},`${e.name}-${t}`))}),(0,G.jsx)(Ks,{handleAddContext:()=>Es(_),isLoading:E}),le&&(0,G.jsx)(qs,{fileInputRef:y,isLoading:E,onAddFiles:x}),(0,G.jsx)(Gs,{isLoading:E,onStop:ae,onSendClick:ue,isEmpty:!n.trim(),showStopLabel:!0})]})]});return(0,G.jsxs)(`div`,{className:je(`flex flex-col w-full py-2`),children:[he,ge]})},Rc=e=>{let t=(0,A.c)(35),{value:n,placeholder:r,inputRef:a,className:o,onChange:s,onSubmit:l,onKeyDown:u,onClose:d,onAddFiles:f,additionalCompletions:p,maxHeight:m}=e,h=l,g=d,_=i(),{theme:v}=jt(),y;t[0]===p?y=t[1]:(y=e=>p?Ts([p.triggerCompletionRegex],p.completions)(e):null,t[0]=p,t[1]=y);let b=c(y),x,S,C,ee;if(t[2]!==b||t[3]!==f||t[4]!==_){let e=kt();t[9]===Symbol.for(`react.memo_cache_sentinel`)?(x=Dt({}),t[9]=x):x=t[9],S=e,C=Ec({language:e.language,store:_,onAddFiles:f}),ee=e.language.data.of({autocomplete:b}),t[2]=b,t[3]=f,t[4]=_,t[5]=x,t[6]=S,t[7]=C,t[8]=ee}else x=t[5],S=t[6],C=t[7],ee=t[8];let te;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(te=bo({storage:{load:zc,save:Bc}}),t[10]=te):te=t[10];let ne;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(ne=Ht(),t[11]=ne):ne=t[11];let w;t[12]===h?w=t[13]:(w=mt.highest(ft.of([{preventDefault:!0,stopPropagation:!0,any:(e,t)=>{let n=t.metaKey||t.ctrlKey||t.shiftKey;if(t.key===`Enter`&&!n)return h(t,e.state.doc.toString()),t.preventDefault(),t.stopPropagation(),!0;if(t.key===`Enter`&&t.shiftKey){let n=e.state.selection.main.from;return e.dispatch({changes:{from:n,to:n,insert:`
76
76
  `},selection:{anchor:n+1,head:n+1}}),t.preventDefault(),t.stopPropagation(),!0}return!1}}])),t[12]=h,t[13]=w);let T;t[14]===g?T=t[15]:(T=ft.of([{key:`Escape`,preventDefault:!0,stopPropagation:!0,run:()=>(g(),!0)}]),t[14]=g,t[15]=T);let E;t[16]!==x||t[17]!==S||t[18]!==C||t[19]!==ee||t[20]!==w||t[21]!==T?(E=[x,S,C,ee,te,bt.lineWrapping,ne,w,T],t[16]=x,t[17]=S,t[18]=C,t[19]=ee,t[20]=w,t[21]=T,t[22]=E):E=t[22];let re=E,ie;t[23]===o?ie=t[24]:(ie=je(`flex-1 font-sans overflow-auto my-1`,o),t[23]=o,t[24]=ie);let ae=v===`dark`?`dark`:`light`,oe=r||`Generate with AI, @ to include context`,se;return t[25]!==re||t[26]!==a||t[27]!==m||t[28]!==s||t[29]!==u||t[30]!==ie||t[31]!==ae||t[32]!==oe||t[33]!==n?(se=(0,G.jsx)(Ut,{ref:a,className:ie,width:`100%`,maxHeight:m,value:n,basicSetup:!1,extensions:re,onChange:s,onKeyDown:u,theme:ae,placeholder:oe}),t[25]=re,t[26]=a,t[27]=m,t[28]=s,t[29]=u,t[30]=ie,t[31]=ae,t[32]=oe,t[33]=n,t[34]=se):se=t[34],se};function zc(){return Ic.get(Fc)}function Bc(e){return Ic.set(Fc,e)}export{Z as A,Ha as B,Hs as C,Ss as D,ys as E,wo as F,di as G,_a as H,Eo as I,Gt as J,qt as K,ko as L,Po as M,jo as N,ms as O,Fo as P,yo as R,zs as S,gs as T,Fa as U,ka as V,ya as W,Fs as _,Ac as a,Ms as b,Ks as c,Ws as d,Gs as f,As as g,js as h,jc as i,Ao as j,ns as k,qs as l,Ds as m,Rc as n,Mc as o,Ys as p,Kt as q,Oc as r,kc as s,Lc as t,Us as u,Is as v,Es as w,Vs as x,Ls as y,lo as z};
@@ -1,4 +1,4 @@
1
- import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{t}from"./react-DVplv7_D.js";import{At as n,Mt as r,gi as i,jn as a,jt as o,kt as s,qa as c,wn as l,yt as u}from"./cells-C6YGYGdi.js";import{C as d,I as f,N as p,O as m,T as h}from"./schemas-ChRqMOTL.js";import{r as g}from"./coerce-DWjFeXOY.js";import{t as _}from"./compiler-runtime-BrajqUja.js";import{t as v}from"./cn-ldLVeaqm.js";import{t as y}from"./jsx-runtime-B74pBk57.js";import{i as ee,n as te,r as ne,t as re}from"./tabs-BuQlZFbt.js";import{i as b,t as ie}from"./tooltip-C9TuY18o.js";import{t as ae}from"./components-CskjK6xZ.js";import{a as x,l as oe,p as S,r as C,s as w}from"./write-secret-modal-DzKAInL2.js";import{t as se}from"./plus-C5silF6g.js";import{Jt as ce,Qt as le,Xt as ue,Yt as de,nn as fe,tn as pe}from"./input-BoBxR50a.js";import{r as T}from"./strings-B2vv-ENv.js";import{t as me}from"./useIframeCapabilities-CwTkczVN.js";var E=e(t(),1),D=_();function O(){return f().optional().describe(l.of({label:`Password`,inputType:`password`,optionRegex:`(password|passwd|pgpassword|db.?pass(word)?)`}))}function k(e,t){let n=f();return n=t?n.nonempty():n.optional(),n=n.describe(l.of({label:e||`Token`,inputType:`password`,optionRegex:`(token|api.?key|access.?token|auth.?token|(^|_)pat(_|$))`})),n}function A(){return f().optional().describe(l.of({label:`Warehouse Name`,optionRegex:`(warehouse|snowflake.?warehouse)`}))}function j(e,t){let n=f();return n=t?n.nonempty():n.optional(),n.describe(l.of({label:e||`URI`,optionRegex:`(uri|url|connection.?string|database.?url|jdbc)`}))}function M(e){return f().nonempty().describe(l.of({label:e||`Host`,optionRegex:`^(?!.*(kubernetes|gpg)).*(host(name)?|pghost|db.?host|database.?host|mysql.?host|postgres.?host|server.?host)`}))}function N(){return f().describe(l.of({label:`Database`,optionRegex:`(database|db.?name|pgdatabase|^DB$|^DATABASE$)`}))}function he(){return f().describe(l.of({label:`Schema`,optionRegex:`(^SCHEMA$|db.?schema|postgres.?schema|pg.?schema|_SCHEMA$)`}))}function P(){return f().nonempty().describe(l.of({label:`Username`,optionRegex:`(username|pguser|db.?user|^USER$|_USER$)`}))}function F(e){let t=g().describe(l.of({label:`Port`,inputType:`number`,placeholder:e?.toString()})).transform(Number).refine(e=>e>=0&&e<=65535,{message:`Port must be between 0 and 65535`});return e===void 0?t:t.default(e)}function ge(){return d().default(!1).describe(l.of({label:`Read Only`}))}var _e=p({type:m(`postgres`),host:M(),port:F(5432).optional(),database:N(),username:P(),password:O(),ssl:d().default(!1).describe(l.of({label:`Use SSL`}))}).describe(l.of({direction:`two-columns`})),ve=p({type:m(`mysql`),host:M(),port:F(3306),database:N(),username:P(),password:O(),ssl:d().default(!1).describe(l.of({label:`Use SSL`}))}).describe(l.of({direction:`two-columns`})),ye=p({type:m(`sqlite`),database:N().describe(l.of({label:`Database Path`}))}).describe(l.of({direction:`two-columns`})),be=p({type:m(`duckdb`),database:N().describe(l.of({label:`Database Path`})),read_only:ge()}).describe(l.of({direction:`two-columns`})),I=p({type:m(`motherduck`),database:N().default(`my_db`).describe(l.of({label:`Database Name`})),token:k()}).describe(l.of({direction:`two-columns`})),L=p({type:m(`snowflake`),account:f().nonempty().describe(l.of({label:`Account`,optionRegex:`(snowflake.?account|^SNOWFLAKE_ACCOUNT$|account.?id)`})),warehouse:f().optional().describe(l.of({label:`Warehouse`,optionRegex:`(snowflake.?warehouse|warehouse)`})),database:N(),schema:f().optional().describe(l.of({label:`Schema`,optionRegex:`(snowflake.?schema|^SCHEMA$|_SCHEMA$)`})),role:f().optional().describe(l.of({label:`Role`})),authType:h(`type`,[p({type:m(`Password`),username:P(),password:O(),enable_mfa:d().default(!1).describe(l.of({label:`Enable MFA (Duo Push)`}))}),p({type:m(`SSO (Browser)`),username:P()}),p({type:m(`Key Pair`),username:P(),private_key_path:f().nonempty().describe(l.of({label:`Private Key Path`,placeholder:`/path/to/rsa_key.p8`})),private_key_passphrase:f().optional().describe(l.of({label:`Private Key Passphrase`,inputType:`password`,optionRegex:`(passphrase|private.?key.?passphrase|key.?passphrase)`}))}),p({type:m(`OAuth / PAT`),token:k(`Token`,!0)})]).default({type:`Password`,username:`username`,enable_mfa:!1}).describe(l.of({special:`tabs`}))}).describe(l.of({direction:`two-columns`})),R=p({type:m(`bigquery`),project:f().nonempty().describe(l.of({label:`Project ID`,optionRegex:`(bigquery.?project|gcp.?project|google.?cloud.?project|project.?id)`})),dataset:f().nonempty().describe(l.of({label:`Dataset`,optionRegex:`(bigquery.?dataset|dataset)`})),credentials_json:f().describe(l.of({label:`Credentials JSON`,special:`secret_textarea`}))}).describe(l.of({direction:`two-columns`})),z=p({type:m(`clickhouse_connect`),host:M(),port:F(8123).optional(),username:P(),password:O(),secure:d().default(!1).describe(l.of({label:`Use HTTPs`})),proxy_path:f().optional().describe(l.of({label:`Proxy Path`,placeholder:`/clickhouse`}))}).describe(l.of({direction:`two-columns`})),B=p({type:m(`timeplus`),host:M().default(`localhost`),port:F(8123).optional(),username:P().default(`default`),password:O().default(``)}).describe(l.of({direction:`two-columns`})),V=p({type:m(`chdb`),database:N().describe(l.of({label:`Database Path`})),read_only:ge()}).describe(l.of({direction:`two-columns`})),H=p({type:m(`trino`),host:M(),port:F(8080),database:N(),schema:he().optional(),username:P(),password:O(),async_support:d().default(!1).describe(l.of({label:`Async Support`}))}).describe(l.of({direction:`two-columns`})),U=p({type:m(`iceberg`),name:f().describe(l.of({label:`Catalog Name`})),catalog:h(`type`,[p({type:m(`REST`),warehouse:A(),uri:f().optional().describe(l.of({label:`URI`,placeholder:`https://`,optionRegex:`(uri|url|connection.?string|database.?url|jdbc)`})),token:k()}),p({type:m(`SQL`),warehouse:A(),uri:f().optional().describe(l.of({label:`URI`,placeholder:`jdbc:iceberg://host:port/database`,optionRegex:`(uri|url|connection.?string|database.?url|jdbc)`}))}),p({type:m(`Hive`),warehouse:A(),uri:j()}),p({type:m(`Glue`),warehouse:A(),uri:j()}),p({type:m(`DynamoDB`),"dynamodb.profile-name":f().optional().describe(l.of({label:`Profile Name`})),"dynamodb.region":f().optional().describe(l.of({label:`Region`})),"dynamodb.access-key-id":f().optional().describe(l.of({label:`Access Key ID`,inputType:`password`,optionRegex:`(access.?key.?id|aws.?access.?key)`})),"dynamodb.secret-access-key":f().optional().describe(l.of({label:`Secret Access Key`,inputType:`password`,optionRegex:`(secret.?access.?key|aws.?secret)`})),"dynamodb.session-token":f().optional().describe(l.of({label:`Session Token`,inputType:`password`,optionRegex:`(session.?token|aws.?session)`}))})]).default({type:`REST`,token:void 0}).describe(l.of({special:`tabs`}))}),W=p({type:m(`datafusion`),sessionContext:d().optional().describe(l.of({label:`Use Session Context`}))}),G=p({type:m(`pyspark`),host:M().optional(),port:F().optional()}),K=p({type:m(`redshift`),host:M(),port:F(5439),connectionType:h(`type`,[p({type:m(`IAM credentials`),region:f().describe(l.of({label:`Region`})),aws_access_key_id:f().nonempty().describe(l.of({label:`AWS Access Key ID`,inputType:`password`,optionRegex:`(access.?key.?id|aws.?access.?key)`})),aws_secret_access_key:f().nonempty().describe(l.of({label:`AWS Secret Access Key`,inputType:`password`,optionRegex:`(secret.?access.?key|aws.?secret)`})),aws_session_token:f().optional().describe(l.of({label:`AWS Session Token`,inputType:`password`,optionRegex:`(session.?token|aws.?session)`}))}),p({type:m(`DB credentials`),user:P(),password:O()})]).default({type:`IAM credentials`,aws_access_key_id:``,aws_secret_access_key:``,region:``}),database:N()}).describe(l.of({direction:`two-columns`})),q=p({type:m(`databricks`),access_token:k(`Access Token`,!0),server_hostname:M(`Server Hostname`),http_path:j(`HTTP Path`,!0),catalog:f().optional().describe(l.of({label:`Catalog`})),schema:f().optional().describe(l.of({label:`Schema`}))}).describe(l.of({direction:`two-columns`})),xe=p({type:m(`supabase`),host:M(),port:F(5432).optional(),database:N(),username:P(),password:O(),disable_client_pooling:d().default(!1).describe(l.of({label:`Disable Client-Side Pooling`}))}).describe(l.of({direction:`two-columns`})),Se=h(`type`,[_e,ve,ye,be,I,L,R,z,B,V,H,U,W,G,K,q,xe]),Ce={sqlmodel:`SQLModel`,sqlalchemy:`SQLAlchemy`,duckdb:`DuckDB`,clickhouse_connect:`ClickHouse Connect`,chdb:`chDB`,pyiceberg:`PyIceberg`,ibis:`Ibis`,motherduck:`MotherDuck`,redshift:`Redshift`,databricks:`Databricks`},J=class{connection;orm;secrets;constructor(e,t,n){this.connection=e,this.orm=t,this.secrets=n}get imports(){let e=new Set(this.generateImports());switch(this.orm){case`sqlalchemy`:e.add(`import sqlalchemy`);break;case`sqlmodel`:e.add(`import sqlmodel`);break;case`duckdb`:e.add(`import duckdb`);break;case`ibis`:e.add(`import ibis`)}return e}},we=e=>`_${e}`,Te=class{secrets={};get imports(){return Object.keys(this.secrets).length===0?new Set:new Set([`import os`])}print(e,t,n){if(e=we(e),w(t)){let r=oe(t),i=n?`os.environ.get("${r}", "${n}")`:`os.environ.get("${r}")`;return this.secrets[e]=i,e}if(n!=null){let r=`os.environ.get("${t}", "${n}")`;return this.secrets[e]=r,e}return typeof t==`number`||typeof t==`number`?`${t}`:typeof t==`boolean`?Y(t):t?`"${t}"`:``}printInFString(e,t,n){if(t===void 0)return``;if(typeof t==`number`)return`${t}`;if(typeof t==`boolean`)return Y(t);let r=this.print(e,t,n);return r.startsWith(`"`)&&r.endsWith(`"`)?r.slice(1,-1):`{${r}}`}printPassword(e,t,n,r){let i=n?this.printInFString.bind(this):this.print.bind(this);return w(e)?i(r||`password`,e):i(r||`password`,t,e)}getSecrets(){return this.secrets}formatSecrets(){return Object.keys(this.secrets).length===0?``:Object.entries(this.secrets).map(([e,t])=>`${e} = ${t}`).join(`
1
+ import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{t}from"./react-DVplv7_D.js";import{At as n,Mt as r,gi as i,jn as a,jt as o,kt as s,qa as c,wn as l,yt as u}from"./cells-2HETnlvE.js";import{C as d,I as f,N as p,O as m,T as h}from"./schemas-ChRqMOTL.js";import{r as g}from"./coerce-DWjFeXOY.js";import{t as _}from"./compiler-runtime-BrajqUja.js";import{t as v}from"./cn-ldLVeaqm.js";import{t as y}from"./jsx-runtime-B74pBk57.js";import{i as ee,n as te,r as ne,t as re}from"./tabs-CY8E4r9U.js";import{i as b,t as ie}from"./tooltip-CkGm8X7m.js";import{t as ae}from"./components-DCo7mAWO.js";import{a as x,l as oe,p as S,r as C,s as w}from"./write-secret-modal-BEx-EUlh.js";import{t as se}from"./plus-C5silF6g.js";import{Jt as ce,Qt as le,Xt as ue,Yt as de,nn as fe,tn as pe}from"./input-DmHMEZGh.js";import{r as T}from"./strings-C25fhMR_.js";import{t as me}from"./useIframeCapabilities-Czr9e4uG.js";var E=e(t(),1),D=_();function O(){return f().optional().describe(l.of({label:`Password`,inputType:`password`,optionRegex:`(password|passwd|pgpassword|db.?pass(word)?)`}))}function k(e,t){let n=f();return n=t?n.nonempty():n.optional(),n=n.describe(l.of({label:e||`Token`,inputType:`password`,optionRegex:`(token|api.?key|access.?token|auth.?token|(^|_)pat(_|$))`})),n}function A(){return f().optional().describe(l.of({label:`Warehouse Name`,optionRegex:`(warehouse|snowflake.?warehouse)`}))}function j(e,t){let n=f();return n=t?n.nonempty():n.optional(),n.describe(l.of({label:e||`URI`,optionRegex:`(uri|url|connection.?string|database.?url|jdbc)`}))}function M(e){return f().nonempty().describe(l.of({label:e||`Host`,optionRegex:`^(?!.*(kubernetes|gpg)).*(host(name)?|pghost|db.?host|database.?host|mysql.?host|postgres.?host|server.?host)`}))}function N(){return f().describe(l.of({label:`Database`,optionRegex:`(database|db.?name|pgdatabase|^DB$|^DATABASE$)`}))}function he(){return f().describe(l.of({label:`Schema`,optionRegex:`(^SCHEMA$|db.?schema|postgres.?schema|pg.?schema|_SCHEMA$)`}))}function P(){return f().nonempty().describe(l.of({label:`Username`,optionRegex:`(username|pguser|db.?user|^USER$|_USER$)`}))}function F(e){let t=g().describe(l.of({label:`Port`,inputType:`number`,placeholder:e?.toString()})).transform(Number).refine(e=>e>=0&&e<=65535,{message:`Port must be between 0 and 65535`});return e===void 0?t:t.default(e)}function ge(){return d().default(!1).describe(l.of({label:`Read Only`}))}var _e=p({type:m(`postgres`),host:M(),port:F(5432).optional(),database:N(),username:P(),password:O(),ssl:d().default(!1).describe(l.of({label:`Use SSL`}))}).describe(l.of({direction:`two-columns`})),ve=p({type:m(`mysql`),host:M(),port:F(3306),database:N(),username:P(),password:O(),ssl:d().default(!1).describe(l.of({label:`Use SSL`}))}).describe(l.of({direction:`two-columns`})),ye=p({type:m(`sqlite`),database:N().describe(l.of({label:`Database Path`}))}).describe(l.of({direction:`two-columns`})),be=p({type:m(`duckdb`),database:N().describe(l.of({label:`Database Path`})),read_only:ge()}).describe(l.of({direction:`two-columns`})),I=p({type:m(`motherduck`),database:N().default(`my_db`).describe(l.of({label:`Database Name`})),token:k()}).describe(l.of({direction:`two-columns`})),L=p({type:m(`snowflake`),account:f().nonempty().describe(l.of({label:`Account`,optionRegex:`(snowflake.?account|^SNOWFLAKE_ACCOUNT$|account.?id)`})),warehouse:f().optional().describe(l.of({label:`Warehouse`,optionRegex:`(snowflake.?warehouse|warehouse)`})),database:N(),schema:f().optional().describe(l.of({label:`Schema`,optionRegex:`(snowflake.?schema|^SCHEMA$|_SCHEMA$)`})),role:f().optional().describe(l.of({label:`Role`})),authType:h(`type`,[p({type:m(`Password`),username:P(),password:O(),enable_mfa:d().default(!1).describe(l.of({label:`Enable MFA (Duo Push)`}))}),p({type:m(`SSO (Browser)`),username:P()}),p({type:m(`Key Pair`),username:P(),private_key_path:f().nonempty().describe(l.of({label:`Private Key Path`,placeholder:`/path/to/rsa_key.p8`})),private_key_passphrase:f().optional().describe(l.of({label:`Private Key Passphrase`,inputType:`password`,optionRegex:`(passphrase|private.?key.?passphrase|key.?passphrase)`}))}),p({type:m(`OAuth / PAT`),token:k(`Token`,!0)})]).default({type:`Password`,username:`username`,enable_mfa:!1}).describe(l.of({special:`tabs`}))}).describe(l.of({direction:`two-columns`})),R=p({type:m(`bigquery`),project:f().nonempty().describe(l.of({label:`Project ID`,optionRegex:`(bigquery.?project|gcp.?project|google.?cloud.?project|project.?id)`})),dataset:f().nonempty().describe(l.of({label:`Dataset`,optionRegex:`(bigquery.?dataset|dataset)`})),credentials_json:f().describe(l.of({label:`Credentials JSON`,special:`secret_textarea`}))}).describe(l.of({direction:`two-columns`})),z=p({type:m(`clickhouse_connect`),host:M(),port:F(8123).optional(),username:P(),password:O(),secure:d().default(!1).describe(l.of({label:`Use HTTPs`})),proxy_path:f().optional().describe(l.of({label:`Proxy Path`,placeholder:`/clickhouse`}))}).describe(l.of({direction:`two-columns`})),B=p({type:m(`timeplus`),host:M().default(`localhost`),port:F(8123).optional(),username:P().default(`default`),password:O().default(``)}).describe(l.of({direction:`two-columns`})),V=p({type:m(`chdb`),database:N().describe(l.of({label:`Database Path`})),read_only:ge()}).describe(l.of({direction:`two-columns`})),H=p({type:m(`trino`),host:M(),port:F(8080),database:N(),schema:he().optional(),username:P(),password:O(),async_support:d().default(!1).describe(l.of({label:`Async Support`}))}).describe(l.of({direction:`two-columns`})),U=p({type:m(`iceberg`),name:f().describe(l.of({label:`Catalog Name`})),catalog:h(`type`,[p({type:m(`REST`),warehouse:A(),uri:f().optional().describe(l.of({label:`URI`,placeholder:`https://`,optionRegex:`(uri|url|connection.?string|database.?url|jdbc)`})),token:k()}),p({type:m(`SQL`),warehouse:A(),uri:f().optional().describe(l.of({label:`URI`,placeholder:`jdbc:iceberg://host:port/database`,optionRegex:`(uri|url|connection.?string|database.?url|jdbc)`}))}),p({type:m(`Hive`),warehouse:A(),uri:j()}),p({type:m(`Glue`),warehouse:A(),uri:j()}),p({type:m(`DynamoDB`),"dynamodb.profile-name":f().optional().describe(l.of({label:`Profile Name`})),"dynamodb.region":f().optional().describe(l.of({label:`Region`})),"dynamodb.access-key-id":f().optional().describe(l.of({label:`Access Key ID`,inputType:`password`,optionRegex:`(access.?key.?id|aws.?access.?key)`})),"dynamodb.secret-access-key":f().optional().describe(l.of({label:`Secret Access Key`,inputType:`password`,optionRegex:`(secret.?access.?key|aws.?secret)`})),"dynamodb.session-token":f().optional().describe(l.of({label:`Session Token`,inputType:`password`,optionRegex:`(session.?token|aws.?session)`}))})]).default({type:`REST`,token:void 0}).describe(l.of({special:`tabs`}))}),W=p({type:m(`datafusion`),sessionContext:d().optional().describe(l.of({label:`Use Session Context`}))}),G=p({type:m(`pyspark`),host:M().optional(),port:F().optional()}),K=p({type:m(`redshift`),host:M(),port:F(5439),connectionType:h(`type`,[p({type:m(`IAM credentials`),region:f().describe(l.of({label:`Region`})),aws_access_key_id:f().nonempty().describe(l.of({label:`AWS Access Key ID`,inputType:`password`,optionRegex:`(access.?key.?id|aws.?access.?key)`})),aws_secret_access_key:f().nonempty().describe(l.of({label:`AWS Secret Access Key`,inputType:`password`,optionRegex:`(secret.?access.?key|aws.?secret)`})),aws_session_token:f().optional().describe(l.of({label:`AWS Session Token`,inputType:`password`,optionRegex:`(session.?token|aws.?session)`}))}),p({type:m(`DB credentials`),user:P(),password:O()})]).default({type:`IAM credentials`,aws_access_key_id:``,aws_secret_access_key:``,region:``}),database:N()}).describe(l.of({direction:`two-columns`})),q=p({type:m(`databricks`),access_token:k(`Access Token`,!0),server_hostname:M(`Server Hostname`),http_path:j(`HTTP Path`,!0),catalog:f().optional().describe(l.of({label:`Catalog`})),schema:f().optional().describe(l.of({label:`Schema`}))}).describe(l.of({direction:`two-columns`})),xe=p({type:m(`supabase`),host:M(),port:F(5432).optional(),database:N(),username:P(),password:O(),disable_client_pooling:d().default(!1).describe(l.of({label:`Disable Client-Side Pooling`}))}).describe(l.of({direction:`two-columns`})),Se=h(`type`,[_e,ve,ye,be,I,L,R,z,B,V,H,U,W,G,K,q,xe]),Ce={sqlmodel:`SQLModel`,sqlalchemy:`SQLAlchemy`,duckdb:`DuckDB`,clickhouse_connect:`ClickHouse Connect`,chdb:`chDB`,pyiceberg:`PyIceberg`,ibis:`Ibis`,motherduck:`MotherDuck`,redshift:`Redshift`,databricks:`Databricks`},J=class{connection;orm;secrets;constructor(e,t,n){this.connection=e,this.orm=t,this.secrets=n}get imports(){let e=new Set(this.generateImports());switch(this.orm){case`sqlalchemy`:e.add(`import sqlalchemy`);break;case`sqlmodel`:e.add(`import sqlmodel`);break;case`duckdb`:e.add(`import duckdb`);break;case`ibis`:e.add(`import ibis`)}return e}},we=e=>`_${e}`,Te=class{secrets={};get imports(){return Object.keys(this.secrets).length===0?new Set:new Set([`import os`])}print(e,t,n){if(e=we(e),w(t)){let r=oe(t),i=n?`os.environ.get("${r}", "${n}")`:`os.environ.get("${r}")`;return this.secrets[e]=i,e}if(n!=null){let r=`os.environ.get("${t}", "${n}")`;return this.secrets[e]=r,e}return typeof t==`number`||typeof t==`number`?`${t}`:typeof t==`boolean`?Y(t):t?`"${t}"`:``}printInFString(e,t,n){if(t===void 0)return``;if(typeof t==`number`)return`${t}`;if(typeof t==`boolean`)return Y(t);let r=this.print(e,t,n);return r.startsWith(`"`)&&r.endsWith(`"`)?r.slice(1,-1):`{${r}}`}printPassword(e,t,n,r){let i=n?this.printInFString.bind(this):this.print.bind(this);return w(e)?i(r||`password`,e):i(r||`password`,t,e)}getSecrets(){return this.secrets}formatSecrets(){return Object.keys(this.secrets).length===0?``:Object.entries(this.secrets).map(([e,t])=>`${e} = ${t}`).join(`
2
2
  `)}},Ee=class extends J{generateImports(){return[]}generateConnectionCode(){let e=this.connection.ssl?`, connect_args={'sslmode': 'require'}`:``,t=this.secrets.printPassword(this.connection.password,`POSTGRES_PASSWORD`,!0),n=this.secrets.printInFString(`username`,this.connection.username),r=this.secrets.printInFString(`host`,this.connection.host),a=this.secrets.printInFString(`port`,this.connection.port),o=this.secrets.printInFString(`database`,this.connection.database);return i(`
3
3
  DATABASE_URL = f"postgresql://${n}:${t}@${r}:${a}/${o}"
4
4
  engine = ${this.orm}.create_engine(DATABASE_URL${e})