@marimo-team/islands 0.25.3-dev267 → 0.25.3-dev268

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 (138) hide show
  1. package/dist/{ConnectedDataExplorerComponent-C4yCN38h.js → ConnectedDataExplorerComponent-eLHPh6uu.js} +8 -8
  2. package/dist/{ErrorBoundary-CewXPyL5.js → ErrorBoundary-CQYAoD7X.js} +4 -4
  3. package/dist/{abnfDiagram-VCTEODGH-o6Ay6Q63.js → abnfDiagram-VCTEODGH-hqd0IBtX.js} +2 -2
  4. package/dist/{architectureDiagram-5GKGNRK7-BhiwwlVg.js → architectureDiagram-5GKGNRK7-BzLAFcc0.js} +1 -1
  5. package/dist/{strings-BCKpLFNU.js → assertNever-DIU3JJbt.js} +14 -14
  6. package/dist/{chat-ui-CbgR5ivy.js → chat-ui-BAnLgpTe.js} +17 -17
  7. package/dist/{chunk-IMKFNOWR-WMSMf4Nj.js → chunk-IMKFNOWR-DOeVvuyE.js} +1 -1
  8. package/dist/{chunk-SHT3W25Y-BRfADrzD.js → chunk-SHT3W25Y-DZoFI8wR.js} +1 -1
  9. package/dist/{chunk-SVP7TREG-CuK5QFre.js → chunk-SVP7TREG-CWu86PSW.js} +1 -1
  10. package/dist/{chunk-TICWLB2K-Bcun_jhJ.js → chunk-TICWLB2K-BrM0GoP3.js} +1 -1
  11. package/dist/{classDiagram-ZZMXUADV-CgWDbUDT.js → classDiagram-ZZMXUADV-DYi4V2bB.js} +2 -2
  12. package/dist/{classDiagram-v2-VYDZK3BY-DYmc9SFU.js → classDiagram-v2-VYDZK3BY-tN7FIk-m.js} +2 -2
  13. package/dist/{code-visibility-BKBl9Rh6.js → code-visibility-DcZ_RwaH.js} +44 -47
  14. package/dist/{common-N3Jd_6m9.js → common-BGeQilvh.js} +4866 -4857
  15. package/dist/{config-CmeG_Pb6.js → config-BsPruWMR.js} +2 -2
  16. package/dist/{createReducer-C_syF8Td.js → createReducer-DdtT_7ji.js} +1 -1
  17. package/dist/{cynefinDiagram-5FMLGOSQ-PPKWipjT.js → cynefinDiagram-5FMLGOSQ-D5nCnDc-.js} +1 -1
  18. package/dist/{dagre-GXQ25YYZ-niRBZh--.js → dagre-GXQ25YYZ-BHkd7f_i.js} +1 -1
  19. package/dist/{data-grid-overlay-editor-Cp59CrqZ.js → data-grid-overlay-editor-Dc4lW4A3.js} +1 -1
  20. package/dist/{diagram-S7CK7UJ4-DPiP9rot.js → diagram-S7CK7UJ4-D1ALppT2.js} +1 -1
  21. package/dist/{diagram-UQ7AKVKN-B0WZuaxV.js → diagram-UQ7AKVKN-DLv0b83L.js} +1 -1
  22. package/dist/{diagram-VX7I27RA-Rn42WBuN.js → diagram-VX7I27RA-7XJ7J6qg.js} +1 -1
  23. package/dist/{diagram-Z3DM3KII-BB93--ry.js → diagram-Z3DM3KII-7M7zbHp_.js} +1 -1
  24. package/dist/{dialog-BtprQCUw.js → dialog-DzCj1qQv.js} +1 -1
  25. package/dist/{dropdown-menu-BpImEfn3.js → dropdown-menu-CdXE15an.js} +3 -3
  26. package/dist/{ebnfDiagram-PWID7BFC-V4t5h6mZ.js → ebnfDiagram-PWID7BFC-DHH1qlmV.js} +2 -2
  27. package/dist/{erDiagram-RLTQ6QDP-C1MsAKXd.js → erDiagram-RLTQ6QDP-fI_0dGef.js} +1 -1
  28. package/dist/{error-entries-CJGdD2ky.js → error-entries-CxN-Nq3V.js} +519 -458
  29. package/dist/{feedback-button-Qc1f9iPq.js → feedback-button-BqaeQcvX.js} +22 -22
  30. package/dist/{flowDiagram-HODETNUW-DHjeJP96.js → flowDiagram-HODETNUW-Brg9MA6i.js} +2 -2
  31. package/dist/{formats-gGospKWJ.js → formats-DbSvAPY-.js} +1 -1
  32. package/dist/{glide-data-editor-hCq3K0sd.js → glide-data-editor-CiijPXA7.js} +11 -11
  33. package/dist/{glide-utils-DC3sk6EX.js → glide-utils-BSw3SSHF.js} +1 -1
  34. package/dist/{globals-B2_uMYDY.js → globals-CpmSWKI_.js} +2 -2
  35. package/dist/{html-to-image-S7spRQCi.js → html-to-image-8sywF4my.js} +5120 -5117
  36. package/dist/{infoDiagram-27XIBGKW-Dovv6iKx.js → infoDiagram-27XIBGKW-E9e403YT.js} +1 -1
  37. package/dist/{ishikawaDiagram-5VMMS53U-D2nyygsc.js → ishikawaDiagram-5VMMS53U-C-RlYDRo.js} +1 -1
  38. package/dist/{kanban-definition-UXKFOSKX-KyVx0uTY.js → kanban-definition-UXKFOSKX-CLFl_uqK.js} +1 -1
  39. package/dist/main.js +5972 -6003
  40. package/dist/{mermaid-B-jKSwGt.js → mermaid-rd09e1JL.js} +34 -34
  41. package/dist/{mindmap-definition-YA3MSWOX-Bz9tKQFl.js → mindmap-definition-YA3MSWOX-BQ8TWtyB.js} +1 -1
  42. package/dist/{number-overlay-editor-CfNYvbdz.js → number-overlay-editor-Ft4NiAEN.js} +1 -1
  43. package/dist/{pegDiagram-XKGWAZYB-C_qpq6Tv.js → pegDiagram-XKGWAZYB-CN8UHFPi.js} +2 -2
  44. package/dist/{pieDiagram-E7YTZNPT-Bp9ucgI4.js → pieDiagram-E7YTZNPT-DGuJ0EBd.js} +1 -1
  45. package/dist/{process-output-f34bkXTm.js → process-output-Dku5POvm.js} +3 -3
  46. package/dist/{railroadDiagram-O6MQD6OU-tq-VEH6j.js → railroadDiagram-O6MQD6OU-BPDA8wy8.js} +2 -2
  47. package/dist/{requirementDiagram-BXWQKSXE-DW-vHadb.js → requirementDiagram-BXWQKSXE-ChzLGbGW.js} +1 -1
  48. package/dist/{reveal-component-CUxv-kkP.js → reveal-component-D0cfwbbl.js} +1094 -1094
  49. package/dist/{select-C33FVPPN.js → select-OxgozOC8.js} +1 -1
  50. package/dist/{sequenceDiagram-WJ2MYXX4-Dv9U9qRP.js → sequenceDiagram-WJ2MYXX4-DFX-bE6O.js} +1 -1
  51. package/dist/{spec-DH1lmF7Q.js → spec-oJn0RhpQ.js} +2 -2
  52. package/dist/{stateDiagram-D77RDMKH-DTmPQ0EB.js → stateDiagram-D77RDMKH-BR7cI3wK.js} +2 -2
  53. package/dist/{stateDiagram-v2-MP3YSRHH-CkCif0Iw.js → stateDiagram-v2-MP3YSRHH-oGqB5UDI.js} +2 -2
  54. package/dist/{static-state-BldGd99T.js → static-state-CuV6Pc3a.js} +1 -1
  55. package/dist/{swimlanes-42K2YHIH-21kCq6l8.js → swimlanes-42K2YHIH-DwSZl1yC.js} +1 -1
  56. package/dist/{swimlanesDiagram-VR7AAH4N-BpRJP6KU.js → swimlanesDiagram-VR7AAH4N-BHlcd-Ri.js} +2 -2
  57. package/dist/{timeline-definition-24CTP7MA-Ckgh4lS4.js → timeline-definition-24CTP7MA-DMmP-G2O.js} +1 -1
  58. package/dist/{toast-DpczUryP.js → toast-DbBHmxmB.js} +1 -1
  59. package/dist/{useAsyncData-DsZMvNXn.js → useAsyncData-BYIAoMqn.js} +1 -1
  60. package/dist/{useDateFormatter-Dk_xFci4.js → useDateFormatter-ButWkdcK.js} +1 -1
  61. package/dist/{useDeepCompareMemoize-KMBBux8C.js → useDeepCompareMemoize-Bz0c5GN6.js} +1 -1
  62. package/dist/{useTheme-BZ2GGLgm.js → useTheme-DPLobSFs.js} +7 -7
  63. package/dist/{utils-DXkj82sK.js → utils-EBklsC5R.js} +31 -31
  64. package/dist/{vega-component-CF9kI6C4.js → vega-component-rxIxAAh9.js} +6 -6
  65. package/dist/{vennDiagram-4TSXK5OY-CDei2Bt3.js → vennDiagram-4TSXK5OY-Db8GtH1G.js} +1 -1
  66. package/dist/{wardleyDiagram-VM6X3IG4-CXavT601.js → wardleyDiagram-VM6X3IG4-DmIiC3FU.js} +1 -1
  67. package/dist/{xychartDiagram-S5SC5T6Z-CvJhcZri.js → xychartDiagram-S5SC5T6Z-DS9OPrNq.js} +1 -1
  68. package/package.json +1 -1
  69. package/src/__mocks__/executions.ts +195 -0
  70. package/src/__mocks__/notebook.ts +0 -1
  71. package/src/__tests__/CellStatus.test.tsx +19 -20
  72. package/src/components/dependency-graph/minimap-content.tsx +3 -2
  73. package/src/components/editor/__tests__/data-attributes.test.tsx +0 -7
  74. package/src/components/editor/__tests__/output-persistence.test.tsx +2 -2
  75. package/src/components/editor/actions/__tests__/useCellActionButton.test.tsx +1 -0
  76. package/src/components/editor/actions/useCellActionButton.tsx +7 -3
  77. package/src/components/editor/alerts/stdin-blocking-alert.tsx +3 -1
  78. package/src/components/editor/cell/CellStatus.tsx +23 -19
  79. package/src/components/editor/cell/RunButton.tsx +16 -6
  80. package/src/components/editor/cell/__tests__/useRunCells.test.ts +45 -0
  81. package/src/components/editor/cell/cell-context-menu.tsx +4 -1
  82. package/src/components/editor/cell/code/cell-editor.tsx +7 -5
  83. package/src/components/editor/cell/collapse.tsx +4 -0
  84. package/src/components/editor/cell/useRunCells.ts +18 -3
  85. package/src/components/editor/chrome/wrapper/sidebar.tsx +2 -4
  86. package/src/components/editor/header/status.tsx +4 -2
  87. package/src/components/editor/navigation/navigation.ts +3 -2
  88. package/src/components/editor/notebook-cell.tsx +82 -83
  89. package/src/components/editor/renderers/grid-layout/__tests__/grid-layout.test.tsx +75 -0
  90. package/src/components/editor/renderers/grid-layout/grid-layout.tsx +22 -16
  91. package/src/components/editor/renderers/slides-layout/__tests__/plugin.test.ts +0 -1
  92. package/src/components/editor/renderers/vertical-layout/vertical-layout.tsx +12 -33
  93. package/src/components/editor/stdin-blocking-alert.tsx +3 -1
  94. package/src/components/scratchpad/scratchpad.tsx +4 -1
  95. package/src/components/slides/minimap.tsx +4 -2
  96. package/src/components/slides/reveal-component.tsx +14 -10
  97. package/src/components/slides/slide-cell-view.tsx +28 -24
  98. package/src/components/slides/slide.tsx +3 -4
  99. package/src/core/cells/__tests__/__snapshots__/cells.test.ts.snap +0 -389
  100. package/src/core/cells/__tests__/cell.test.ts +49 -154
  101. package/src/core/cells/__tests__/cells.test.ts +18 -127
  102. package/src/core/cells/__tests__/pending-delete-service.test.tsx +11 -20
  103. package/src/core/cells/__tests__/utils.test.ts +75 -247
  104. package/src/core/cells/actions.ts +5 -2
  105. package/src/core/cells/cell.ts +31 -133
  106. package/src/core/cells/cells.ts +14 -29
  107. package/src/core/cells/document.ts +3 -3
  108. package/src/core/cells/focus.ts +27 -6
  109. package/src/core/cells/layout.ts +1 -1
  110. package/src/core/cells/pending-delete-service.ts +5 -7
  111. package/src/core/cells/types.ts +13 -36
  112. package/src/core/cells/utils.ts +37 -68
  113. package/src/core/edit-app.tsx +2 -1
  114. package/src/core/executions/__tests__/atoms.test.ts +99 -0
  115. package/src/core/executions/__tests__/select.test.ts +268 -0
  116. package/src/core/executions/atoms.ts +206 -0
  117. package/src/core/executions/hooks.ts +31 -0
  118. package/src/core/executions/index.ts +31 -0
  119. package/src/core/executions/select.ts +175 -0
  120. package/src/core/export/__tests__/hooks.test.ts +0 -5
  121. package/src/core/islands/bootstrap.ts +4 -1
  122. package/src/core/islands/components/output-wrapper.tsx +5 -5
  123. package/src/core/kernel/handlers.ts +2 -11
  124. package/src/core/kernel/state.ts +0 -15
  125. package/src/core/lifecycle/render-policy.ts +12 -26
  126. package/src/core/network/__tests__/requests-lazy.test.ts +5 -5
  127. package/src/core/network/requests-lazy.ts +3 -3
  128. package/src/core/notebook/operations.ts +1 -1
  129. package/src/core/run-app.tsx +2 -1
  130. package/src/core/runtime/__tests__/adapter.test.ts +3 -3
  131. package/src/core/runtime/adapter.ts +4 -4
  132. package/src/core/session/useNotebookSession.tsx +3 -3
  133. package/src/core/wasm/bridge.ts +1 -1
  134. package/src/plugins/core/registerReactComponent.tsx +4 -13
  135. package/src/stories/cell-status.stories.tsx +17 -10
  136. package/src/stories/cell.stories.tsx +0 -31
  137. package/src/stories/layout/vertical/one-column.stories.tsx +0 -9
  138. package/src/utils/time.ts +10 -0
@@ -1,45 +1,41 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
2
  import { describe, expect, it } from "vitest";
3
+ import type { CellExecutionView, CellRunStatus } from "@/core/executions";
3
4
  import type { CellMessage, OutputMessage } from "@/core/kernel/messages";
4
- import type { RuntimeState } from "@/core/network/types";
5
- import type { Seconds } from "@/utils/time";
5
+ import type { Milliseconds, Seconds } from "@/utils/time";
6
6
  import { outputIsLoading, outputIsStale, transitionCell } from "../cell";
7
7
  import { createCellRuntimeState } from "../types";
8
8
 
9
- const STATUSES: RuntimeState[] = [
10
- "queued",
11
- "running",
12
- "idle",
13
- "disabled-transitively",
14
- ];
9
+ const STATUSES: CellRunStatus[] = ["queued", "running", "idle"];
15
10
 
16
- function createOutput(): OutputMessage {
11
+ const NOW = Date.now() as Milliseconds;
12
+
13
+ type View = Pick<
14
+ CellExecutionView,
15
+ "status" | "outcome" | "startedAt" | "rendered"
16
+ >;
17
+
18
+ function view(overrides: Partial<View>): View {
17
19
  return {
18
- channel: "output",
19
- mimetype: "application/json",
20
- data: {
21
- foo: "bar",
22
- },
23
- timestamp: Date.now(),
20
+ status: "idle",
21
+ outcome: null,
22
+ startedAt: null,
23
+ rendered: false,
24
+ ...overrides,
24
25
  };
25
26
  }
27
+
26
28
  describe("outputIsLoading", () => {
27
29
  it("should return true if the cell is running", () => {
28
- expect(outputIsLoading("running" as RuntimeState)).toBe(true);
30
+ expect(outputIsLoading("running")).toBe(true);
29
31
  });
30
32
 
31
33
  it("should return true if the cell is queued", () => {
32
- expect(outputIsLoading("queued" as RuntimeState)).toBe(true);
34
+ expect(outputIsLoading("queued")).toBe(true);
33
35
  });
34
36
 
35
37
  it("should return false if the cell is idle", () => {
36
- expect(outputIsLoading("idle" as RuntimeState)).toBe(false);
37
- });
38
-
39
- it("should return false if the cell is disabled-transitively", () => {
40
- expect(outputIsLoading("disabled-transitively" as RuntimeState)).toBe(
41
- false,
42
- );
38
+ expect(outputIsLoading("idle")).toBe(false);
43
39
  });
44
40
  });
45
41
 
@@ -47,149 +43,53 @@ describe("outputIsStale", () => {
47
43
  it.each(STATUSES)(
48
44
  "should return true if the cell is edited and status is %s",
49
45
  (status) => {
50
- const cell = {
51
- status: status,
52
- staleInputs: true,
53
- output: null,
54
- runStartTimestamp: null,
55
- interrupted: false,
56
- };
57
- const edited = true;
58
- expect(outputIsStale(cell, edited)).toBe(true);
46
+ expect(outputIsStale(view({ status }), true, true)).toBe(true);
59
47
  },
60
48
  );
61
49
 
62
50
  it("should return true if the cell is loading", () => {
63
- const cell = {
64
- status: "running" as RuntimeState,
65
- staleInputs: false,
66
- output: null,
67
- runStartTimestamp: null,
68
- interrupted: false,
69
- };
70
- const edited = false;
71
- expect(outputIsStale(cell, edited)).toBe(true);
51
+ expect(outputIsStale(view({ status: "running" }), false, false)).toBe(true);
72
52
  });
73
53
 
74
- it("should return false if the cell is running and output is received after run started", () => {
75
- const cell = {
76
- status: "running" as RuntimeState,
77
- staleInputs: false,
78
- output: createOutput(),
79
- runStartTimestamp: (Date.now() - 1000) as Seconds, // Output received after run started
80
- interrupted: false,
81
- };
82
- const edited = false;
83
- expect(outputIsStale(cell, edited)).toBe(false);
54
+ it("should return false if the cell is running and has shown output", () => {
55
+ const running = view({ status: "running", rendered: true });
56
+ expect(outputIsStale(running, false, false)).toBe(false);
84
57
  });
85
58
 
86
- it("should return true if the cell status is stale", () => {
87
- const cell = {
88
- status: "disabled-transitively" as RuntimeState,
89
- staleInputs: true,
90
- output: null,
91
- runStartTimestamp: null,
92
- interrupted: false,
93
- };
94
- const edited = false;
95
- expect(outputIsStale(cell, edited)).toBe(true);
59
+ it("should return true if the cell has stale inputs", () => {
60
+ expect(outputIsStale(view({}), true, false)).toBe(true);
96
61
  });
97
62
 
98
63
  it("should return false if the cell is interrupted", () => {
99
- const cell = {
100
- status: "running" as RuntimeState,
101
- staleInputs: false,
102
- output: null,
103
- runStartTimestamp: null,
104
- interrupted: true,
105
- };
106
- const edited = false;
107
- expect(outputIsStale(cell, edited)).toBe(false);
108
- });
109
-
110
- it("should return true if the cell is running and output is received before run started", () => {
111
- const cell = {
112
- status: "running" as RuntimeState,
113
- staleInputs: false,
114
- output: createOutput(),
115
- runStartTimestamp: (Date.now() + 1000) as Seconds, // Output received before run started
116
- interrupted: false,
117
- };
118
- const edited = false;
119
- expect(outputIsStale(cell, edited)).toBe(true);
64
+ expect(outputIsStale(view({ outcome: "interrupted" }), false, false)).toBe(
65
+ false,
66
+ );
120
67
  });
121
68
 
122
- it("should return false if the cell is idle and output is received", () => {
123
- const cell = {
124
- status: "idle" as RuntimeState,
125
- staleInputs: false,
126
- output: createOutput(),
127
- runStartTimestamp: null,
128
- interrupted: false,
129
- };
130
- const edited = false;
131
- expect(outputIsStale(cell, edited)).toBe(false);
69
+ it("should return false if the cell is idle and not edited", () => {
70
+ expect(outputIsStale(view({}), false, false)).toBe(false);
132
71
  });
133
72
 
134
73
  it("should return true if the cell is queued", () => {
135
- const cell = {
136
- status: "queued" as RuntimeState,
137
- staleInputs: false,
138
- output: null,
139
- runStartTimestamp: null,
140
- interrupted: false,
141
- };
142
- const edited = false;
143
- expect(outputIsStale(cell, edited)).toBe(true);
74
+ expect(outputIsStale(view({ status: "queued" }), false, false)).toBe(true);
144
75
  });
145
76
 
146
77
  it("should return true if the cell is running but no output is received", () => {
147
- const cell = {
148
- status: "running" as RuntimeState,
149
- staleInputs: false,
150
- output: null,
151
- runStartTimestamp: Date.now() as Seconds,
152
- interrupted: false,
153
- };
154
- const edited = false;
155
- expect(outputIsStale(cell, edited)).toBe(true);
156
- });
157
-
158
- it("should return false if the cell is idle and not edited", () => {
159
- const cell = {
160
- status: "idle" as RuntimeState,
161
- staleInputs: false,
162
- output: null,
163
- runStartTimestamp: null,
164
- interrupted: false,
165
- };
166
- const edited = false;
167
- expect(outputIsStale(cell, edited)).toBe(false);
78
+ const running = view({ status: "running", startedAt: NOW });
79
+ expect(outputIsStale(running, false, false)).toBe(true);
168
80
  });
169
81
 
170
82
  it("should return false if the cell is interrupted but also edited", () => {
171
83
  // We likely don't get in this state since before a cell is interrupted, it is run and we remove the edited state
172
- const cell = {
173
- status: "idle" as RuntimeState,
174
- staleInputs: false,
175
- output: null,
176
- runStartTimestamp: null,
177
- interrupted: true,
178
- };
179
- const edited = true;
180
- expect(outputIsStale(cell, edited)).toBe(false);
84
+ expect(outputIsStale(view({ outcome: "interrupted" }), false, true)).toBe(
85
+ false,
86
+ );
181
87
  });
182
88
 
183
- it("should return true if the cell is interrupted but has a stale status", () => {
184
- const cell = {
185
- status: "disabled-transitively" as RuntimeState,
186
- staleInputs: true,
187
- output: null,
188
- runStartTimestamp: null,
189
- interrupted: true,
190
- };
191
- const edited = false;
192
- expect(outputIsStale(cell, edited)).toBe(false);
89
+ it("should return false if the cell is interrupted but has stale inputs", () => {
90
+ expect(outputIsStale(view({ outcome: "interrupted" }), true, false)).toBe(
91
+ false,
92
+ );
193
93
  });
194
94
  });
195
95
 
@@ -231,7 +131,7 @@ describe("transitionCell console output ids", () => {
231
131
  });
232
132
 
233
133
  it("assigns increasing ids to appended outputs", () => {
234
- let cell = createCellRuntimeState({ status: "running" });
134
+ let cell = createCellRuntimeState();
235
135
  cell = transitionCell(cell, { console: output("a") } as CellMessage);
236
136
  cell = transitionCell(cell, {
237
137
  console: output("b", "stderr"),
@@ -240,7 +140,7 @@ describe("transitionCell console output ids", () => {
240
140
  });
241
141
 
242
142
  it("continues from the surviving maximum after a collapse", () => {
243
- let cell = createCellRuntimeState({ status: "running" });
143
+ let cell = createCellRuntimeState();
244
144
  cell = transitionCell(cell, { console: output("a") } as CellMessage);
245
145
  cell = transitionCell(cell, { console: output("b") } as CellMessage);
246
146
  expect(cell.consoleOutputs.map((o) => o.id)).toEqual([1]);
@@ -251,7 +151,7 @@ describe("transitionCell console output ids", () => {
251
151
  });
252
152
 
253
153
  it("assigns ids when the kernel replaces the whole console", () => {
254
- const cell = transitionCell(createCellRuntimeState({ status: "running" }), {
154
+ const cell = transitionCell(createCellRuntimeState(), {
255
155
  console: [output("a"), output("b", "stderr")],
256
156
  } as CellMessage);
257
157
  expect(cell.consoleOutputs.map((o) => o.id)).toEqual([1, 2]);
@@ -275,7 +175,7 @@ describe("transitionCell stdin resolution", () => {
275
175
  name: "idle",
276
176
  message: { status: "idle" } as CellMessage,
277
177
  },
278
- ])("when $name", ({ name, message }) => {
178
+ ])("when $name", ({ message }) => {
279
179
  it.each(["text/plain", "text/password"] as const)(
280
180
  "preserves a processed %s prompt",
281
181
  (mimetype) => {
@@ -285,13 +185,11 @@ describe("transitionCell stdin resolution", () => {
285
185
  data: "Enter a value: ",
286
186
  timestamp: 0,
287
187
  };
288
- const waiting = transitionCell(
289
- createCellRuntimeState({ status: "running" }),
290
- { console: prompt } as CellMessage,
291
- );
188
+ const waiting = transitionCell(createCellRuntimeState(), {
189
+ console: prompt,
190
+ } as CellMessage);
292
191
  const resolved = transitionCell(waiting, message);
293
192
 
294
- expect(resolved.interrupted).toBe(name === "interrupted");
295
193
  expect(resolved.consoleOutputs[0]).toMatchObject({
296
194
  ...prompt,
297
195
  response: "",
@@ -310,7 +208,6 @@ describe("transitionCell stdin resolution", () => {
310
208
  response: "submitted value",
311
209
  };
312
210
  const answered = createCellRuntimeState({
313
- status: "running",
314
211
  consoleOutputs: [prompt],
315
212
  });
316
213
  const resolved = transitionCell(answered, message);
@@ -333,7 +230,6 @@ describe("transitionCell stdin resolution", () => {
333
230
  // A paused-pdb cell shows an unanswered stdin prompt (the debugger box);
334
231
  // once it finishes (e.g. after quitting with `q`), the box is removed.
335
232
  const cell = createCellRuntimeState({
336
- status: "running",
337
233
  debuggerActive: true,
338
234
  consoleOutputs: [stdinOutput()],
339
235
  });
@@ -347,7 +243,6 @@ describe("transitionCell stdin resolution", () => {
347
243
 
348
244
  it("leaves an unanswered prompt interactive while still running", () => {
349
245
  const cell = createCellRuntimeState({
350
- status: "running",
351
246
  consoleOutputs: [stdinOutput()],
352
247
  });
353
248
  const next = transitionCell(cell, {