@marimo-team/frontend 0.23.15-dev57 → 0.23.15-dev59

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 (97) hide show
  1. package/dist/assets/{CellStatus-BmqOVaV8.js → CellStatus-BalYv0pK.js} +1 -1
  2. package/dist/assets/{ImperativeModal-CdbfMDGY.js → ImperativeModal-BIavOiUv.js} +1 -1
  3. package/dist/assets/{JsonOutput-DYot1XH7.js → JsonOutput-DnGSkLeP.js} +1 -1
  4. package/dist/assets/{MarimoErrorOutput-BSqq5K8X.js → MarimoErrorOutput-DO2k2fA5.js} +1 -1
  5. package/dist/assets/{RSPContexts-Dim_f45V.js → RSPContexts-CgC81f0I.js} +1 -1
  6. package/dist/assets/{RenderHTML-TA_Yn7VT.js → RenderHTML-BCvU9dYz.js} +1 -1
  7. package/dist/assets/{RunButton-S4zcUsY5.js → RunButton-BKRupqr7.js} +1 -1
  8. package/dist/assets/{add-cell-with-ai-D0uhjFH4.js → add-cell-with-ai-CEZtaZCK.js} +1 -1
  9. package/dist/assets/add-connection-dialog-CEp3SJR2.js +170 -0
  10. package/dist/assets/{agent-panel-Btuvi-d8.js → agent-panel-By4A-Cqr.js} +1 -1
  11. package/dist/assets/{ai-model-dropdown-CtgnqynF.js → ai-model-dropdown-DXgLphFa.js} +1 -1
  12. package/dist/assets/{app-config-button-6BQ37W4w.js → app-config-button-NrM9ywXA.js} +1 -1
  13. package/dist/assets/arrays-DbOq36rN.js +1 -0
  14. package/dist/assets/{cache-panel-C34G6Onb.js → cache-panel-wllSTlbM.js} +1 -1
  15. package/dist/assets/{capabilities-BrCoB8Nv.js → capabilities-B09j1Eor.js} +1 -1
  16. package/dist/assets/{cell-editor-DimpBkFx.js → cell-editor-DdofA9oQ.js} +1 -1
  17. package/dist/assets/{cell-link-racjLlk3.js → cell-link-DqBkyAFe.js} +1 -1
  18. package/dist/assets/{cells-CGB7BI8E.js → cells-Cf7bHHq3.js} +1 -1
  19. package/dist/assets/{chat-display-CotUNwmQ.js → chat-display-BG08ltQ3.js} +1 -1
  20. package/dist/assets/{chat-panel-BfU30SwT.js → chat-panel-P2CzCtXJ.js} +1 -1
  21. package/dist/assets/{chat-ui-GYEuH-3y.js → chat-ui-fAJZAoTD.js} +1 -1
  22. package/dist/assets/{column-preview-DWh6-GnT.js → column-preview-BgZLUEOj.js} +1 -1
  23. package/dist/assets/{command-C_1t09X7.js → command-CAJLPEBq.js} +1 -1
  24. package/dist/assets/{command-palette-DcFPVWFa.js → command-palette-B_QgR-xg.js} +1 -1
  25. package/dist/assets/{common-BF7JjKvQ.js → common-CD6Mj8n6.js} +1 -1
  26. package/dist/assets/{components-Dgboc1Ru.js → components-BH6gDVv6.js} +1 -1
  27. package/dist/assets/{datasource-D4MmVTwE.js → datasource-ySAiC9gr.js} +1 -1
  28. package/dist/assets/{dependency-graph-panel-B_aQ8DF2.js → dependency-graph-panel-BF23EwcD.js} +1 -1
  29. package/dist/assets/{documentation-panel-BpNvmPPo.js → documentation-panel-e9Fi9R7e.js} +1 -1
  30. package/dist/assets/{download-CzUYSR2C.js → download-BomYt3nl.js} +1 -1
  31. package/dist/assets/{edit-page-C5DbIivI.js → edit-page-Cj3IcXFr.js} +4 -4
  32. package/dist/assets/{error-entries-aBJC5y_Z.js → error-entries-Birw-8VX.js} +1 -1
  33. package/dist/assets/{error-panel-DCeb4ima.js → error-panel-DdsUL6b7.js} +1 -1
  34. package/dist/assets/{field-Zn_0QxNm.js → field-BeZbVzXA.js} +1 -1
  35. package/dist/assets/{file-explorer-panel-DQSdgXb9.js → file-explorer-panel-DbdoJbbF.js} +1 -1
  36. package/dist/assets/{file-icons-AyJaRx5i.js → file-icons-Cb54mIL8.js} +1 -1
  37. package/dist/assets/{file-name-input-BVe9DE-J.js → file-name-input-BWFcK1ey.js} +1 -1
  38. package/dist/assets/{floating-outline-CVHJWCrl.js → floating-outline-wz-WSRgP.js} +1 -1
  39. package/dist/assets/{focus-yka11DM2.js → focus-DiEyfiAG.js} +1 -1
  40. package/dist/assets/{form-DpxiqxQM.js → form-CgWNb44_.js} +1 -1
  41. package/dist/assets/{formatting-BxucbcEe.js → formatting-B_41gSF5.js} +1 -1
  42. package/dist/assets/{gallery-page-BGqOMAxl.js → gallery-page-CWQQAYpa.js} +1 -1
  43. package/dist/assets/{glide-data-editor-f79o26JK.js → glide-data-editor-lMARFWHS.js} +1 -1
  44. package/dist/assets/{home-page-D0O7qRna.js → home-page-DJ4jJsZj.js} +1 -1
  45. package/dist/assets/{html-to-image-DVl8_FaD.js → html-to-image-CwmX28T9.js} +1 -1
  46. package/dist/assets/index-BjlEpvLC.css +2 -0
  47. package/dist/assets/{index-IjEu8MdT.js → index-C0JtPo0J.js} +4 -4
  48. package/dist/assets/{input-8mGjyjCm.js → input-CqrUjynb.js} +1 -1
  49. package/dist/assets/{kiosk-mode-cR3mG96p.js → kiosk-mode-ABm3oYgq.js} +1 -1
  50. package/dist/assets/{layout-CYfmReJb.js → layout-BOwE7yok.js} +3 -3
  51. package/dist/assets/{logs-panel-CcMC4Pnz.js → logs-panel-iFV4ZJ9b.js} +1 -1
  52. package/dist/assets/{markdown-renderer-FYK9tLPx.js → markdown-renderer-QvXG0CRk.js} +1 -1
  53. package/dist/assets/{name-cell-input-CP3SwgSC.js → name-cell-input-C6cukQ9k.js} +1 -1
  54. package/dist/assets/{numbers-tWPkOv8y.js → numbers-CeeaFKqu.js} +1 -1
  55. package/dist/assets/{once-hq2TLzOp.js → once-CGKw_kwj.js} +1 -1
  56. package/dist/assets/{outline-panel-BpGyzgn5.js → outline-panel-BPlg9_CE.js} +1 -1
  57. package/dist/assets/{packages-panel-hCI7Nmiy.js → packages-panel-BzQF60rG.js} +1 -1
  58. package/dist/assets/{panels-DBz57tGI.js → panels-CW-PUlv2.js} +1 -1
  59. package/dist/assets/{process-output-BA5hioI-.js → process-output-BEhIGfkO.js} +1 -1
  60. package/dist/assets/{radio-group-BSy8AVfH.js → radio-group-CLBjGkt5.js} +1 -1
  61. package/dist/assets/{readonly-code-display-BnNUYs0b.js → readonly-code-display-D63oRtBP.js} +1 -1
  62. package/dist/assets/{readonly-python-code-CYmNS4w1.js → readonly-python-code-CW_G5e4E.js} +1 -1
  63. package/dist/assets/{reveal-component-CKvFYupv.js → reveal-component-DqMRxmUr.js} +1 -1
  64. package/dist/assets/{run-page-hoJF5_LU.js → run-page-s6Mf8p78.js} +1 -1
  65. package/dist/assets/{scratchpad-panel-CbYuxjKA.js → scratchpad-panel-CXsxdMB-.js} +1 -1
  66. package/dist/assets/{secrets-panel-DSczRBq9.js → secrets-panel-Cc5KDBk6.js} +1 -1
  67. package/dist/assets/{session-panel-5wuePVev.js → session-panel-CmHetqAb.js} +1 -1
  68. package/dist/assets/{skeleton-BCM5LVoh.js → skeleton-B_4CZVEm.js} +1 -1
  69. package/dist/assets/{snippets-panel-VAVJSwSD.js → snippets-panel-CXpGflMO.js} +1 -1
  70. package/dist/assets/{state-BFNCz9xr.js → state-BXbiRXZk.js} +1 -1
  71. package/dist/assets/{state-CX463CMn.js → state-DBzEQtWz.js} +1 -1
  72. package/dist/assets/{swiper-component-BMOo8iEv.js → swiper-component-DInvCxhI.js} +1 -1
  73. package/dist/assets/{textarea-BXl7Wvbv.js → textarea-CpFfEUet.js} +1 -1
  74. package/dist/assets/{tracing-umvmhkXm.js → tracing-CKn3gWHw.js} +1 -1
  75. package/dist/assets/{tracing-panel-iEWzedj5.js → tracing-panel-BU-o_LCd.js} +2 -2
  76. package/dist/assets/{tree-actions-Cx_hxuVi.js → tree-actions-CsC2XmGo.js} +1 -1
  77. package/dist/assets/{useCellActionButton-DwppVKEK.js → useCellActionButton-CRfIEVB5.js} +1 -1
  78. package/dist/assets/{useDeleteCell-BXlQawZn.js → useDeleteCell-EPH4kcG7.js} +1 -1
  79. package/dist/assets/{useDependencyPanelTab-BRpPLL5p.js → useDependencyPanelTab-CZnK7N2L.js} +1 -1
  80. package/dist/assets/{useIframeCapabilities-4oW1xKBS.js → useIframeCapabilities-Ccb4fvKc.js} +1 -1
  81. package/dist/assets/{useNotebookActions-BrSYyj9A.js → useNotebookActions-UvL5xEdt.js} +1 -1
  82. package/dist/assets/{useRunCells-DInLf7VK.js → useRunCells-CSSF_mJ0.js} +1 -1
  83. package/dist/assets/{useSplitCell-CO5TT2Sm.js → useSplitCell-9Qz93yPZ.js} +1 -1
  84. package/dist/assets/{vega-component-ZCmWkdad.js → vega-component-Cie3ag_T.js} +1 -1
  85. package/dist/assets/write-secret-modal-DEEn7sZV.js +1 -0
  86. package/dist/index.html +33 -33
  87. package/package.json +1 -1
  88. package/src/components/editor/chrome/panels/write-secret-modal.tsx +3 -2
  89. package/src/components/editor/connections/__tests__/secret-combobox.test.ts +134 -0
  90. package/src/components/editor/connections/database/schemas.ts +35 -27
  91. package/src/components/editor/connections/form-renderers.tsx +42 -110
  92. package/src/components/editor/connections/secret-combobox.tsx +253 -0
  93. package/src/components/editor/connections/storage/schemas.ts +12 -6
  94. package/dist/assets/add-connection-dialog-DPW3D-CP.js +0 -170
  95. package/dist/assets/arrays-DAC2orgH.js +0 -1
  96. package/dist/assets/index-D6ap9wBK.css +0 -2
  97. package/dist/assets/write-secret-modal-DKLaCyKa.js +0 -1
package/dist/index.html CHANGED
@@ -66,7 +66,7 @@
66
66
  <marimo-server-token data-token="{{ server_token }}" hidden></marimo-server-token>
67
67
  <!-- /TODO -->
68
68
  <title>{{ title }}</title>
69
- <script type="module" crossorigin src="./assets/index-IjEu8MdT.js"></script>
69
+ <script type="module" crossorigin src="./assets/index-C0JtPo0J.js"></script>
70
70
  <link rel="modulepreload" crossorigin href="./assets/preload-helper-TXkS1QI3.js">
71
71
  <link rel="modulepreload" crossorigin href="./assets/objects-BlG0ZrO0.js">
72
72
  <link rel="modulepreload" crossorigin href="./assets/chunk-LvLJmgfZ.js">
@@ -110,10 +110,10 @@
110
110
  <link rel="modulepreload" crossorigin href="./assets/useLifecycle-lLOBhc-1.js">
111
111
  <link rel="modulepreload" crossorigin href="./assets/useNonce-CbdaHKzX.js">
112
112
  <link rel="modulepreload" crossorigin href="./assets/useTheme-KXqAyDPC.js">
113
- <link rel="modulepreload" crossorigin href="./assets/arrays-DAC2orgH.js">
113
+ <link rel="modulepreload" crossorigin href="./assets/arrays-DbOq36rN.js">
114
114
  <link rel="modulepreload" crossorigin href="./assets/strings-Djnbwmfl.js">
115
- <link rel="modulepreload" crossorigin href="./assets/once-hq2TLzOp.js">
116
- <link rel="modulepreload" crossorigin href="./assets/capabilities-BrCoB8Nv.js">
115
+ <link rel="modulepreload" crossorigin href="./assets/once-CGKw_kwj.js">
116
+ <link rel="modulepreload" crossorigin href="./assets/capabilities-B09j1Eor.js">
117
117
  <link rel="modulepreload" crossorigin href="./assets/createReducer-C7kZ8zEe.js">
118
118
  <link rel="modulepreload" crossorigin href="./assets/paths-BKO-pHK6.js">
119
119
  <link rel="modulepreload" crossorigin href="./assets/dist-12S8I4CH.js">
@@ -134,55 +134,55 @@
134
134
  <link rel="modulepreload" crossorigin href="./assets/debounce-OiXznToA.js">
135
135
  <link rel="modulepreload" crossorigin href="./assets/database-zap-CKO8g4BU.js">
136
136
  <link rel="modulepreload" crossorigin href="./assets/main-BNL5rxQw.js">
137
- <link rel="modulepreload" crossorigin href="./assets/cells-CGB7BI8E.js">
137
+ <link rel="modulepreload" crossorigin href="./assets/cells-Cf7bHHq3.js">
138
138
  <link rel="modulepreload" crossorigin href="./assets/kbd-C5HnBH5U.js">
139
139
  <link rel="modulepreload" crossorigin href="./assets/useInstallPackage-BRbUAUFn.js">
140
140
  <link rel="modulepreload" crossorigin href="./assets/alert-dialog-BXegNC0I.js">
141
141
  <link rel="modulepreload" crossorigin href="./assets/dialog-D1DEsRZ2.js">
142
142
  <link rel="modulepreload" crossorigin href="./assets/useDebounce-JDKr83KO.js">
143
- <link rel="modulepreload" crossorigin href="./assets/numbers-tWPkOv8y.js">
143
+ <link rel="modulepreload" crossorigin href="./assets/numbers-CeeaFKqu.js">
144
144
  <link rel="modulepreload" crossorigin href="./assets/SSRProvider-BUSmWJKC.js">
145
145
  <link rel="modulepreload" crossorigin href="./assets/context-BFPaAUK_.js">
146
146
  <link rel="modulepreload" crossorigin href="./assets/useNumberFormatter-4-Qvf4uR.js">
147
147
  <link rel="modulepreload" crossorigin href="./assets/usePress-5hBv4sjD.js">
148
- <link rel="modulepreload" crossorigin href="./assets/input-8mGjyjCm.js">
149
- <link rel="modulepreload" crossorigin href="./assets/ImperativeModal-CdbfMDGY.js">
150
- <link rel="modulepreload" crossorigin href="./assets/cell-link-racjLlk3.js">
148
+ <link rel="modulepreload" crossorigin href="./assets/input-CqrUjynb.js">
149
+ <link rel="modulepreload" crossorigin href="./assets/ImperativeModal-BIavOiUv.js">
150
+ <link rel="modulepreload" crossorigin href="./assets/cell-link-DqBkyAFe.js">
151
151
  <link rel="modulepreload" crossorigin href="./assets/config-COUOIPEq.js">
152
152
  <link rel="modulepreload" crossorigin href="./assets/alert-jlwhGxSb.js">
153
153
  <link rel="modulepreload" crossorigin href="./assets/chevron-right-BS_NcSch.js">
154
154
  <link rel="modulepreload" crossorigin href="./assets/dropdown-menu-BFZLnWeO.js">
155
155
  <link rel="modulepreload" crossorigin href="./assets/links-wcQA1Np1.js">
156
- <link rel="modulepreload" crossorigin href="./assets/useRunCells-DInLf7VK.js">
156
+ <link rel="modulepreload" crossorigin href="./assets/useRunCells-CSSF_mJ0.js">
157
157
  <link rel="modulepreload" crossorigin href="./assets/copy-BtTOqPTS.js">
158
158
  <link rel="modulepreload" crossorigin href="./assets/copy-3iHFdt22.js">
159
159
  <link rel="modulepreload" crossorigin href="./assets/copy-icon-C2pG0ZNK.js">
160
- <link rel="modulepreload" crossorigin href="./assets/RenderHTML-TA_Yn7VT.js">
161
- <link rel="modulepreload" crossorigin href="./assets/datasource-D4MmVTwE.js">
162
- <link rel="modulepreload" crossorigin href="./assets/state-CX463CMn.js">
160
+ <link rel="modulepreload" crossorigin href="./assets/RenderHTML-BCvU9dYz.js">
161
+ <link rel="modulepreload" crossorigin href="./assets/datasource-ySAiC9gr.js">
162
+ <link rel="modulepreload" crossorigin href="./assets/state-DBzEQtWz.js">
163
163
  <link rel="modulepreload" crossorigin href="./assets/hat-glasses-BttHlyvs.js">
164
164
  <link rel="modulepreload" crossorigin href="./assets/package-Bxz_8e44.js">
165
165
  <link rel="modulepreload" crossorigin href="./assets/sparkles-DUCpRFlS.js">
166
- <link rel="modulepreload" crossorigin href="./assets/MarimoErrorOutput-BSqq5K8X.js">
166
+ <link rel="modulepreload" crossorigin href="./assets/MarimoErrorOutput-DO2k2fA5.js">
167
167
  <link rel="modulepreload" crossorigin href="./assets/ErrorBoundary-C7_5jjWi.js">
168
168
  <link rel="modulepreload" crossorigin href="./assets/eye-off-BOZA7gbn.js">
169
169
  <link rel="modulepreload" crossorigin href="./assets/refresh-cw-CYq4mK5a.js">
170
- <link rel="modulepreload" crossorigin href="./assets/tree-actions-Cx_hxuVi.js">
170
+ <link rel="modulepreload" crossorigin href="./assets/tree-actions-CsC2XmGo.js">
171
171
  <link rel="modulepreload" crossorigin href="./assets/spinner-D-V4psAa.js">
172
- <link rel="modulepreload" crossorigin href="./assets/html-to-image-DVl8_FaD.js">
173
- <link rel="modulepreload" crossorigin href="./assets/focus-yka11DM2.js">
172
+ <link rel="modulepreload" crossorigin href="./assets/html-to-image-CwmX28T9.js">
173
+ <link rel="modulepreload" crossorigin href="./assets/focus-DiEyfiAG.js">
174
174
  <link rel="modulepreload" crossorigin href="./assets/useAsyncData-Bg5iAViP.js">
175
175
  <link rel="modulepreload" crossorigin href="./assets/LazyAnyLanguageCodeMirror-sVm_hz8A.js">
176
176
  <link rel="modulepreload" crossorigin href="./assets/micromark-factory-space-Dx_STMJD.js">
177
177
  <link rel="modulepreload" crossorigin href="./assets/chunk-5FQGJX7Z-Cp0LZT-a.js">
178
- <link rel="modulepreload" crossorigin href="./assets/markdown-renderer-FYK9tLPx.js">
179
- <link rel="modulepreload" crossorigin href="./assets/command-C_1t09X7.js">
180
- <link rel="modulepreload" crossorigin href="./assets/field-Zn_0QxNm.js">
178
+ <link rel="modulepreload" crossorigin href="./assets/markdown-renderer-QvXG0CRk.js">
179
+ <link rel="modulepreload" crossorigin href="./assets/command-CAJLPEBq.js">
180
+ <link rel="modulepreload" crossorigin href="./assets/field-BeZbVzXA.js">
181
181
  <link rel="modulepreload" crossorigin href="./assets/popover-DrHQ3KEt.js">
182
182
  <link rel="modulepreload" crossorigin href="./assets/errors-PgHhDa-M.js">
183
- <link rel="modulepreload" crossorigin href="./assets/download-CzUYSR2C.js">
183
+ <link rel="modulepreload" crossorigin href="./assets/download-BomYt3nl.js">
184
184
  <link rel="modulepreload" crossorigin href="./assets/table-CH2plyy9.js">
185
- <link rel="modulepreload" crossorigin href="./assets/useIframeCapabilities-4oW1xKBS.js">
185
+ <link rel="modulepreload" crossorigin href="./assets/useIframeCapabilities-Ccb4fvKc.js">
186
186
  <link rel="modulepreload" crossorigin href="./assets/error-banner-B6eIlxzg.js">
187
187
  <link rel="modulepreload" crossorigin href="./assets/formats-ClEFGPy-.js">
188
188
  <link rel="modulepreload" crossorigin href="./assets/utils-CCTAhdFi.js">
@@ -193,7 +193,7 @@
193
193
  <link rel="modulepreload" crossorigin href="./assets/emotion-is-prop-valid.esm-lG8j6oqk.js">
194
194
  <link rel="modulepreload" crossorigin href="./assets/useDateFormatter-rtpVEy3J.js">
195
195
  <link rel="modulepreload" crossorigin href="./assets/react-icons.esm-D4GMDkIf.js">
196
- <link rel="modulepreload" crossorigin href="./assets/RSPContexts-Dim_f45V.js">
196
+ <link rel="modulepreload" crossorigin href="./assets/RSPContexts-CgC81f0I.js">
197
197
  <link rel="modulepreload" crossorigin href="./assets/table-D-tcnZC7.js">
198
198
  <link rel="modulepreload" crossorigin href="./assets/ellipsis-C_B8Ux9M.js">
199
199
  <link rel="modulepreload" crossorigin href="./assets/external-link-BOlXZUla.js">
@@ -201,33 +201,33 @@
201
201
  <link rel="modulepreload" crossorigin href="./assets/plus-AgXtozBz.js">
202
202
  <link rel="modulepreload" crossorigin href="./assets/trash-2-72W0TZ3L.js">
203
203
  <link rel="modulepreload" crossorigin href="./assets/react-resizable-panels.browser.esm-Z-MD3n3J.js">
204
- <link rel="modulepreload" crossorigin href="./assets/JsonOutput-DYot1XH7.js">
204
+ <link rel="modulepreload" crossorigin href="./assets/JsonOutput-DnGSkLeP.js">
205
205
  <link rel="modulepreload" crossorigin href="./assets/chart-no-axes-column-iDRxid4h.js">
206
206
  <link rel="modulepreload" crossorigin href="./assets/square-function-DNNRTPQJ.js">
207
207
  <link rel="modulepreload" crossorigin href="./assets/spec-CzqcmYQk.js">
208
- <link rel="modulepreload" crossorigin href="./assets/column-preview-DWh6-GnT.js">
208
+ <link rel="modulepreload" crossorigin href="./assets/column-preview-BgZLUEOj.js">
209
209
  <link rel="modulepreload" crossorigin href="./assets/icons-CIPE8AIY.js">
210
- <link rel="modulepreload" crossorigin href="./assets/radio-group-BSy8AVfH.js">
211
- <link rel="modulepreload" crossorigin href="./assets/floating-outline-CVHJWCrl.js">
210
+ <link rel="modulepreload" crossorigin href="./assets/radio-group-CLBjGkt5.js">
211
+ <link rel="modulepreload" crossorigin href="./assets/floating-outline-wz-WSRgP.js">
212
212
  <link rel="modulepreload" crossorigin href="./assets/switch-CvweaCXq.js">
213
213
  <link rel="modulepreload" crossorigin href="./assets/objectWithoutPropertiesLoose-CboCOq4o.js">
214
214
  <link rel="modulepreload" crossorigin href="./assets/esm-BL7jQmzn.js">
215
- <link rel="modulepreload" crossorigin href="./assets/readonly-python-code-CYmNS4w1.js">
215
+ <link rel="modulepreload" crossorigin href="./assets/readonly-python-code-CW_G5e4E.js">
216
216
  <link rel="modulepreload" crossorigin href="./assets/file-headphone-DAu6VO6j.js">
217
217
  <link rel="modulepreload" crossorigin href="./assets/file-CJH9JNGH.js">
218
218
  <link rel="modulepreload" crossorigin href="./assets/image-5XI2VU-q.js">
219
- <link rel="modulepreload" crossorigin href="./assets/file-icons-AyJaRx5i.js">
219
+ <link rel="modulepreload" crossorigin href="./assets/file-icons-Cb54mIL8.js">
220
220
  <link rel="modulepreload" crossorigin href="./assets/events-90X9nql5.js">
221
221
  <link rel="modulepreload" crossorigin href="./assets/share-CYpcX4N4.js">
222
222
  <link rel="modulepreload" crossorigin href="./assets/blob-C3EfaMOb.js">
223
223
  <link rel="modulepreload" crossorigin href="./assets/memoize-Tp7rARFe.js">
224
224
  <link rel="modulepreload" crossorigin href="./assets/get-C-qh_et5.js">
225
225
  <link rel="modulepreload" crossorigin href="./assets/_baseSet-CsW0tABf.js">
226
- <link rel="modulepreload" crossorigin href="./assets/state-BFNCz9xr.js">
226
+ <link rel="modulepreload" crossorigin href="./assets/state-BXbiRXZk.js">
227
227
  <link rel="modulepreload" crossorigin href="./assets/label-BElwWzf0.js">
228
- <link rel="modulepreload" crossorigin href="./assets/textarea-BXl7Wvbv.js">
228
+ <link rel="modulepreload" crossorigin href="./assets/textarea-CpFfEUet.js">
229
229
  <link rel="modulepreload" crossorigin href="./assets/refresh-ccw-sLaKP2vj.js">
230
- <link rel="modulepreload" crossorigin href="./assets/form-DpxiqxQM.js">
230
+ <link rel="modulepreload" crossorigin href="./assets/form-CgWNb44_.js">
231
231
  <link rel="modulepreload" crossorigin href="./assets/renderShortcut-BZLr8D7H.js">
232
232
  <link rel="modulepreload" crossorigin href="./assets/useBoolean-0INKlLC_.js">
233
233
  <link rel="modulepreload" crossorigin href="./assets/useDeepCompareMemoize-CSMoa-ga.js">
@@ -249,7 +249,7 @@
249
249
  <link rel="stylesheet" crossorigin href="./assets/cells-BVzo2MHf.css">
250
250
  <link rel="stylesheet" crossorigin href="./assets/markdown-renderer-DdDKmWlR.css">
251
251
  <link rel="stylesheet" crossorigin href="./assets/JsonOutput-BQtz7-np.css">
252
- <link rel="stylesheet" crossorigin href="./assets/index-D6ap9wBK.css">
252
+ <link rel="stylesheet" crossorigin href="./assets/index-BjlEpvLC.css">
253
253
  </head>
254
254
  <body>
255
255
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marimo-team/frontend",
3
- "version": "0.23.15-dev57",
3
+ "version": "0.23.15-dev59",
4
4
  "main": "dist/main.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
@@ -43,10 +43,11 @@ export const WriteSecretModal: React.FC<{
43
43
  providerNames: string[];
44
44
  onClose: () => void;
45
45
  onSuccess: (secretName: string) => void;
46
- }> = ({ providerNames, onClose, onSuccess }) => {
46
+ initialValue?: string;
47
+ }> = ({ providerNames, onClose, onSuccess, initialValue }) => {
47
48
  const { writeSecret } = useRequestClient();
48
49
  const [key, setKey] = React.useState("");
49
- const [value, setValue] = React.useState("");
50
+ const [value, setValue] = React.useState(initialValue || "");
50
51
  const [location, setLocation] = React.useState<string | undefined>(
51
52
  providerNames[0],
52
53
  );
@@ -0,0 +1,134 @@
1
+ /* Copyright 2026 Marimo. All rights reserved. */
2
+ import { describe, expect, test } from "vitest";
3
+ import { partitionSecretKeys } from "../secret-combobox";
4
+
5
+ describe("partitionSecretKeys", () => {
6
+ const keys = [
7
+ "HOSTNAME",
8
+ "PGHOST",
9
+ "DB_HOST",
10
+ "KUBERNETES_SERVICE_HOST",
11
+ "GPG_KEY",
12
+ "HOME",
13
+ "POSTGRES_PASSWORD",
14
+ "DB_PASSWORD",
15
+ "USERNAME",
16
+ "PGUSER",
17
+ "USER_AGENT",
18
+ "AWS_ACCESS_KEY_ID",
19
+ "AWS_SECRET_ACCESS_KEY",
20
+ "AWS_SESSION_TOKEN",
21
+ "OBJECT_STORAGE_KEY",
22
+ "OBJECT_STORAGE_SECRET",
23
+ "DATABASE_URL",
24
+ "SNOWFLAKE_PRIVATE_KEY_PASSPHRASE",
25
+ "PATH",
26
+ "GITHUB_PAT",
27
+ ];
28
+
29
+ test("returns all keys as other when regex is empty", () => {
30
+ expect(partitionSecretKeys(keys, "")).toEqual({
31
+ recommended: [],
32
+ other: keys,
33
+ });
34
+ });
35
+
36
+ test("handles invalid regex", () => {
37
+ expect(partitionSecretKeys(keys, "[invalid")).toEqual({
38
+ recommended: [],
39
+ other: keys,
40
+ });
41
+ });
42
+
43
+ test("recommends host-like keys and excludes kubernetes", () => {
44
+ const hostRegex =
45
+ "^(?!.*(kubernetes|gpg)).*(host(name)?|pghost|db.?host|database.?host|mysql.?host|postgres.?host|server.?host)";
46
+ const { recommended, other } = partitionSecretKeys(keys, hostRegex);
47
+
48
+ expect(recommended).toEqual(["HOSTNAME", "PGHOST", "DB_HOST"]);
49
+ expect(other).toContain("KUBERNETES_SERVICE_HOST");
50
+ expect(other).toContain("GPG_KEY");
51
+ expect(other).toContain("HOME");
52
+ });
53
+
54
+ test("recommends password-like keys", () => {
55
+ const { recommended } = partitionSecretKeys(
56
+ keys,
57
+ "(password|passwd|pgpassword|db.?pass(word)?)",
58
+ );
59
+ expect(recommended).toEqual(["POSTGRES_PASSWORD", "DB_PASSWORD"]);
60
+ });
61
+
62
+ test("recommends username keys without matching USER_AGENT", () => {
63
+ const { recommended } = partitionSecretKeys(
64
+ keys,
65
+ "(username|pguser|db.?user|^USER$|_USER$)",
66
+ );
67
+ expect(recommended).toEqual(["USERNAME", "PGUSER"]);
68
+ expect(recommended).not.toContain("USER_AGENT");
69
+ });
70
+
71
+ test("recommends aws access key id without matching the secret key", () => {
72
+ const { recommended } = partitionSecretKeys(
73
+ keys,
74
+ "(access.?key.?id|aws.?access.?key)",
75
+ );
76
+ expect(recommended).toEqual(["AWS_ACCESS_KEY_ID"]);
77
+ });
78
+
79
+ test("recommends aws secret access key", () => {
80
+ const { recommended } = partitionSecretKeys(
81
+ keys,
82
+ "(secret.?access.?key|aws.?secret)",
83
+ );
84
+ expect(recommended).toEqual(["AWS_SECRET_ACCESS_KEY"]);
85
+ });
86
+
87
+ test("recommends aws session token", () => {
88
+ const { recommended } = partitionSecretKeys(
89
+ keys,
90
+ "(session.?token|aws.?session)",
91
+ );
92
+ expect(recommended).toEqual(["AWS_SESSION_TOKEN"]);
93
+ });
94
+
95
+ test("recommends object storage credentials", () => {
96
+ expect(
97
+ partitionSecretKeys(
98
+ keys,
99
+ "(access.?key.?id|object.?storage.?key|aws.?access.?key)",
100
+ ).recommended,
101
+ ).toEqual(["AWS_ACCESS_KEY_ID", "OBJECT_STORAGE_KEY"]);
102
+ expect(
103
+ partitionSecretKeys(
104
+ keys,
105
+ "(secret.?access.?key|object.?storage.?secret|aws.?secret)",
106
+ ).recommended,
107
+ ).toEqual(["AWS_SECRET_ACCESS_KEY", "OBJECT_STORAGE_SECRET"]);
108
+ });
109
+
110
+ test("recommends uri/url-like keys", () => {
111
+ const { recommended } = partitionSecretKeys(
112
+ keys,
113
+ "(uri|url|connection.?string|database.?url|jdbc)",
114
+ );
115
+ expect(recommended).toEqual(["DATABASE_URL"]);
116
+ });
117
+
118
+ test("recommends token keys and bounds PAT so PATH is excluded", () => {
119
+ const { recommended, other } = partitionSecretKeys(
120
+ keys,
121
+ "(token|api.?key|access.?token|auth.?token|(^|_)pat(_|$))",
122
+ );
123
+ expect(recommended).toEqual(["AWS_SESSION_TOKEN", "GITHUB_PAT"]);
124
+ expect(other).toContain("PATH");
125
+ });
126
+
127
+ test("recommends passphrase keys", () => {
128
+ const { recommended } = partitionSecretKeys(
129
+ keys,
130
+ "(passphrase|private.?key.?passphrase|key.?passphrase)",
131
+ );
132
+ expect(recommended).toEqual(["SNOWFLAKE_PRIVATE_KEY_PASSPHRASE"]);
133
+ });
134
+ });
@@ -10,8 +10,7 @@ function passwordField() {
10
10
  FieldOptions.of({
11
11
  label: "Password",
12
12
  inputType: "password",
13
- placeholder: "password",
14
- optionRegex: ".*password.*",
13
+ optionRegex: "(password|passwd|pgpassword|db.?pass(word)?)",
15
14
  }),
16
15
  );
17
16
  }
@@ -24,8 +23,7 @@ function tokenField(label?: string, required?: boolean) {
24
23
  FieldOptions.of({
25
24
  label: label || "Token",
26
25
  inputType: "password",
27
- placeholder: "token",
28
- optionRegex: ".*token.*",
26
+ optionRegex: "(token|api.?key|access.?token|auth.?token|(^|_)pat(_|$))",
29
27
  }),
30
28
  );
31
29
  return field;
@@ -38,8 +36,7 @@ function warehouseNameField() {
38
36
  .describe(
39
37
  FieldOptions.of({
40
38
  label: "Warehouse Name",
41
- placeholder: "warehouse",
42
- optionRegex: ".*warehouse.*",
39
+ optionRegex: "(warehouse|snowflake.?warehouse)",
43
40
  }),
44
41
  );
45
42
  }
@@ -49,7 +46,10 @@ function uriField(label?: string, required?: boolean) {
49
46
  field = required ? field.nonempty() : field.optional();
50
47
 
51
48
  return field.describe(
52
- FieldOptions.of({ label: label || "URI", optionRegex: ".*uri.*" }),
49
+ FieldOptions.of({
50
+ label: label || "URI",
51
+ optionRegex: "(uri|url|connection.?string|database.?url|jdbc)",
52
+ }),
53
53
  );
54
54
  }
55
55
 
@@ -60,8 +60,9 @@ function hostField(label?: string) {
60
60
  .describe(
61
61
  FieldOptions.of({
62
62
  label: label || "Host",
63
- placeholder: "localhost",
64
- optionRegex: ".*host.*",
63
+ // Exclude kubernetes/system host vars that match a naive "host" search.
64
+ optionRegex:
65
+ "^(?!.*(kubernetes|gpg)).*(host(name)?|pghost|db.?host|database.?host|mysql.?host|postgres.?host|server.?host)",
65
66
  }),
66
67
  );
67
68
  }
@@ -70,8 +71,7 @@ function databaseField() {
70
71
  return z.string().describe(
71
72
  FieldOptions.of({
72
73
  label: "Database",
73
- placeholder: "db name",
74
- optionRegex: ".*database.*",
74
+ optionRegex: "(database|db.?name|pgdatabase|^DB$|^DATABASE$)",
75
75
  }),
76
76
  );
77
77
  }
@@ -80,8 +80,7 @@ function schemaField() {
80
80
  return z.string().describe(
81
81
  FieldOptions.of({
82
82
  label: "Schema",
83
- placeholder: "schema name",
84
- optionRegex: ".*schema.*",
83
+ optionRegex: "(^SCHEMA$|db.?schema|postgres.?schema|pg.?schema|_SCHEMA$)",
85
84
  }),
86
85
  );
87
86
  }
@@ -93,8 +92,7 @@ function usernameField() {
93
92
  .describe(
94
93
  FieldOptions.of({
95
94
  label: "Username",
96
- placeholder: "username",
97
- optionRegex: ".*username.*",
95
+ optionRegex: "(username|pguser|db.?user|^USER$|_USER$)",
98
96
  }),
99
97
  );
100
98
  }
@@ -196,7 +194,7 @@ export const SnowflakeConnectionSchema = z
196
194
  .describe(
197
195
  FieldOptions.of({
198
196
  label: "Account",
199
- optionRegex: ".*snowflake.*",
197
+ optionRegex: "(snowflake.?account|^SNOWFLAKE_ACCOUNT$|account.?id)",
200
198
  }),
201
199
  ),
202
200
  warehouse: z
@@ -205,7 +203,7 @@ export const SnowflakeConnectionSchema = z
205
203
  .describe(
206
204
  FieldOptions.of({
207
205
  label: "Warehouse",
208
- optionRegex: ".*snowflake.*",
206
+ optionRegex: "(snowflake.?warehouse|warehouse)",
209
207
  }),
210
208
  ),
211
209
  database: databaseField(),
@@ -215,7 +213,7 @@ export const SnowflakeConnectionSchema = z
215
213
  .describe(
216
214
  FieldOptions.of({
217
215
  label: "Schema",
218
- optionRegex: ".*snowflake.*",
216
+ optionRegex: "(snowflake.?schema|^SCHEMA$|_SCHEMA$)",
219
217
  }),
220
218
  ),
221
219
  role: z
@@ -256,7 +254,8 @@ export const SnowflakeConnectionSchema = z
256
254
  FieldOptions.of({
257
255
  label: "Private Key Passphrase",
258
256
  inputType: "password",
259
- optionRegex: ".*passphrase.*",
257
+ optionRegex:
258
+ "(passphrase|private.?key.?passphrase|key.?passphrase)",
260
259
  }),
261
260
  ),
262
261
  }),
@@ -283,7 +282,8 @@ export const BigQueryConnectionSchema = z
283
282
  .describe(
284
283
  FieldOptions.of({
285
284
  label: "Project ID",
286
- optionRegex: ".*bigquery.*",
285
+ optionRegex:
286
+ "(bigquery.?project|gcp.?project|google.?cloud.?project|project.?id)",
287
287
  }),
288
288
  ),
289
289
  dataset: z
@@ -292,7 +292,7 @@ export const BigQueryConnectionSchema = z
292
292
  .describe(
293
293
  FieldOptions.of({
294
294
  label: "Dataset",
295
- optionRegex: ".*bigquery.*",
295
+ optionRegex: "(bigquery.?dataset|dataset)",
296
296
  }),
297
297
  ),
298
298
  credentials_json: z
@@ -377,7 +377,7 @@ export const IcebergConnectionSchema = z.object({
377
377
  FieldOptions.of({
378
378
  label: "URI",
379
379
  placeholder: "https://",
380
- optionRegex: ".*uri.*",
380
+ optionRegex: "(uri|url|connection.?string|database.?url|jdbc)",
381
381
  }),
382
382
  ),
383
383
  token: tokenField(),
@@ -392,7 +392,7 @@ export const IcebergConnectionSchema = z.object({
392
392
  FieldOptions.of({
393
393
  label: "URI",
394
394
  placeholder: "jdbc:iceberg://host:port/database",
395
- optionRegex: ".*uri.*",
395
+ optionRegex: "(uri|url|connection.?string|database.?url|jdbc)",
396
396
  }),
397
397
  ),
398
398
  }),
@@ -419,7 +419,13 @@ export const IcebergConnectionSchema = z.object({
419
419
  "dynamodb.access-key-id": z
420
420
  .string()
421
421
  .optional()
422
- .describe(FieldOptions.of({ label: "Access Key ID" })),
422
+ .describe(
423
+ FieldOptions.of({
424
+ label: "Access Key ID",
425
+ inputType: "password",
426
+ optionRegex: "(access.?key.?id|aws.?access.?key)",
427
+ }),
428
+ ),
423
429
  "dynamodb.secret-access-key": z
424
430
  .string()
425
431
  .optional()
@@ -427,6 +433,7 @@ export const IcebergConnectionSchema = z.object({
427
433
  FieldOptions.of({
428
434
  label: "Secret Access Key",
429
435
  inputType: "password",
436
+ optionRegex: "(secret.?access.?key|aws.?secret)",
430
437
  }),
431
438
  ),
432
439
  "dynamodb.session-token": z
@@ -436,6 +443,7 @@ export const IcebergConnectionSchema = z.object({
436
443
  FieldOptions.of({
437
444
  label: "Session Token",
438
445
  inputType: "password",
446
+ optionRegex: "(session.?token|aws.?session)",
439
447
  }),
440
448
  ),
441
449
  }),
@@ -484,7 +492,7 @@ export const RedshiftConnectionSchema = z
484
492
  FieldOptions.of({
485
493
  label: "AWS Access Key ID",
486
494
  inputType: "password",
487
- optionRegex: ".*aws_access_key_id.*",
495
+ optionRegex: "(access.?key.?id|aws.?access.?key)",
488
496
  }),
489
497
  ),
490
498
  aws_secret_access_key: z
@@ -494,7 +502,7 @@ export const RedshiftConnectionSchema = z
494
502
  FieldOptions.of({
495
503
  label: "AWS Secret Access Key",
496
504
  inputType: "password",
497
- optionRegex: ".*aws_secret_access_key.*",
505
+ optionRegex: "(secret.?access.?key|aws.?secret)",
498
506
  }),
499
507
  ),
500
508
  aws_session_token: z
@@ -504,7 +512,7 @@ export const RedshiftConnectionSchema = z
504
512
  FieldOptions.of({
505
513
  label: "AWS Session Token",
506
514
  inputType: "password",
507
- optionRegex: ".*aws_session_token.*",
515
+ optionRegex: "(session.?token|aws.?session)",
508
516
  }),
509
517
  ),
510
518
  }),