@marimo-team/islands 0.25.2-dev38 → 0.25.2-dev39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ErrorBoundary-DijP35Hz.js → ErrorBoundary-CsxO4wno.js} +1 -1
- package/dist/{cells-DxsypDZK.js → cells-HZp46rAW.js} +1 -1
- package/dist/{chat-ui-Co3Bmh7f.js → chat-ui-BSm4FFA7.js} +5 -5
- package/dist/{code-visibility-CkpAHxFN.js → code-visibility-CUy-oPZG.js} +3 -3
- package/dist/{common-CNfq9low.js → common-aPjLFV7m.js} +5 -5
- package/dist/{data-grid-overlay-editor-BiwnU7Vf.js → data-grid-overlay-editor-CC6Piy8U.js} +1 -1
- package/dist/{error-entries-xDl6bkdA.js → error-entries-BmuhCp3w.js} +1 -1
- package/dist/{feedback-button-XBUpOgxg.js → feedback-button-CboHYjAL.js} +4 -4
- package/dist/{formats-Q9gwlLyD.js → formats-pPD5eNN7.js} +1 -1
- package/dist/{glide-data-editor-_idIe87I.js → glide-data-editor-Bi1Zkj5b.js} +3 -3
- package/dist/{globals-DVhC3HN1.js → globals-ClrEbCdT.js} +1 -1
- package/dist/{html-to-image-Da6rA8p1.js → html-to-image-BF9hL2Aa.js} +2 -2
- package/dist/main.js +13 -13
- package/dist/{number-overlay-editor-DRZcboS9.js → number-overlay-editor-Bp51ZyFL.js} +1 -1
- package/dist/{process-output-_4TxDper.js → process-output-BCZh7Wj_.js} +2 -2
- package/dist/{reveal-component-ByOPn7wN.js → reveal-component-CnB5gUUC.js} +4 -4
- package/dist/{toDate-DWVp6uE1.js → toDate-G79A_pyJ.js} +1 -2
- package/dist/{vega-component-9siY74NS.js → vega-component-DyMT9lIi.js} +2 -2
- package/package.json +1 -1
- package/src/components/editor/actions/__tests__/pair-with-agent-commands.test.ts +32 -46
- package/src/components/editor/actions/__tests__/pair-with-agent-modal.test.tsx +29 -40
- package/src/components/editor/actions/pair-with-agent-commands.ts +3 -4
- package/src/components/editor/actions/pair-with-agent-modal.tsx +4 -7
- package/src/core/config/pair.ts +0 -1
- package/src/core/kernel/session.ts +9 -0
- package/src/core/websocket/useMarimoKernelConnection.tsx +10 -1
|
@@ -135,7 +135,7 @@ function F(e) {
|
|
|
135
135
|
}
|
|
136
136
|
//#endregion
|
|
137
137
|
//#region src/components/editor/boundary/ErrorBoundary.tsx
|
|
138
|
-
var I = (0, T.lazy)(() => import("./feedback-button-
|
|
138
|
+
var I = (0, T.lazy)(() => import("./feedback-button-CboHYjAL.js").then((e) => ({ default: e.FeedbackModal }))), L = (e) => {
|
|
139
139
|
let t = (0, w.c)(2), n;
|
|
140
140
|
return t[0] === e.children ? n = t[1] : (n = /* @__PURE__ */ (0, j.jsx)(O, {
|
|
141
141
|
FallbackComponent: R,
|
|
@@ -7,7 +7,7 @@ import { f as p, g as m, i as h, t as g } from "./tooltip-Bi36DgYh.js";
|
|
|
7
7
|
import { a as _, c as v, i as y, o as b, r as x, s as S, t as C } from "./useLifecycle-3vGhRa1o.js";
|
|
8
8
|
import { t as w } from "./check-DGZ74tV2.js";
|
|
9
9
|
import { C as ee, D as T, S as te, a as ne, b as re, c as ie, i as ae, n as oe, o as se, r as E, s as D, t as ce } from "./select-BcObMjGz.js";
|
|
10
|
-
import { C as le, S as ue, T as de, _ as O, l as k, t as fe, v as pe, w as me, y as he } from "./toDate-
|
|
10
|
+
import { C as le, S as ue, T as de, _ as O, l as k, t as fe, v as pe, w as me, y as he } from "./toDate-G79A_pyJ.js";
|
|
11
11
|
import { t as ge } from "./react-dom-BUgJ-ab_.js";
|
|
12
12
|
import { t as _e } from "./jsx-runtime-DgDPJV9S.js";
|
|
13
13
|
import { C as ve, Ct as ye, D as be, F as xe, L as Se, M as Ce, S as we, Tt as Te, bt as Ee, j as De, wt as Oe, xt as ke } from "./use-restore-focus-ZgG5Br63.js";
|
|
@@ -3,13 +3,13 @@ import { c as n, g as r, h as i, t as a } from "./button-B0Xgl-Qn.js";
|
|
|
3
3
|
import { t as o } from "./react-ofJbxM4x.js";
|
|
4
4
|
import { t as s } from "./compiler-runtime-Cj8ZWiNS.js";
|
|
5
5
|
import { i as c, t as l } from "./copy-icon-qmRg_VTX.js";
|
|
6
|
-
import { F as u, H as d, U as f, V as p, X as m, Y as h, Z as g, _, a as v, c as y, d as b, f as x, g as S, h as C, l as w, m as T, n as E, p as D, r as O, t as k, v as A, x as ee, y as te, z as ne } from "./html-to-image-
|
|
6
|
+
import { F as u, H as d, U as f, V as p, X as m, Y as h, Z as g, _, a as v, c as y, d as b, f as x, g as S, h as C, l as w, m as T, n as E, p as D, r as O, t as k, v as A, x as ee, y as te, z as ne } from "./html-to-image-BF9hL2Aa.js";
|
|
7
7
|
import { g as j, t as re } from "./tooltip-Bi36DgYh.js";
|
|
8
|
-
import { $ as ie, $t as ae, It as oe, K as se, Mt as ce, N as le, St as ue, Vt as de, X as fe, _t as pe, b as me, cn as he, d as ge, it as _e, pn as ve, rt as ye, sn as be, un as xe, ut as Se, vt as Ce, yt as we } from "./cells-
|
|
8
|
+
import { $ as ie, $t as ae, It as oe, K as se, Mt as ce, N as le, St as ue, Vt as de, X as fe, _t as pe, b as me, cn as he, d as ge, it as _e, pn as ve, rt as ye, sn as be, un as xe, ut as Se, vt as Ce, yt as we } from "./cells-HZp46rAW.js";
|
|
9
9
|
import { A as Te, C as Ee, M as De, b as Oe } from "./select-BcObMjGz.js";
|
|
10
10
|
import { _ as ke, f as Ae, h as je, i as Me, n as Ne, t as Pe } from "./dropdown-menu-BaqM0t4N.js";
|
|
11
|
-
import { T as Fe, p as Ie } from "./toDate-
|
|
12
|
-
import { d as Le, f as Re, i as ze, n as Be, t as Ve, u as He } from "./process-output-
|
|
11
|
+
import { T as Fe, p as Ie } from "./toDate-G79A_pyJ.js";
|
|
12
|
+
import { d as Le, f as Re, i as ze, n as Be, t as Ve, u as He } from "./process-output-BCZh7Wj_.js";
|
|
13
13
|
import { t as Ue } from "./jsx-runtime-DgDPJV9S.js";
|
|
14
14
|
import { A as We, C as Ge, D as Ke, E as qe, F as Je, L as Ye, M as Xe, O as Ze, P as Qe, R as $e, S as et, T as tt, V as nt, b as rt, j as it, v as at, w as ot, x as st, y as ct, z as lt } from "./use-restore-focus-ZgG5Br63.js";
|
|
15
15
|
import { n as ut } from "./error-banner-DzAmP0AQ.js";
|
|
@@ -22,7 +22,7 @@ import { n as kt, o as At, r as jt } from "./dist-CkTTIdBe.js";
|
|
|
22
22
|
import { n as Mt } from "./dist-CrSP_H1M.js";
|
|
23
23
|
import { n as Nt, t as Pt } from "./esm-DAVrGVKP.js";
|
|
24
24
|
import { t as Ft } from "./useAsyncData-BD7NLQ3_.js";
|
|
25
|
-
import { i as It, r as Lt, t as Rt } from "./error-entries-
|
|
25
|
+
import { i as It, r as Lt, t as Rt } from "./error-entries-BmuhCp3w.js";
|
|
26
26
|
var zt = j("ban", [["circle", {
|
|
27
27
|
cx: "12",
|
|
28
28
|
cy: "12",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { g as e } from "./button-B0Xgl-Qn.js";
|
|
2
2
|
import { t } from "./compiler-runtime-Cj8ZWiNS.js";
|
|
3
|
-
import { H as n, V as r } from "./cells-
|
|
3
|
+
import { H as n, V as r } from "./cells-HZp46rAW.js";
|
|
4
4
|
import { C as i } from "./select-BcObMjGz.js";
|
|
5
|
-
import { C as a, d as o, x as s, y as c } from "./toDate-
|
|
5
|
+
import { C as a, d as o, x as s, y as c } from "./toDate-G79A_pyJ.js";
|
|
6
6
|
import { C as l, E as u, a as d, b as f } from "./useTheme-BOw801nZ.js";
|
|
7
7
|
//#region src/core/islands/state.ts
|
|
8
8
|
var p = t(), m = u(!1), h = u(/* @__PURE__ */ new Set()), g = u((e) => e(h)?.size === 0), _ = u(!1), v = u((e) => e(_) && e(m) === !1), y = u({
|
|
@@ -18,7 +18,7 @@ function x() {
|
|
|
18
18
|
return e.warn("Failed to get version from mount config"), null;
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
-
var S = x() || "0.25.2-
|
|
21
|
+
var S = x() || "0.25.2-dev39", C = u(S), w = u(!0);
|
|
22
22
|
u(null);
|
|
23
23
|
//#endregion
|
|
24
24
|
//#region src/core/wasm/state.ts
|
|
@@ -3,16 +3,16 @@ import { _ as t, c as n, f as r, g as i, h as a, m as o, n as s, p as c, r as l,
|
|
|
3
3
|
import { t as d } from "./react-ofJbxM4x.js";
|
|
4
4
|
import { t as f } from "./compiler-runtime-Cj8ZWiNS.js";
|
|
5
5
|
import { i as p, n as m, r as h, t as g } from "./copy-icon-qmRg_VTX.js";
|
|
6
|
-
import { $ as _, A as v, B as y, D as b, E as x, F as S, H as C, M as w, N as T, Q as E, S as D, T as O, V as k, W as A, X as j, Y as M, Z as N, _ as P, g as F, n as I, r as L, s as R, t as z, u as ee, v as te, w as B, y as ne, z as re } from "./html-to-image-
|
|
6
|
+
import { $ as _, A as v, B as y, D as b, E as x, F as S, H as C, M as w, N as T, Q as E, S as D, T as O, V as k, W as A, X as j, Y as M, Z as N, _ as P, g as F, n as I, r as L, s as R, t as z, u as ee, v as te, w as B, y as ne, z as re } from "./html-to-image-BF9hL2Aa.js";
|
|
7
7
|
import { a as ie, f as ae, g as V, n as oe, o as se, r as ce, t as H } from "./tooltip-Bi36DgYh.js";
|
|
8
|
-
import { $t as le, C as ue, E as de, H as fe, Ht as pe, Jt as me, L as he, Lt as ge, M as _e, N as ve, St as ye, V as be, Vt as xe, W as Se, Xt as Ce, Y as we, Yt as Te, _ as Ee, a as De, an as Oe, at as ke, d as Ae, ft as je, g as Me, h as Ne, i as Pe, in as Fe, j as Ie, ln as Le, mn as Re, mt as ze, nn as Be, nt as Ve, pn as He, pt as Ue, rt as We, sn as Ge, tt as Ke, un as qe, ut as Je, wt as Ye, x as Xe } from "./cells-
|
|
8
|
+
import { $t as le, C as ue, E as de, H as fe, Ht as pe, Jt as me, L as he, Lt as ge, M as _e, N as ve, St as ye, V as be, Vt as xe, W as Se, Xt as Ce, Y as we, Yt as Te, _ as Ee, a as De, an as Oe, at as ke, d as Ae, ft as je, g as Me, h as Ne, i as Pe, in as Fe, j as Ie, ln as Le, mn as Re, mt as ze, nn as Be, nt as Ve, pn as He, pt as Ue, rt as We, sn as Ge, tt as Ke, un as qe, ut as Je, wt as Ye, x as Xe } from "./cells-HZp46rAW.js";
|
|
9
9
|
import { c as Ze, i as Qe, r as $e } from "./useLifecycle-3vGhRa1o.js";
|
|
10
10
|
import { a as et, i as tt, n as nt, r as rt, t as it } from "./useDateFormatter-D8XWr8lL.js";
|
|
11
11
|
import { t as at } from "./check-DGZ74tV2.js";
|
|
12
12
|
import { A as ot, C as st, D as ct, M as lt, O as ut, S as dt, _ as ft, b as pt, c as mt, d as ht, g as gt, h as _t, i as vt, l as yt, m as bt, n as xt, p as St, s as Ct, t as wt, u as Tt, v as Et, y as Dt } from "./select-BcObMjGz.js";
|
|
13
13
|
import { $ as Ot, $t as kt, A as At, At as jt, B as Mt, Bt as Nt, Ct as Pt, D as Ft, Dt as It, E as Lt, Et as Rt, F as zt, Ft as Bt, G as Vt, Gt as Ht, H as Ut, Ht as Wt, I as Gt, It as Kt, Jt as qt, K as Jt, Kt as Yt, L as Xt, Lt as Zt, M as Qt, Mt as $t, N as en, Nt as tn, O as nn, Ot as rn, P as an, Pt as on, Q as sn, Qt as cn, R as ln, Rt as un, S as dn, St as fn, T as pn, Tt as mn, U as hn, Ut as gn, V as _n, Vt as vn, W as yn, Wt as bn, X as xn, Xt as Sn, Y as Cn, Yt as wn, Z as Tn, Zt as En, _ as Dn, _t as On, a as kn, an as An, b as jn, bt as Mn, cn as Nn, ct as Pn, d as Fn, dn as In, dt as Ln, en as Rn, et as zn, f as Bn, fn as Vn, ft as Hn, gt as Un, h as Wn, ht as Gn, i as Kn, it as qn, j as Jn, jt as Yn, k as Xn, kt as Zn, l as Qn, ln as $n, lt as er, mt as tr, n as nr, nn as rr, nt as ir, o as ar, on as or, ot as sr, pn as cr, pt as lr, qt as ur, rn as dr, rt as fr, s as pr, sn as mr, st as hr, t as gr, tn as _r, tt as vr, u as yr, un as br, ut as xr, vt as Sr, w as Cr, wt as wr, x as Tr, xt as Er, y as Dr, yt as Or, z as kr, zt as Ar } from "./dropdown-menu-BaqM0t4N.js";
|
|
14
|
-
import { C as jr, a as Mr, b as Nr, c as Pr, d as Fr, i as Ir, n as Lr, o as Rr, p as zr, r as Br, s as Vr, t as Hr, x as Ur } from "./toDate-
|
|
15
|
-
import { n as Wr, t as Gr } from "./ErrorBoundary-
|
|
14
|
+
import { C as jr, a as Mr, b as Nr, c as Pr, d as Fr, i as Ir, n as Lr, o as Rr, p as zr, r as Br, s as Vr, t as Hr, x as Ur } from "./toDate-G79A_pyJ.js";
|
|
15
|
+
import { n as Wr, t as Gr } from "./ErrorBoundary-CsxO4wno.js";
|
|
16
16
|
import { t as Kr } from "./clsx-CoeGtWvn.js";
|
|
17
17
|
import { t as qr } from "./react-dom-BUgJ-ab_.js";
|
|
18
18
|
import { t as Jr } from "./jsx-runtime-DgDPJV9S.js";
|
|
@@ -30,7 +30,7 @@ import { n as $i, t as ea } from "./once-BtE-wKRL.js";
|
|
|
30
30
|
import { o as ta } from "./dist-BorMD-uX.js";
|
|
31
31
|
import { a as na, i as ra, n as ia, o as aa, r as oa, t as sa } from "./dialog-CILKhbsG.js";
|
|
32
32
|
import { t as ca } from "./useAsyncData-BD7NLQ3_.js";
|
|
33
|
-
import { a as la, i as ua, n as da, r as fa, t as pa } from "./formats-
|
|
33
|
+
import { a as la, i as ua, n as da, r as fa, t as pa } from "./formats-pPD5eNN7.js";
|
|
34
34
|
import { n as U, t as W } from "./objectWithoutPropertiesLoose-BRDcTsfB.js";
|
|
35
35
|
import { M as ma, n as ha } from "./vega-loader.browser-DNST6uVf.js";
|
|
36
36
|
import { a as ga, n as _a, r as va, t as ya } from "./loader-C9OUkMrj.js";
|
|
@@ -2,7 +2,7 @@ import { a as e } from "./rolldown-runtime-Cb76FRpK.js";
|
|
|
2
2
|
import { t } from "./react-ofJbxM4x.js";
|
|
3
3
|
import { t as n } from "./react-dom-BUgJ-ab_.js";
|
|
4
4
|
import { c as r, l as i, u as a } from "./data-grid-types-BucVmDDp.js";
|
|
5
|
-
import { a as o, i as s, n as c, r as l } from "./glide-data-editor-
|
|
5
|
+
import { a as o, i as s, n as c, r as l } from "./glide-data-editor-Bi1Zkj5b.js";
|
|
6
6
|
//#region ../node_modules/.pnpm/@glideapps+glide-data-grid@6.0.4-alpha24_lodash@4.17.21_marked@15.0.12_react-dom@19.2.8_b9e6aec46d952f631ce71b0585d2a8e5/node_modules/@glideapps/glide-data-grid/dist/esm/internal/data-grid-overlay-editor/data-grid-overlay-editor-style.js
|
|
7
7
|
var u = /* @__PURE__ */ e(t(), 1), d = /* @__PURE__ */ e(n(), 1), f = /*#__PURE__*/ o("div")({
|
|
8
8
|
name: "DataGridOverlayEditorStyle",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { At as e, N as t, b as n, d as r, jt as i, kt as a } from "./cells-
|
|
1
|
+
import { At as e, N as t, b as n, d as r, jt as i, kt as a } from "./cells-HZp46rAW.js";
|
|
2
2
|
import { C as o } from "./select-BcObMjGz.js";
|
|
3
3
|
//#region src/core/errors/error-entries.ts
|
|
4
4
|
function s(t) {
|
|
@@ -3,15 +3,15 @@ import { h as t, t as n } from "./button-B0Xgl-Qn.js";
|
|
|
3
3
|
import { t as r } from "./react-ofJbxM4x.js";
|
|
4
4
|
import { t as i } from "./compiler-runtime-Cj8ZWiNS.js";
|
|
5
5
|
import { t as a } from "./copy-icon-qmRg_VTX.js";
|
|
6
|
-
import { Ct as o, Ft as s, H as c, L as l, Lt as u, V as d, d as f, un as p } from "./cells-
|
|
6
|
+
import { Ct as o, Ft as s, H as c, L as l, Lt as u, V as d, d as f, un as p } from "./cells-HZp46rAW.js";
|
|
7
7
|
import { b as m } from "./select-BcObMjGz.js";
|
|
8
|
-
import { n as h, t as ee } from "./globals-
|
|
8
|
+
import { n as h, t as ee } from "./globals-ClrEbCdT.js";
|
|
9
9
|
import { t as g } from "./jsx-runtime-DgDPJV9S.js";
|
|
10
10
|
import { C as _, _ as te, i as v } from "./useTheme-BOw801nZ.js";
|
|
11
11
|
import { a as ne, i as re, n as ie, r as ae } from "./dialog-CILKhbsG.js";
|
|
12
12
|
import { t as oe } from "./useAsyncData-BD7NLQ3_.js";
|
|
13
|
-
import { t as se } from "./code-visibility-
|
|
14
|
-
import { i as ce, n as le } from "./error-entries-
|
|
13
|
+
import { t as se } from "./code-visibility-CUy-oPZG.js";
|
|
14
|
+
import { i as ce, n as le } from "./error-entries-BmuhCp3w.js";
|
|
15
15
|
//#region src/components/ui/skeleton.tsx
|
|
16
16
|
var y = /* @__PURE__ */ e(r(), 1), b = i(), x = g(), ue = (e) => {
|
|
17
17
|
let n = (0, b.c)(8), r, i;
|
|
@@ -2,7 +2,7 @@ import { a as e } from "./rolldown-runtime-Cb76FRpK.js";
|
|
|
2
2
|
import { h as t, r as n } from "./button-B0Xgl-Qn.js";
|
|
3
3
|
import { t as r } from "./react-ofJbxM4x.js";
|
|
4
4
|
import { t as i } from "./compiler-runtime-Cj8ZWiNS.js";
|
|
5
|
-
import { t as a } from "./toDate-
|
|
5
|
+
import { t as a } from "./toDate-G79A_pyJ.js";
|
|
6
6
|
import { t as o } from "./jsx-runtime-DgDPJV9S.js";
|
|
7
7
|
import { i as s } from "./loader-C9OUkMrj.js";
|
|
8
8
|
//#region ../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/isDate.js
|
|
@@ -6,7 +6,7 @@ import { i as s, n as c, r as l } from "./copy-icon-qmRg_VTX.js";
|
|
|
6
6
|
import { C as u, c as d, i as f, n as p, s as m, t as h, x as g } from "./select-BcObMjGz.js";
|
|
7
7
|
import { d as _, h as v, i as y, l as b, n as x, o as S, s as C, t as w, u as T } from "./dropdown-menu-BaqM0t4N.js";
|
|
8
8
|
import { c as E, d as D, l as O, n as k, o as A, s as ee, t as j, u as te } from "./glide-utils-CzzWU59p.js";
|
|
9
|
-
import { n as ne, t as re } from "./ErrorBoundary-
|
|
9
|
+
import { n as ne, t as re } from "./ErrorBoundary-CsxO4wno.js";
|
|
10
10
|
import { t as M } from "./react-dom-BUgJ-ab_.js";
|
|
11
11
|
import { t as N } from "./jsx-runtime-DgDPJV9S.js";
|
|
12
12
|
import { t as ie } from "./label-MNhNNoN6.js";
|
|
@@ -7062,7 +7062,7 @@ function rs(e, t, n, r, i) {
|
|
|
7062
7062
|
}
|
|
7063
7063
|
//#endregion
|
|
7064
7064
|
//#region ../node_modules/.pnpm/@glideapps+glide-data-grid@6.0.4-alpha24_lodash@4.17.21_marked@15.0.12_react-dom@19.2.8_b9e6aec46d952f631ce71b0585d2a8e5/node_modules/@glideapps/glide-data-grid/dist/esm/data-editor/data-editor.js
|
|
7065
|
-
var is = /* @__PURE__ */ e(_r(), 1), as = /* @__PURE__ */ e(xr(), 1), os = K.lazy(async () => await import("./data-grid-overlay-editor-
|
|
7065
|
+
var is = /* @__PURE__ */ e(_r(), 1), as = /* @__PURE__ */ e(xr(), 1), os = K.lazy(async () => await import("./data-grid-overlay-editor-CC6Piy8U.js")), ss = 0;
|
|
7066
7066
|
function cs(e) {
|
|
7067
7067
|
return (0, is.default)((0, as.default)((0, as.default)(e).filter((e) => e.span !== void 0).map((e) => (0, Za.default)((e.span?.[0] ?? 0) + 1, (e.span?.[1] ?? 0) + 1))));
|
|
7068
7068
|
}
|
|
@@ -9293,7 +9293,7 @@ function Vs(e, t, n, r, i) {
|
|
|
9293
9293
|
}
|
|
9294
9294
|
//#endregion
|
|
9295
9295
|
//#region ../node_modules/.pnpm/@glideapps+glide-data-grid@6.0.4-alpha24_lodash@4.17.21_marked@15.0.12_react-dom@19.2.8_b9e6aec46d952f631ce71b0585d2a8e5/node_modules/@glideapps/glide-data-grid/dist/esm/cells/number-cell.js
|
|
9296
|
-
var Hs = K.lazy(async () => await import("./number-overlay-editor-
|
|
9296
|
+
var Hs = K.lazy(async () => await import("./number-overlay-editor-Bp51ZyFL.js")), Us = {
|
|
9297
9297
|
getAccessibilityString: (e) => e.data?.toString() ?? "",
|
|
9298
9298
|
kind: W.Number,
|
|
9299
9299
|
needsHover: (e) => e.hoverEffect === !0,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { g as e } from "./tooltip-Bi36DgYh.js";
|
|
2
2
|
import { _ as t } from "./useTheme-BOw801nZ.js";
|
|
3
|
-
import { r as n } from "./code-visibility-
|
|
3
|
+
import { r as n } from "./code-visibility-CUy-oPZG.js";
|
|
4
4
|
var r = e("triangle-alert", [
|
|
5
5
|
["path", {
|
|
6
6
|
d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",
|
|
@@ -5,10 +5,10 @@ import { t as l } from "./compiler-runtime-Cj8ZWiNS.js";
|
|
|
5
5
|
import { n as u, t as d } from "./copy-icon-qmRg_VTX.js";
|
|
6
6
|
import { a as f, c as p, l as m, s as h, t as g } from "./chunk-YOKDWASO-DrWbKnxA.js";
|
|
7
7
|
import { c as _, d as v, g as y, l as b, s as x, t as ee, u as te } from "./tooltip-Bi36DgYh.js";
|
|
8
|
-
import { A as ne, E as re, G as ie, Nt as ae, O as oe, R as se, St as ce, Z as le, Zt as ue, _t as de, en as fe, et as pe, gt as me, h as he, ht as ge, lt as _e, s as ve, t as ye, vt as be, xt as xe, yt as Se, z as Ce } from "./cells-
|
|
8
|
+
import { A as ne, E as re, G as ie, Nt as ae, O as oe, R as se, St as ce, Z as le, Zt as ue, _t as de, en as fe, et as pe, gt as me, h as he, ht as ge, lt as _e, s as ve, t as ye, vt as be, xt as xe, yt as Se, z as Ce } from "./cells-HZp46rAW.js";
|
|
9
9
|
import { M as we, O as Te, k as Ee } from "./select-BcObMjGz.js";
|
|
10
10
|
import { J as De, ht as Oe } from "./dropdown-menu-BaqM0t4N.js";
|
|
11
|
-
import { g as ke, x as Ae } from "./toDate-
|
|
11
|
+
import { g as ke, x as Ae } from "./toDate-G79A_pyJ.js";
|
|
12
12
|
import { t as je } from "./jsx-runtime-DgDPJV9S.js";
|
|
13
13
|
import { Ct as S, K as Me, Q as Ne, St as Pe, Tt as C, X as Fe, Y as Ie, bt as Le, ft as Re, gt as ze, lt as Be, mt as Ve, pt as He, ut as Ue, wt as We, xt as w, yt as Ge } from "./use-restore-focus-ZgG5Br63.js";
|
|
14
14
|
import { A as Ke, C as T, E as qe, _ as E, c as D, n as Je } from "./useTheme-BOw801nZ.js";
|
package/dist/main.js
CHANGED
|
@@ -3,20 +3,20 @@ import { _ as a, c as o, f as s, g as c, h as l, i as u, l as d, m as f, n as p,
|
|
|
3
3
|
import { t as y } from "./react-ofJbxM4x.js";
|
|
4
4
|
import { t as b } from "./compiler-runtime-Cj8ZWiNS.js";
|
|
5
5
|
import { i as x, n as S, r as C, t as w } from "./copy-icon-qmRg_VTX.js";
|
|
6
|
-
import { C as T, F as E, G as D, I as O, J as k, K as A, L as j, P as M, R as N, X as P, Z as F, _ as I, a as L, b as R, g as ee, i as z, j as te, k as B, n as ne, o as re, q as ie, v as ae, y as oe } from "./html-to-image-
|
|
6
|
+
import { C as T, F as E, G as D, I as O, J as k, K as A, L as j, P as M, R as N, X as P, Z as F, _ as I, a as L, b as R, g as ee, i as z, j as te, k as B, n as ne, o as re, q as ie, v as ae, y as oe } from "./html-to-image-BF9hL2Aa.js";
|
|
7
7
|
import { a as se, f as ce, g as V, i as le, n as ue, o as de, p as fe, r as pe, t as me } from "./tooltip-Bi36DgYh.js";
|
|
8
|
-
import { $ as he, $t as ge, B as _e, Bt as ve, C as ye, Ct as be, D as xe, Dt as Se, Et as Ce, F as we, G as Te, Gt as Ee, Ht as De, I as Oe, J as ke, Jt as Ae, Kt as je, L as Me, O as Ne, Ot as Pe, P as Fe, Pt as Ie, Q as Le, Qt as Re, Rt as ze, S as Be, St as Ve, T as He, Tt as Ue, U as We, W as Ge, Wt as Ke, bt as qe, c as Je, cn as Ye, ct as Xe, d as Ze, dn as Qe, dt as $e, en as et, f as tt, fn as nt, ft as rt, g as it, gt as at, h as ot, hn as st, k as ct, l as lt, ln as ut, m as dt, mn as ft, n as pt, o as mt, on as ht, ot as gt, p as _t, q as vt, qt as yt, r as bt, rn as xt, rt as St, sn as Ct, st as wt, tn as Tt, u as Et, v as Dt, w as Ot, wt as kt, zt as At } from "./cells-
|
|
8
|
+
import { $ as he, $t as ge, B as _e, Bt as ve, C as ye, Ct as be, D as xe, Dt as Se, Et as Ce, F as we, G as Te, Gt as Ee, Ht as De, I as Oe, J as ke, Jt as Ae, Kt as je, L as Me, O as Ne, Ot as Pe, P as Fe, Pt as Ie, Q as Le, Qt as Re, Rt as ze, S as Be, St as Ve, T as He, Tt as Ue, U as We, W as Ge, Wt as Ke, bt as qe, c as Je, cn as Ye, ct as Xe, d as Ze, dn as Qe, dt as $e, en as et, f as tt, fn as nt, ft as rt, g as it, gt as at, h as ot, hn as st, k as ct, l as lt, ln as ut, m as dt, mn as ft, n as pt, o as mt, on as ht, ot as gt, p as _t, q as vt, qt as yt, r as bt, rn as xt, rt as St, sn as Ct, st as wt, tn as Tt, u as Et, v as Dt, w as Ot, wt as kt, zt as At } from "./cells-HZp46rAW.js";
|
|
9
9
|
import { D as jt, E as Mt, O as Nt, S as Pt, T as Ft, _ as It, a as Lt, c as Rt, d as zt, f as Bt, g as Vt, h as Ht, i as Ut, l as Wt, m as Gt, n as Kt, o as qt, p as Jt, r as Yt, s as Xt, t as Zt, u as Qt, v as $t, w as en, x as tn, y as nn } from "./spec-BSchR9UD.js";
|
|
10
|
-
import { $t as rn, A as an, At as on, B as sn, Bt as cn, C as ln, Ct as un, D as dn, Dt as fn, E as pn, Et as mn, F as hn, Ft as gn, G as _n, Gt as vn, H as yn, Ht as bn, I as xn, It as Sn, J as Cn, Jt as wn, K as Tn, Kt as En, L as Dn, Lt as On, M as kn, Mt as An, N as jn, Nt as Mn, O as Nn, Ot as Pn, P as Fn, Pt as In, Qt as Ln, R as Rn, Rt as zn, S as Bn, St as Vn, T as Hn, Tt as Un, U as Wn, Ut as Gn, V as Kn, Vt as qn, W as Jn, Wt as Yn, X as Xn, Xt as Zn, Y as Qn, Yt as $n, Zt as er, _ as tr, _t as nr, an as rr, at as ir, b as ar, c as or, cn as sr, ct as cr, d as lr, dn as ur, dt as dr, en as fr, et as pr, f as mr, fn as hr, ft as gr, g as _r, gt as vr, h as yr, hn as br, ht as xr, in as Sr, it as Cr, j as wr, jt as Tr, k as Er, kt as Dr, ln as Or, lt as kr, m as Ar, mn as jr, mt as Mr, nn as Nr, nt as Pr, ot as Fr, p as Ir, pn as Lr, pt as Rr, q as zr, qt as Br, r as Vr, rn as Hr, rt as Ur, sn as Wr, st as Gr, t as Kr, tn as qr, tt as Jr, u as Yr, un as Xr, ut as Zr, v as Qr, vt as $r, w as ei, wt as ti, x as ni, y as ri, yt as ii, z as ai, zt as oi } from "./common-
|
|
10
|
+
import { $t as rn, A as an, At as on, B as sn, Bt as cn, C as ln, Ct as un, D as dn, Dt as fn, E as pn, Et as mn, F as hn, Ft as gn, G as _n, Gt as vn, H as yn, Ht as bn, I as xn, It as Sn, J as Cn, Jt as wn, K as Tn, Kt as En, L as Dn, Lt as On, M as kn, Mt as An, N as jn, Nt as Mn, O as Nn, Ot as Pn, P as Fn, Pt as In, Qt as Ln, R as Rn, Rt as zn, S as Bn, St as Vn, T as Hn, Tt as Un, U as Wn, Ut as Gn, V as Kn, Vt as qn, W as Jn, Wt as Yn, X as Xn, Xt as Zn, Y as Qn, Yt as $n, Zt as er, _ as tr, _t as nr, an as rr, at as ir, b as ar, c as or, cn as sr, ct as cr, d as lr, dn as ur, dt as dr, en as fr, et as pr, f as mr, fn as hr, ft as gr, g as _r, gt as vr, h as yr, hn as br, ht as xr, in as Sr, it as Cr, j as wr, jt as Tr, k as Er, kt as Dr, ln as Or, lt as kr, m as Ar, mn as jr, mt as Mr, nn as Nr, nt as Pr, ot as Fr, p as Ir, pn as Lr, pt as Rr, q as zr, qt as Br, r as Vr, rn as Hr, rt as Ur, sn as Wr, st as Gr, t as Kr, tn as qr, tt as Jr, u as Yr, un as Xr, ut as Zr, v as Qr, vt as $r, w as ei, wt as ti, x as ni, y as ri, yt as ii, z as ai, zt as oi } from "./common-aPjLFV7m.js";
|
|
11
11
|
import { c as si, i as ci, n as li, o as ui, t as di } from "./useLifecycle-3vGhRa1o.js";
|
|
12
12
|
import { t as fi } from "./check-DGZ74tV2.js";
|
|
13
13
|
import { A as pi, C as mi, D as hi, E as gi, M as _i, O as vi, S as yi, T as bi, a as xi, b as Si, c as Ci, i as wi, k as Ti, l as Ei, n as Di, o as Oi, r as ki, s as Ai, t as ji, w as Mi, x as Ni } from "./select-BcObMjGz.js";
|
|
14
14
|
import { B as Pi, C as Fi, J as Ii, Mt as Li, Nt as Ri, S as zi, Vt as Bi, W as Vi, _ as Hi, a as Ui, at as Wi, c as Gi, dt as Ki, f as qi, fn as Ji, g as Yi, h as Xi, i as Zi, it as Qi, m as $i, n as ea, p as ta, pn as na, q as ra, r as ia, s as aa, t as oa, v as sa, vt as ca, x as la, z as ua } from "./dropdown-menu-BaqM0t4N.js";
|
|
15
|
-
import { C as da, S as fa, T as pa, _ as ma, c as ha, d as ga, f as _a, g as va, h as ya, m as ba, u as xa, x as Sa, y as Ca } from "./toDate-
|
|
16
|
-
import { a as wa, c as Ta, d as Ea, f as Da, i as Oa, l as ka, n as Aa, o as ja, r as Ma, s as Na, t as Pa } from "./process-output-
|
|
15
|
+
import { C as da, S as fa, T as pa, _ as ma, c as ha, d as ga, f as _a, g as va, h as ya, m as ba, u as xa, x as Sa, y as Ca } from "./toDate-G79A_pyJ.js";
|
|
16
|
+
import { a as wa, c as Ta, d as Ea, f as Da, i as Oa, l as ka, n as Aa, o as ja, r as Ma, s as Na, t as Pa } from "./process-output-BCZh7Wj_.js";
|
|
17
17
|
import { a as Fa, c as Ia, d as La, i as Ra, l as za, r as Ba, u as Va } from "./glide-utils-CzzWU59p.js";
|
|
18
|
-
import { n as Ha, t as Ua } from "./ErrorBoundary-
|
|
19
|
-
import { n as Wa, t as Ga } from "./globals-
|
|
18
|
+
import { n as Ha, t as Ua } from "./ErrorBoundary-CsxO4wno.js";
|
|
19
|
+
import { n as Wa, t as Ga } from "./globals-ClrEbCdT.js";
|
|
20
20
|
import { t as Ka } from "./react-dom-BUgJ-ab_.js";
|
|
21
21
|
import { t as qa } from "./jsx-runtime-DgDPJV9S.js";
|
|
22
22
|
import { B as Ja, C as H, Ct as Ya, D as Xa, E as Za, Et as Qa, F as U, G as $a, H as eo, I as to, L as no, M as W, N as ro, O as io, P as ao, Q as oo, R as so, S as G, St as co, Tt as lo, U as uo, W as fo, Y as po, Z as mo, _ as ho, a as go, b as _o, bt as vo, c as yo, d as bo, dt as xo, f as So, g as Co, gt as wo, h as To, i as Eo, j as K, k as Do, l as Oo, m as ko, n as Ao, o as jo, p as Mo, r as No, s as Po, u as Fo, v as Io, vt as Lo, w as Ro, wt as zo, x as Bo, xt as Vo, y as Ho, yt as Uo } from "./use-restore-focus-ZgG5Br63.js";
|
|
@@ -36,10 +36,10 @@ import { n as ks } from "./dist-CrSP_H1M.js";
|
|
|
36
36
|
import { i as As } from "./dist-BorMD-uX.js";
|
|
37
37
|
import { n as js, t as Ms } from "./esm-DAVrGVKP.js";
|
|
38
38
|
import { t as Ns } from "./useAsyncData-BD7NLQ3_.js";
|
|
39
|
-
import { i as Ps, n as Fs, r as Is } from "./formats-
|
|
39
|
+
import { i as Ps, n as Fs, r as Is } from "./formats-pPD5eNN7.js";
|
|
40
40
|
import { M as Ls, N as Rs } from "./vega-loader.browser-DNST6uVf.js";
|
|
41
41
|
import { a as zs, n as Bs } from "./loader-C9OUkMrj.js";
|
|
42
|
-
import { c as Vs, d as Hs, i as Us, l as Ws, o as Gs, s as Ks, t as qs, u as Js } from "./code-visibility-
|
|
42
|
+
import { c as Vs, d as Hs, i as Us, l as Ws, o as Gs, s as Ks, t as qs, u as Js } from "./code-visibility-CUy-oPZG.js";
|
|
43
43
|
import { t as Ys } from "./useDeepCompareMemoize-CawMGSRU.js";
|
|
44
44
|
import { t as Xs } from "./esm-D2gTsXEV.js";
|
|
45
45
|
//#region ../node_modules/.pnpm/iconify-icon@2.3.0/node_modules/iconify-icon/dist/iconify-icon.mjs
|
|
@@ -9992,7 +9992,7 @@ var PS = (e) => {
|
|
|
9992
9992
|
output: t
|
|
9993
9993
|
};
|
|
9994
9994
|
} };
|
|
9995
|
-
} }, BS = J.lazy(() => import("./chat-ui-
|
|
9995
|
+
} }, BS = J.lazy(() => import("./chat-ui-BSm4FFA7.js").then((e) => ({ default: e.Chatbot }))), VS = G(W({
|
|
9996
9996
|
id: U(),
|
|
9997
9997
|
role: Io([
|
|
9998
9998
|
"system",
|
|
@@ -10458,7 +10458,7 @@ function RC(e, t) {
|
|
|
10458
10458
|
}
|
|
10459
10459
|
//#endregion
|
|
10460
10460
|
//#region src/plugins/impl/DataEditorPlugin.tsx
|
|
10461
|
-
var zC = J.lazy(() => import("./glide-data-editor-
|
|
10461
|
+
var zC = J.lazy(() => import("./glide-data-editor-Bi1Zkj5b.js").then((e) => e.t)), BC = xS("marimo-data-editor", { cssStyles: [WS] }).withData(W({
|
|
10462
10462
|
initialValue: W({ edits: G(W({
|
|
10463
10463
|
rowIdx: K(),
|
|
10464
10464
|
columnId: U(),
|
|
@@ -21694,7 +21694,7 @@ function Gj(e, t) {
|
|
|
21694
21694
|
}
|
|
21695
21695
|
//#endregion
|
|
21696
21696
|
//#region src/plugins/impl/vega/VegaPlugin.tsx
|
|
21697
|
-
var Kj = J.lazy(() => import("./vega-component-
|
|
21697
|
+
var Kj = J.lazy(() => import("./vega-component-DyMT9lIi.js")), qj = class {
|
|
21698
21698
|
tagName = "marimo-vega";
|
|
21699
21699
|
validator = W({
|
|
21700
21700
|
spec: W({}).passthrough().transform((e) => e),
|
|
@@ -29968,7 +29968,7 @@ function bR(e) {
|
|
|
29968
29968
|
}
|
|
29969
29969
|
//#endregion
|
|
29970
29970
|
//#region src/components/editor/renderers/slides-layout/slides-layout.tsx
|
|
29971
|
-
var xR = J.lazy(() => import("./reveal-component-
|
|
29971
|
+
var xR = J.lazy(() => import("./reveal-component-CnB5gUUC.js")), SR = (e) => {
|
|
29972
29972
|
let t = (0, X.c)(33), { layout: n, setLayout: r, cells: i, mode: a } = e, o = rs(Ca), s = a === "read" || o, c = rs(_t) > 1, [l, u] = (0, J.useState)(null), d;
|
|
29973
29973
|
t[0] !== i || t[1] !== n ? (d = vP(i, n), t[0] = i, t[1] = n, t[2] = d) : d = t[2];
|
|
29974
29974
|
let { slideCells: f, skippedIds: p, noOutputIds: m, slideTypes: h, startCellIndex: g } = d, _;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as e } from "./rolldown-runtime-Cb76FRpK.js";
|
|
2
2
|
import { t } from "./react-ofJbxM4x.js";
|
|
3
|
-
import { a as n } from "./glide-data-editor-
|
|
3
|
+
import { a as n } from "./glide-data-editor-Bi1Zkj5b.js";
|
|
4
4
|
//#region ../node_modules/.pnpm/@glideapps+glide-data-grid@6.0.4-alpha24_lodash@4.17.21_marked@15.0.12_react-dom@19.2.8_b9e6aec46d952f631ce71b0585d2a8e5/node_modules/@glideapps/glide-data-grid/dist/esm/internal/data-grid-overlay-editor/private/number-overlay-editor-style.js
|
|
5
5
|
var r = /* @__PURE__ */ e(t()), i = /*#__PURE__*/ n("div")({
|
|
6
6
|
name: "NumberOverlayEditorStyle",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { O as e } from "./html-to-image-
|
|
1
|
+
import { O as e } from "./html-to-image-BF9hL2Aa.js";
|
|
2
2
|
import { g as t } from "./tooltip-Bi36DgYh.js";
|
|
3
|
-
import { b as n, y as r } from "./cells-
|
|
3
|
+
import { b as n, y as r } from "./cells-HZp46rAW.js";
|
|
4
4
|
import { b as i } from "./select-BcObMjGz.js";
|
|
5
5
|
import { n as a } from "./semaphore-89jsoHtS.js";
|
|
6
6
|
var o = t("file", [["path", {
|
|
@@ -3,15 +3,15 @@ import { c as t, g as n, h as r, m as i, t as a } from "./button-B0Xgl-Qn.js";
|
|
|
3
3
|
import { t as o } from "./react-ofJbxM4x.js";
|
|
4
4
|
import { t as s } from "./compiler-runtime-Cj8ZWiNS.js";
|
|
5
5
|
import { g as c, t as l } from "./tooltip-Bi36DgYh.js";
|
|
6
|
-
import { w as u } from "./cells-
|
|
7
|
-
import { $ as d, Q as f, Z as p, an as m, i as h, l as g, ln as _, n as v, on as y, r as b, t as x, u as S } from "./common-
|
|
6
|
+
import { w as u } from "./cells-HZp46rAW.js";
|
|
7
|
+
import { $ as d, Q as f, Z as p, an as m, i as h, l as g, ln as _, n as v, on as y, r as b, t as x, u as S } from "./common-aPjLFV7m.js";
|
|
8
8
|
import { M as C } from "./select-BcObMjGz.js";
|
|
9
9
|
import { J as ee } from "./dropdown-menu-BaqM0t4N.js";
|
|
10
|
-
import { y as w } from "./toDate-
|
|
10
|
+
import { y as w } from "./toDate-G79A_pyJ.js";
|
|
11
11
|
import { t as T } from "./jsx-runtime-DgDPJV9S.js";
|
|
12
12
|
import { q as te } from "./use-restore-focus-ZgG5Br63.js";
|
|
13
13
|
import { A as E, C as D, b as O } from "./useTheme-BOw801nZ.js";
|
|
14
|
-
import { a as k, n as ne, t as re } from "./code-visibility-
|
|
14
|
+
import { a as k, n as ne, t as re } from "./code-visibility-CUy-oPZG.js";
|
|
15
15
|
/* empty css */
|
|
16
16
|
var A = c("sticky-note", [["path", {
|
|
17
17
|
d: "M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z",
|
|
@@ -465,8 +465,7 @@ function M({ href: e, queryParams: t, keys: n }) {
|
|
|
465
465
|
let m = f.toString();
|
|
466
466
|
return m ? `${o}?${m}${s}` : e;
|
|
467
467
|
}
|
|
468
|
-
|
|
469
|
-
//#region src/core/kernel/session.ts
|
|
468
|
+
a(null);
|
|
470
469
|
var N = (0, O.init)({ length: 6 });
|
|
471
470
|
function P() {
|
|
472
471
|
return `s_${N()}`;
|
|
@@ -3,7 +3,7 @@ import { g as t, h as n, m as r, o as i } from "./button-B0Xgl-Qn.js";
|
|
|
3
3
|
import { t as a } from "./react-ofJbxM4x.js";
|
|
4
4
|
import { t as o } from "./compiler-runtime-Cj8ZWiNS.js";
|
|
5
5
|
import { t as s } from "./tooltip-Bi36DgYh.js";
|
|
6
|
-
import { T as c, c as l } from "./toDate-
|
|
6
|
+
import { T as c, c as l } from "./toDate-G79A_pyJ.js";
|
|
7
7
|
import { t as u } from "./jsx-runtime-DgDPJV9S.js";
|
|
8
8
|
import { n as d } from "./error-banner-DzAmP0AQ.js";
|
|
9
9
|
import { t as f } from "./debounce-C3jyATpc.js";
|
|
@@ -11,7 +11,7 @@ import { A as p, n as ee } from "./useTheme-BOw801nZ.js";
|
|
|
11
11
|
import { c as m } from "./arrays-CN1djC4k.js";
|
|
12
12
|
import { t as te } from "./objects-CzUgoMIF.js";
|
|
13
13
|
import { t as h } from "./useAsyncData-BD7NLQ3_.js";
|
|
14
|
-
import { a as ne, i as re, n as ie, t as g } from "./formats-
|
|
14
|
+
import { a as ne, i as re, n as ie, t as g } from "./formats-pPD5eNN7.js";
|
|
15
15
|
import { M as ae, n as oe } from "./vega-loader.browser-DNST6uVf.js";
|
|
16
16
|
import { t as se } from "./react-vega-ewj7q_U5.js";
|
|
17
17
|
import { a as ce, n as _ } from "./loader-C9OUkMrj.js";
|
package/package.json
CHANGED
|
@@ -154,63 +154,54 @@ describe("getTerminalCommand", () => {
|
|
|
154
154
|
).toBe(
|
|
155
155
|
String.raw`${cli} "$(MARIMO_PAIR_NEXT=1 uvx marimo@latest pair prompt \
|
|
156
156
|
--url http://localhost:8000 \
|
|
157
|
-
--file notebooks/example.py \
|
|
158
157
|
--session s_ab12cd \
|
|
159
158
|
--with-token)"`,
|
|
160
159
|
);
|
|
161
160
|
},
|
|
162
161
|
);
|
|
163
162
|
|
|
164
|
-
it("includes the url and
|
|
163
|
+
it("includes the url and agent flag for each agent", () => {
|
|
165
164
|
expect(getTerminalCommand("claude", CONNECTION, false)).toBe(
|
|
166
|
-
`claude "$(uv run marimo pair prompt --url http://localhost:8000 --
|
|
165
|
+
`claude "$(uv run marimo pair prompt --url http://localhost:8000 --claude)"`,
|
|
167
166
|
);
|
|
168
167
|
expect(getTerminalCommand("codex", CONNECTION, false)).toBe(
|
|
169
|
-
`codex "$(uv run marimo pair prompt --url http://localhost:8000 --
|
|
168
|
+
`codex "$(uv run marimo pair prompt --url http://localhost:8000 --codex)"`,
|
|
170
169
|
);
|
|
171
170
|
expect(getTerminalCommand("opencode", CONNECTION, false)).toBe(
|
|
172
|
-
`opencode --prompt "$(uv run marimo pair prompt --url http://localhost:8000 --
|
|
171
|
+
`opencode --prompt "$(uv run marimo pair prompt --url http://localhost:8000 --opencode)"`,
|
|
173
172
|
);
|
|
174
173
|
});
|
|
175
174
|
|
|
176
|
-
it("
|
|
177
|
-
const command = getTerminalCommand(
|
|
178
|
-
"claude",
|
|
179
|
-
CONNECTION_WITHOUT_FILE,
|
|
180
|
-
false,
|
|
181
|
-
);
|
|
175
|
+
it("never passes a file to marimo pair prompt", () => {
|
|
176
|
+
const command = getTerminalCommand("claude", CONNECTION, false);
|
|
182
177
|
expect(command).not.toContain("--file");
|
|
183
|
-
expect(command).not.toContain("
|
|
178
|
+
expect(command).not.toContain("notebooks/example.py");
|
|
184
179
|
});
|
|
185
180
|
|
|
186
|
-
it("
|
|
187
|
-
|
|
188
|
-
"
|
|
189
|
-
{ url: "http://host:8000?auth=a&b", file: "notebook.py" },
|
|
190
|
-
false,
|
|
181
|
+
it("omits the session outside the preview", () => {
|
|
182
|
+
expect(getTerminalCommand("claude", CONNECTION, false)).not.toContain(
|
|
183
|
+
"--session",
|
|
191
184
|
);
|
|
192
|
-
expect(command).toContain("--url 'http://host:8000?auth=a&b'");
|
|
193
185
|
});
|
|
194
186
|
|
|
195
|
-
it
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
])("shell-escapes file path %s", (file, expected) => {
|
|
187
|
+
it("omits the session when it is unknown", () => {
|
|
188
|
+
expect(
|
|
189
|
+
getTerminalCommand(
|
|
190
|
+
"claude",
|
|
191
|
+
CONNECTION_WITHOUT_FILE,
|
|
192
|
+
false,
|
|
193
|
+
PAIR_PREVIEW,
|
|
194
|
+
),
|
|
195
|
+
).not.toContain("--session");
|
|
196
|
+
});
|
|
197
|
+
|
|
198
|
+
it("shell-escapes a url containing metacharacters", () => {
|
|
208
199
|
const command = getTerminalCommand(
|
|
209
200
|
"claude",
|
|
210
|
-
{ url:
|
|
201
|
+
{ url: "http://host:8000?auth=a&b" },
|
|
211
202
|
false,
|
|
212
203
|
);
|
|
213
|
-
expect(command).toContain(
|
|
204
|
+
expect(command).toContain("--url 'http://host:8000?auth=a&b'");
|
|
214
205
|
});
|
|
215
206
|
|
|
216
207
|
it("adds --with-token before the agent flag when requested", () => {
|
|
@@ -230,23 +221,22 @@ describe("getRawPrompt", () => {
|
|
|
230
221
|
expect(
|
|
231
222
|
getRawPrompt(
|
|
232
223
|
{
|
|
233
|
-
url: "http://host/{
|
|
234
|
-
|
|
235
|
-
session: "{command}",
|
|
224
|
+
url: "http://host/{session}",
|
|
225
|
+
session: "{command}/it's",
|
|
236
226
|
},
|
|
237
|
-
"tok'en {
|
|
227
|
+
"tok'en {session} $&",
|
|
238
228
|
{
|
|
239
229
|
...PAIR_PREVIEW,
|
|
240
230
|
command: "custom marimo",
|
|
241
231
|
templates: {
|
|
242
232
|
...PAIR_PREVIEW.templates,
|
|
243
|
-
prompt: "{command}\n{url}\n{
|
|
233
|
+
prompt: "{command}\n{url}\n{session}{authentication}",
|
|
244
234
|
},
|
|
245
235
|
},
|
|
246
236
|
),
|
|
247
237
|
).toBe(
|
|
248
|
-
"custom marimo\nhttp://host/{
|
|
249
|
-
`\n\nFor authenticated Pair commands, set \`export MARIMO_TOKEN='tok'"'"'en {
|
|
238
|
+
"custom marimo\nhttp://host/{session}\nSession: {command}/it's\n" +
|
|
239
|
+
`\n\nFor authenticated Pair commands, set \`export MARIMO_TOKEN='tok'"'"'en {session} $&'\` in the shell that runs marimo.`,
|
|
250
240
|
);
|
|
251
241
|
});
|
|
252
242
|
|
|
@@ -256,10 +246,7 @@ describe("getRawPrompt", () => {
|
|
|
256
246
|
{ ...CONNECTION_WITHOUT_FILE, session: "s_ab12cd" },
|
|
257
247
|
"Session: s_ab12cd\n",
|
|
258
248
|
],
|
|
259
|
-
[
|
|
260
|
-
{ ...CONNECTION_WITHOUT_FILE, file: "notebook.py" },
|
|
261
|
-
"File: notebook.py\n",
|
|
262
|
-
],
|
|
249
|
+
[{ ...CONNECTION_WITHOUT_FILE, file: "notebook.py" }, ""],
|
|
263
250
|
])("omits absent preview fields for %j", (connection, fields) => {
|
|
264
251
|
expect(getRawPrompt(connection, null, PAIR_PREVIEW)).toBe(
|
|
265
252
|
"Pair with me on this running marimo notebook.\n\n" +
|
|
@@ -270,13 +257,12 @@ describe("getRawPrompt", () => {
|
|
|
270
257
|
);
|
|
271
258
|
});
|
|
272
259
|
|
|
273
|
-
it("renders the shared preview template with
|
|
260
|
+
it("renders the shared preview template with the session and no file", () => {
|
|
274
261
|
expect(
|
|
275
262
|
getRawPrompt({ ...CONNECTION, session: "s_ab12cd" }, null, PAIR_PREVIEW),
|
|
276
263
|
).toBe(
|
|
277
264
|
"Pair with me on this running marimo notebook.\n\n" +
|
|
278
265
|
"URL: http://localhost:8000\n" +
|
|
279
|
-
"File: notebooks/example.py\n" +
|
|
280
266
|
"Session: s_ab12cd\n\n" +
|
|
281
267
|
"Run `uvx marimo@latest pair --help` first.\n" +
|
|
282
268
|
"Use `uvx marimo@latest` for all marimo commands.\n\n" +
|
|
@@ -15,7 +15,10 @@ import { PAIR_PREVIEW } from "@/__tests__/fixtures/pair-preview";
|
|
|
15
15
|
import { Dialog } from "@/components/ui/dialog";
|
|
16
16
|
import { TooltipProvider } from "@/components/ui/tooltip";
|
|
17
17
|
import { pairPreviewAtom } from "@/core/config/pair";
|
|
18
|
-
import {
|
|
18
|
+
import {
|
|
19
|
+
type StableSessionId,
|
|
20
|
+
stableSessionIdAtom,
|
|
21
|
+
} from "@/core/kernel/session";
|
|
19
22
|
import { filenameAtom } from "@/core/saving/file-state";
|
|
20
23
|
import {
|
|
21
24
|
DEFAULT_RUNTIME_CONFIG,
|
|
@@ -39,10 +42,13 @@ function wrapper({ children }: { children: React.ReactNode }) {
|
|
|
39
42
|
);
|
|
40
43
|
}
|
|
41
44
|
|
|
45
|
+
const STABLE_ID = "sess-stable-1" as StableSessionId;
|
|
46
|
+
|
|
42
47
|
describe("PairWithAgentModal", () => {
|
|
43
48
|
beforeEach(() => {
|
|
44
49
|
vi.clearAllMocks();
|
|
45
50
|
store.set(pairPreviewAtom, PAIR_PREVIEW);
|
|
51
|
+
store.set(stableSessionIdAtom, STABLE_ID);
|
|
46
52
|
store.set(filenameAtom, "/project/my notebook.py");
|
|
47
53
|
store.set(runtimeConfigAtom, {
|
|
48
54
|
...DEFAULT_RUNTIME_CONFIG,
|
|
@@ -57,12 +63,13 @@ describe("PairWithAgentModal", () => {
|
|
|
57
63
|
|
|
58
64
|
afterEach(() => {
|
|
59
65
|
store.set(pairPreviewAtom, undefined);
|
|
66
|
+
store.set(stableSessionIdAtom, null);
|
|
60
67
|
store.set(filenameAtom, null);
|
|
61
68
|
vi.unstubAllGlobals();
|
|
62
69
|
});
|
|
63
70
|
|
|
64
71
|
it.each(["Claude", "Codex", "OpenCode", "Prompt"])(
|
|
65
|
-
"omits skill installation and
|
|
72
|
+
"omits skill installation and targets the stable session in %s preview",
|
|
66
73
|
async (tab) => {
|
|
67
74
|
await act(async () => {
|
|
68
75
|
render(<PairWithAgentModal onClose={vi.fn()} />, { wrapper });
|
|
@@ -74,59 +81,41 @@ describe("PairWithAgentModal", () => {
|
|
|
74
81
|
|
|
75
82
|
const panel = screen.getByRole("tabpanel");
|
|
76
83
|
expect(within(panel).queryAllByText(/skill/i)).toEqual([]);
|
|
77
|
-
expect(panel).toHaveTextContent(
|
|
78
|
-
expect(panel).toHaveTextContent(
|
|
79
|
-
|
|
80
|
-
);
|
|
81
|
-
expect(panel).not.toHaveTextContent("/project/my notebook.py");
|
|
84
|
+
expect(panel).toHaveTextContent(STABLE_ID);
|
|
85
|
+
expect(panel).not.toHaveTextContent("--file");
|
|
86
|
+
expect(panel).not.toHaveTextContent("File:");
|
|
87
|
+
expect(panel).not.toHaveTextContent("notebook.py");
|
|
82
88
|
expect(panel).toHaveTextContent(
|
|
83
89
|
tab === "Prompt" ? "1. Copy this prompt" : "1. Run in your terminal",
|
|
84
90
|
);
|
|
85
|
-
},
|
|
86
|
-
);
|
|
87
|
-
|
|
88
|
-
it.each(["Claude", "Codex", "OpenCode", "Prompt"])(
|
|
89
|
-
"includes the known notebook file in %s preview when the URL has no file",
|
|
90
|
-
async (tab) => {
|
|
91
|
-
window.history.replaceState({}, "", "/");
|
|
92
|
-
await act(async () => {
|
|
93
|
-
render(<PairWithAgentModal onClose={vi.fn()} />, { wrapper });
|
|
94
|
-
});
|
|
95
|
-
fireEvent.mouseDown(screen.getByRole("tab", { name: tab }), {
|
|
96
|
-
button: 0,
|
|
97
|
-
ctrlKey: false,
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
const panel = screen.getByRole("tabpanel");
|
|
101
|
-
const fileHint =
|
|
102
|
-
tab === "Prompt"
|
|
103
|
-
? "File: /project/my notebook.py"
|
|
104
|
-
: "--file '/project/my notebook.py'";
|
|
105
|
-
expect(panel).toHaveTextContent(fileHint);
|
|
106
91
|
fireEvent.click(
|
|
107
92
|
within(panel).getByRole("button", {
|
|
108
93
|
name: tab === "Prompt" ? "Copy prompt" : "Copy command",
|
|
109
94
|
}),
|
|
110
95
|
);
|
|
111
96
|
await waitFor(() => expect(copyToClipboard).toHaveBeenCalledOnce());
|
|
112
|
-
|
|
97
|
+
const copied = vi.mocked(copyToClipboard).mock.calls[0][0];
|
|
98
|
+
expect(copied).toContain(STABLE_ID);
|
|
99
|
+
expect(copied).not.toContain("notebook.py");
|
|
113
100
|
},
|
|
114
101
|
);
|
|
115
102
|
|
|
116
|
-
it.each([
|
|
117
|
-
"omits the
|
|
118
|
-
async (
|
|
119
|
-
|
|
120
|
-
store.set(filenameAtom, filename);
|
|
103
|
+
it.each(["Claude", "Prompt"])(
|
|
104
|
+
"omits the session in %s preview before kernel-ready arrives",
|
|
105
|
+
async (tab) => {
|
|
106
|
+
store.set(stableSessionIdAtom, null);
|
|
121
107
|
await act(async () => {
|
|
122
108
|
render(<PairWithAgentModal onClose={vi.fn()} />, { wrapper });
|
|
123
109
|
});
|
|
124
|
-
|
|
125
|
-
fireEvent.mouseDown(screen.getByRole("tab", { name: "Prompt" }), {
|
|
110
|
+
fireEvent.mouseDown(screen.getByRole("tab", { name: tab }), {
|
|
126
111
|
button: 0,
|
|
127
112
|
ctrlKey: false,
|
|
128
113
|
});
|
|
129
|
-
|
|
114
|
+
|
|
115
|
+
const panel = screen.getByRole("tabpanel");
|
|
116
|
+
expect(panel).not.toHaveTextContent("--session");
|
|
117
|
+
expect(panel).not.toHaveTextContent("Session:");
|
|
118
|
+
expect(panel).toHaveTextContent("http://localhost:8000");
|
|
130
119
|
},
|
|
131
120
|
);
|
|
132
121
|
|
|
@@ -147,7 +136,8 @@ describe("PairWithAgentModal", () => {
|
|
|
147
136
|
expect(
|
|
148
137
|
within(panel).getByText("npx skills add marimo-team/marimo-pair"),
|
|
149
138
|
).toBeVisible();
|
|
150
|
-
expect(panel).not.toHaveTextContent(
|
|
139
|
+
expect(panel).not.toHaveTextContent(STABLE_ID);
|
|
140
|
+
expect(panel).not.toHaveTextContent("--file");
|
|
151
141
|
expect(panel).not.toHaveTextContent("MARIMO_PAIR_NEXT");
|
|
152
142
|
expect(panel).not.toHaveTextContent("/project/my notebook.py");
|
|
153
143
|
expect(panel).toHaveTextContent(
|
|
@@ -205,8 +195,7 @@ describe("PairWithAgentModal", () => {
|
|
|
205
195
|
expect(copyToClipboard).toHaveBeenCalledWith(
|
|
206
196
|
String.raw`claude "$(MARIMO_PAIR_NEXT=1 uvx marimo@latest pair prompt \
|
|
207
197
|
--url http://localhost:8000/ \
|
|
208
|
-
--
|
|
209
|
-
--session ${getSessionId()} \
|
|
198
|
+
--session ${STABLE_ID} \
|
|
210
199
|
--with-token)"`,
|
|
211
200
|
),
|
|
212
201
|
);
|
|
@@ -38,8 +38,9 @@ function getFileFlag(file: string | undefined): string {
|
|
|
38
38
|
/** Identifies the specific running notebook to pair on. */
|
|
39
39
|
export interface ConnectionInfo {
|
|
40
40
|
url: string;
|
|
41
|
-
/** The server's file key
|
|
41
|
+
/** The server's file key, when known. */
|
|
42
42
|
file?: string;
|
|
43
|
+
/** The stable session ID, when known. */
|
|
43
44
|
session?: string;
|
|
44
45
|
}
|
|
45
46
|
|
|
@@ -49,7 +50,7 @@ export interface ConnectionInfo {
|
|
|
49
50
|
*/
|
|
50
51
|
export function getTerminalCommand(
|
|
51
52
|
agent: Exclude<AgentTab, "prompt">,
|
|
52
|
-
{ url,
|
|
53
|
+
{ url, session }: ConnectionInfo,
|
|
53
54
|
withToken: boolean,
|
|
54
55
|
preview?: PairPreviewConfig,
|
|
55
56
|
): string {
|
|
@@ -58,7 +59,6 @@ export function getTerminalCommand(
|
|
|
58
59
|
const base = [
|
|
59
60
|
`${prefix}${command} pair prompt`,
|
|
60
61
|
`--url ${shellQuote(url)}`,
|
|
61
|
-
file ? `--file ${shellQuote(file)}` : "",
|
|
62
62
|
preview && session ? `--session ${shellQuote(session)}` : "",
|
|
63
63
|
withToken ? "--with-token" : "",
|
|
64
64
|
preview ? "" : `--${agent}`,
|
|
@@ -92,7 +92,6 @@ export function getRawPrompt(
|
|
|
92
92
|
return formatPrompt(templates.prompt, {
|
|
93
93
|
command,
|
|
94
94
|
url,
|
|
95
|
-
file: file ? formatPrompt(templates.file, { file }) : "",
|
|
96
95
|
session: session ? formatPrompt(templates.session, { session }) : "",
|
|
97
96
|
authentication: token
|
|
98
97
|
? formatPrompt(templates.token, { token: shellQuote(token) })
|
|
@@ -18,8 +18,7 @@ import { Tooltip } from "@/components/ui/tooltip";
|
|
|
18
18
|
import { asRemoteURL, useRuntimeManager } from "@/core/runtime/config";
|
|
19
19
|
import { API } from "@/core/network/api";
|
|
20
20
|
import { pairPreviewAtom } from "@/core/config/pair";
|
|
21
|
-
import {
|
|
22
|
-
import { useFilename } from "@/core/saving/filename";
|
|
21
|
+
import { stableSessionIdAtom } from "@/core/kernel/session";
|
|
23
22
|
import {
|
|
24
23
|
AGENT_LABELS,
|
|
25
24
|
AGENT_TABS,
|
|
@@ -54,16 +53,14 @@ export const PairWithAgentModal: React.FC<{
|
|
|
54
53
|
const [activeTab, setActiveTab] = useState<AgentTab>("claude");
|
|
55
54
|
const runtimeManager = useRuntimeManager();
|
|
56
55
|
const preview = useAtomValue(pairPreviewAtom);
|
|
57
|
-
const
|
|
56
|
+
const stableSessionId = useAtomValue(stableSessionIdAtom);
|
|
58
57
|
const commandStep = preview ? 1 : 2;
|
|
59
58
|
const authToken = useAuthToken();
|
|
60
59
|
const hasToken = Boolean(authToken);
|
|
61
60
|
const connection: ConnectionInfo = {
|
|
62
61
|
url: runtimeManager.httpURL.toString(),
|
|
63
|
-
file:
|
|
64
|
-
|
|
65
|
-
(preview ? filename || undefined : undefined),
|
|
66
|
-
session: preview ? getSessionId() : undefined,
|
|
62
|
+
file: preview ? undefined : getFileFromURL(window.location.href),
|
|
63
|
+
session: preview ? (stableSessionId ?? undefined) : undefined,
|
|
67
64
|
};
|
|
68
65
|
|
|
69
66
|
return (
|
package/src/core/config/pair.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
import { init } from "@paralleldrive/cuid2";
|
|
3
|
+
import { atom } from "jotai";
|
|
3
4
|
import { Logger } from "@/utils/Logger";
|
|
4
5
|
import type { TypedString } from "@/utils/typed";
|
|
5
6
|
import { updateQueryParams } from "@/utils/urls";
|
|
@@ -9,6 +10,14 @@ import { store } from "../state/jotai";
|
|
|
9
10
|
|
|
10
11
|
export type SessionId = TypedString<"SessionId">;
|
|
11
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Server-owned identity of the notebook Session. It survives browser reloads
|
|
15
|
+
* and reconnects and ends with the Session.
|
|
16
|
+
*/
|
|
17
|
+
export type StableSessionId = TypedString<"StableSessionId">;
|
|
18
|
+
|
|
19
|
+
export const stableSessionIdAtom = atom<StableSessionId | null>(null);
|
|
20
|
+
|
|
12
21
|
const createId = init({ length: 6 });
|
|
13
22
|
|
|
14
23
|
export function generateSessionId(): SessionId {
|
|
@@ -60,7 +60,11 @@ import {
|
|
|
60
60
|
handleRemoveUIElements,
|
|
61
61
|
} from "../kernel/handlers";
|
|
62
62
|
import { queryParamHandlers } from "../kernel/queryParamHandlers";
|
|
63
|
-
import
|
|
63
|
+
import {
|
|
64
|
+
type SessionId,
|
|
65
|
+
type StableSessionId,
|
|
66
|
+
stableSessionIdAtom,
|
|
67
|
+
} from "../kernel/session";
|
|
64
68
|
import { initialRunCompletedAtom, kernelStateAtom } from "../kernel/state";
|
|
65
69
|
import { type LayoutState, useLayoutActions } from "../layout/state";
|
|
66
70
|
import { kioskModeAtom } from "../mode";
|
|
@@ -231,6 +235,7 @@ export function useMarimoKernelConnection(opts: {
|
|
|
231
235
|
addStartupLog,
|
|
232
236
|
} = useAlertActions();
|
|
233
237
|
const setKioskMode = useSetAtom(kioskModeAtom);
|
|
238
|
+
const setStableSessionId = useSetAtom(stableSessionIdAtom);
|
|
234
239
|
const setCapabilities = useSetAtom(capabilitiesAtom);
|
|
235
240
|
const runtimeManager = useRuntimeManager();
|
|
236
241
|
const transportType = useAtomValue(connectionTransportTypeAtom);
|
|
@@ -284,6 +289,10 @@ export function useMarimoKernelConnection(opts: {
|
|
|
284
289
|
invalidateDataSourceDiscovery();
|
|
285
290
|
}
|
|
286
291
|
setKioskMode(msg.data.kiosk);
|
|
292
|
+
setStableSessionId(
|
|
293
|
+
(msg.data.stable_session_id as StableSessionId | null | undefined) ??
|
|
294
|
+
null,
|
|
295
|
+
);
|
|
287
296
|
// A freshly started kernel has no breakpoints of its own; re-push
|
|
288
297
|
// the client's set so they still apply, and clear the stale
|
|
289
298
|
// highlighted line from the previous kernel instance.
|