sql-preview 0.6.8 → 0.6.11

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/Changelog.md CHANGED
@@ -2,6 +2,24 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.6.11] - 2026-07-14
6
+
7
+ ### Added
8
+
9
+ - Consolidated the CI release pipeline into one gated workflow and added release note generation.
10
+
11
+ ### Changed
12
+
13
+ - DuckDB is now a managed, auto-provisioned runtime inside the daemon; the legacy "Install @duckdb/node-api" flow has been removed and Local Files is a built-in connection. (RFC-075)
14
+ - Enhanced RFC tooling to recognize `deferred/` lifecycle and enforce independent close-out verification.
15
+
16
+ ## [0.6.10] - 2026-07-12
17
+
18
+ ### Fixed
19
+
20
+ - Fixed Trino integration tests failing on `listSchemas` and improved initial polling.
21
+ - Fixed Postgres `testConnection` memory leak and config cache fix.
22
+
5
23
  ## [0.6.8] - 2026-07-12
6
24
 
7
25
  ### Added
package/dist/mcp-app.html CHANGED
@@ -74589,12 +74589,6 @@ function TestElapsed({ since }) {
74589
74589
  ] });
74590
74590
  }
74591
74591
  const OPTIONAL_DEPENDENCY_ADVICE = [
74592
- {
74593
- dependency: "@duckdb/node-api",
74594
- installCommand: "npm install @duckdb/node-api",
74595
- title: "DUCKDB support is required",
74596
- guidance: "Local file queries require optional DuckDB support, but the DuckDB native module is not available in this extension runtime."
74597
- },
74598
74592
  {
74599
74593
  dependency: "snowflake-sdk",
74600
74594
  installCommand: "npm install snowflake-sdk",
@@ -74612,9 +74606,6 @@ function getOptionalDependencyAdvice(message) {
74612
74606
  if (message.includes(advice.dependency)) {
74613
74607
  return true;
74614
74608
  }
74615
- if (advice.dependency === "@duckdb/node-api") {
74616
- return lowerMessage.includes("duckdb native module");
74617
- }
74618
74609
  if (advice.dependency === "snowflake-sdk") {
74619
74610
  return lowerMessage.includes("snowflake sdk") || lowerMessage.includes("sdk is not available");
74620
74611
  }
@@ -74786,7 +74777,7 @@ const ConnectionsManager = () => {
74786
74777
  (_b2 = toastRef.current) == null ? void 0 : _b2.focus({ preventScroll: true });
74787
74778
  });
74788
74779
  }, [toast]);
74789
- const handleTestConnection = async (connectionId) => {
74780
+ const handleTestConnection = async (connectionId, provisionRuntime = false) => {
74790
74781
  var _a3;
74791
74782
  if (!isReady) {
74792
74783
  return false;
@@ -74799,7 +74790,10 @@ const ConnectionsManager = () => {
74799
74790
  setTestStartedAt((prev) => ({ ...prev, [connectionId]: Date.now() }));
74800
74791
  try {
74801
74792
  const result = await withTestTimeout(
74802
- callServerTool("test_connection", { connectionId }),
74793
+ callServerTool("test_connection", {
74794
+ connectionId,
74795
+ ...provisionRuntime ? { provisionRuntime: true } : {}
74796
+ }),
74803
74797
  CONNECTION_TEST_TIMEOUT_MS
74804
74798
  );
74805
74799
  if (isStale()) {
@@ -75105,41 +75099,56 @@ const ConnectionsManager = () => {
75105
75099
  )
75106
75100
  ] });
75107
75101
  }
75108
- if (!statusMsg) {
75109
- return null;
75102
+ if (statusMsg) {
75103
+ const advice = getOptionalDependencyAdvice(statusMsg);
75104
+ if (advice) {
75105
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "sp-conn-status-message sp-conn-status-message-warning", role: "alert", children: [
75106
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "sp-conn-warning-content", children: [
75107
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "sp-conn-warning-title", children: advice.title }),
75108
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "sp-conn-warning-guidance", children: advice.guidance }),
75109
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("details", { className: "sp-conn-warning-details", children: [
75110
+ /* @__PURE__ */ jsxRuntimeExports.jsx("summary", { children: "Technical details" }),
75111
+ /* @__PURE__ */ jsxRuntimeExports.jsx("code", { children: getOptionalDependencyDetails(statusMsg) })
75112
+ ] })
75113
+ ] }),
75114
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
75115
+ "button",
75116
+ {
75117
+ className: "sp-btn sp-btn-primary sp-conn-status-action",
75118
+ onClick: () => handleInstallOptionalDependency(advice),
75119
+ children: [
75120
+ "Install ",
75121
+ advice.dependency
75122
+ ]
75123
+ }
75124
+ )
75125
+ ] });
75126
+ }
75127
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
75128
+ "div",
75129
+ {
75130
+ className: `sp-conn-status-message sp-conn-status-message-${status}`,
75131
+ role: status === "error" ? "alert" : "status",
75132
+ children: statusMsg
75133
+ }
75134
+ );
75110
75135
  }
75111
- const advice = getOptionalDependencyAdvice(statusMsg);
75112
- if (advice) {
75113
- return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "sp-conn-status-message sp-conn-status-message-warning", role: "alert", children: [
75114
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "sp-conn-warning-content", children: [
75115
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "sp-conn-warning-title", children: advice.title }),
75116
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "sp-conn-warning-guidance", children: advice.guidance }),
75117
- /* @__PURE__ */ jsxRuntimeExports.jsxs("details", { className: "sp-conn-warning-details", children: [
75118
- /* @__PURE__ */ jsxRuntimeExports.jsx("summary", { children: "Technical details" }),
75119
- /* @__PURE__ */ jsxRuntimeExports.jsx("code", { children: getOptionalDependencyDetails(statusMsg) })
75120
- ] })
75121
- ] }),
75122
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
75136
+ if (connection.id === "built-in-duckdb" && connection.engineState) {
75137
+ const message = connection.engineState === "ready" ? "Ready" : connection.engineState === "provisioning" ? "Preparing engine… (downloading, one-time)" : connection.engineErrorReason === "disabled" ? "Managed engine is disabled by the rollout setting" : connection.engineErrorMessage || "Unavailable — retrying automatically";
75138
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "sp-conn-status-message", role: "status", children: [
75139
+ message,
75140
+ connection.engineErrorReason === "disabled" && /* @__PURE__ */ jsxRuntimeExports.jsx(
75123
75141
  "button",
75124
75142
  {
75125
- className: "sp-btn sp-btn-primary sp-conn-status-action",
75126
- onClick: () => handleInstallOptionalDependency(advice),
75127
- children: [
75128
- "Install ",
75129
- advice.dependency
75130
- ]
75143
+ type: "button",
75144
+ className: "sp-btn sp-conn-status-action",
75145
+ onClick: () => void handleTestConnection(connection.id, true),
75146
+ children: "Download engine"
75131
75147
  }
75132
75148
  )
75133
75149
  ] });
75134
75150
  }
75135
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
75136
- "div",
75137
- {
75138
- className: `sp-conn-status-message sp-conn-status-message-${status}`,
75139
- role: status === "error" ? "alert" : "status",
75140
- children: statusMsg
75141
- }
75142
- );
75151
+ return null;
75143
75152
  };
75144
75153
  const renderConnectionForm = () => /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "sp-detail", children: [
75145
75154
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "sp-conn-detail-header", children: [
@@ -75244,37 +75253,60 @@ const ConnectionsManager = () => {
75244
75253
  ] });
75245
75254
  };
75246
75255
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "sp-detail", children: [
75247
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "sp-conn-detail-header", style: { display: "flex", justifyContent: "space-between", alignItems: "center", flexWrap: "wrap", gap: "16px", paddingBottom: "16px", borderBottom: "1px solid var(--sp-border)", marginBottom: "16px" }, children: [
75248
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { display: "flex", alignItems: "center", gap: "12px", flexWrap: "wrap" }, children: [
75249
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { style: { fontWeight: 600, fontSize: "14px", color: "var(--sp-fg)" }, children: selectedConnection ? "Edit Connection" : "New Connection" }),
75250
- selectedConnection && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
75251
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "sp-conn-type-badge", children: selectedConnection.type }),
75252
- isActive && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "sp-conn-active-badge", children: "Active" }),
75253
- selectedConnection.builtIn && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "sp-conn-built-in-label", children: "Built-in" })
75254
- ] })
75255
- ] }),
75256
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "sp-conn-detail-actions", style: { display: "flex", gap: "8px", flexWrap: "wrap" }, children: [
75257
- supportsActiveConnection && /* @__PURE__ */ jsxRuntimeExports.jsx(
75258
- "button",
75259
- {
75260
- className: `sp-btn${isActive ? " sp-btn-primary" : ""}`,
75261
- onClick: () => handleSetActiveConnection(selectedConnection),
75262
- disabled: isActive || status === "testing",
75263
- "aria-label": `Set ${selectedConnection.name} as the active connection for queries`,
75264
- children: isActive ? "Active" : "Set active"
75265
- }
75266
- ),
75267
- !selectedConnection.builtIn && /* @__PURE__ */ jsxRuntimeExports.jsx(
75268
- "button",
75269
- {
75270
- className: "sp-btn sp-btn-ghost-danger",
75271
- onClick: () => handleDeleteConnection(selectedConnection.id, selectedConnection.name),
75272
- "aria-label": `Delete connection ${selectedConnection.name}`,
75273
- children: "Delete"
75274
- }
75275
- )
75276
- ] })
75277
- ] }),
75256
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
75257
+ "div",
75258
+ {
75259
+ className: "sp-conn-detail-header",
75260
+ style: {
75261
+ display: "flex",
75262
+ justifyContent: "space-between",
75263
+ alignItems: "center",
75264
+ flexWrap: "wrap",
75265
+ gap: "16px",
75266
+ paddingBottom: "16px",
75267
+ borderBottom: "1px solid var(--sp-border)",
75268
+ marginBottom: "16px"
75269
+ },
75270
+ children: [
75271
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { display: "flex", alignItems: "center", gap: "12px", flexWrap: "wrap" }, children: [
75272
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { style: { fontWeight: 600, fontSize: "14px", color: "var(--sp-fg)" }, children: selectedConnection ? "Edit Connection" : "New Connection" }),
75273
+ selectedConnection && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
75274
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "sp-conn-type-badge", children: selectedConnection.type }),
75275
+ isActive && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "sp-conn-active-badge", children: "Active" }),
75276
+ selectedConnection.builtIn && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "sp-conn-built-in-label", children: "Built-in" })
75277
+ ] })
75278
+ ] }),
75279
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
75280
+ "div",
75281
+ {
75282
+ className: "sp-conn-detail-actions",
75283
+ style: { display: "flex", gap: "8px", flexWrap: "wrap" },
75284
+ children: [
75285
+ supportsActiveConnection && /* @__PURE__ */ jsxRuntimeExports.jsx(
75286
+ "button",
75287
+ {
75288
+ className: `sp-btn${isActive ? " sp-btn-primary" : ""}`,
75289
+ onClick: () => handleSetActiveConnection(selectedConnection),
75290
+ disabled: isActive || status === "testing",
75291
+ "aria-label": `Set ${selectedConnection.name} as the active connection for queries`,
75292
+ children: isActive ? "Active" : "Set active"
75293
+ }
75294
+ ),
75295
+ !selectedConnection.builtIn && /* @__PURE__ */ jsxRuntimeExports.jsx(
75296
+ "button",
75297
+ {
75298
+ className: "sp-btn sp-btn-ghost-danger",
75299
+ onClick: () => handleDeleteConnection(selectedConnection.id, selectedConnection.name),
75300
+ "aria-label": `Delete connection ${selectedConnection.name}`,
75301
+ children: "Delete"
75302
+ }
75303
+ )
75304
+ ]
75305
+ }
75306
+ )
75307
+ ]
75308
+ }
75309
+ ),
75278
75310
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "sp-conn-detail-body", children: [
75279
75311
  renderToast(),
75280
75312
  modeAwareEditSchema ? /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -75305,7 +75337,24 @@ const ConnectionsManager = () => {
75305
75337
  disabled: isLoading,
75306
75338
  "aria-label": "Refresh connections",
75307
75339
  title: "Refresh",
75308
- children: /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { width: "14", height: "14", viewBox: "0 0 16 16", xmlns: "http://www.w3.org/2000/svg", fill: "currentColor", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M4.681 3H2V2h3.5l.5.5V6H5V4a5 5 0 1 0 4.53-.761l.302-.953A6 6 0 1 1 4.681 3z" }) })
75340
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
75341
+ "svg",
75342
+ {
75343
+ width: "14",
75344
+ height: "14",
75345
+ viewBox: "0 0 16 16",
75346
+ xmlns: "http://www.w3.org/2000/svg",
75347
+ fill: "currentColor",
75348
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
75349
+ "path",
75350
+ {
75351
+ fillRule: "evenodd",
75352
+ clipRule: "evenodd",
75353
+ d: "M4.681 3H2V2h3.5l.5.5V6H5V4a5 5 0 1 0 4.53-.761l.302-.953A6 6 0 1 1 4.681 3z"
75354
+ }
75355
+ )
75356
+ }
75357
+ )
75309
75358
  }
75310
75359
  ),
75311
75360
  /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -75319,48 +75368,118 @@ const ConnectionsManager = () => {
75319
75368
  )
75320
75369
  ] })
75321
75370
  ] }),
75322
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "sp-conn-grid", style: { display: "grid", gridTemplateColumns: "repeat(auto-fill, minmax(260px, 1fr))", gap: "12px" }, children: connections.length === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "sp-conn-empty", style: { gridColumn: "1 / -1" }, children: "No connections configured." }) : connections.map((c) => {
75323
- const status = statuses[c.id] || "unknown";
75324
- const isActive = supportsActiveConnection && activeConnectionId === c.id;
75325
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(
75326
- "div",
75327
- {
75328
- className: "sp-conn-card",
75329
- style: {
75330
- border: "1px solid var(--sp-border)",
75331
- borderRadius: "6px",
75332
- padding: "12px",
75333
- background: "var(--sp-header-bg)",
75334
- cursor: "pointer",
75335
- display: "flex",
75336
- flexDirection: "column",
75337
- gap: "8px"
75338
- },
75339
- onClick: () => {
75340
- setSelectedConnectionId(c.id);
75341
- setIsFormOpen(false);
75342
- },
75343
- children: [
75344
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { display: "flex", alignItems: "center", gap: "8px", fontWeight: 600 }, children: [
75345
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { style: { display: "flex", width: 16, height: 16, alignItems: "center", justifyContent: "center", color: "var(--sp-btn-bg)" }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ConnectorGlyph, { type: c.type }) }),
75346
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: c.name })
75347
- ] }) }),
75348
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: { fontSize: "12px", color: "var(--sp-muted-fg)" }, children: c.type.toUpperCase() }),
75349
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { display: "flex", alignItems: "center", gap: "6px", fontSize: "11px", marginTop: "4px" }, children: [
75350
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `sp-dot sp-dot-${status}` }),
75351
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { style: { color: "var(--sp-muted-fg)" }, children: status === "ok" ? "Connected" : status === "error" ? "Error" : status === "testing" ? "Testing..." : "Disconnected" }),
75352
- isActive && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "sp-pill", style: { marginLeft: "auto" }, children: "Active" })
75353
- ] })
75354
- ]
75371
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
75372
+ "div",
75373
+ {
75374
+ className: "sp-conn-grid",
75375
+ style: {
75376
+ display: "grid",
75377
+ gridTemplateColumns: "repeat(auto-fill, minmax(260px, 1fr))",
75378
+ gap: "12px"
75355
75379
  },
75356
- c.id
75357
- );
75358
- }) })
75380
+ children: connections.length === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "sp-conn-empty", style: { gridColumn: "1 / -1" }, children: "No connections configured." }) : connections.map((c) => {
75381
+ const testedStatus = statuses[c.id];
75382
+ const runtimeStatus = c.id === "built-in-duckdb" && c.engineState ? c.engineState === "ready" ? "ok" : c.engineState === "provisioning" ? "testing" : "error" : void 0;
75383
+ const status = testedStatus || runtimeStatus || "unknown";
75384
+ const statusLabel = !testedStatus && c.id === "built-in-duckdb" && c.engineState ? c.engineState === "ready" ? "Ready" : c.engineState === "provisioning" ? "Preparing engine..." : "Unavailable" : status === "ok" ? "Connected" : status === "error" ? "Error" : status === "testing" ? "Testing..." : "Disconnected";
75385
+ const isActive = supportsActiveConnection && activeConnectionId === c.id;
75386
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(
75387
+ "div",
75388
+ {
75389
+ className: "sp-conn-card",
75390
+ style: {
75391
+ border: "1px solid var(--sp-border)",
75392
+ borderRadius: "6px",
75393
+ padding: "12px",
75394
+ background: "var(--sp-header-bg)",
75395
+ cursor: "pointer",
75396
+ display: "flex",
75397
+ flexDirection: "column",
75398
+ gap: "8px"
75399
+ },
75400
+ onClick: () => {
75401
+ setSelectedConnectionId(c.id);
75402
+ setIsFormOpen(false);
75403
+ },
75404
+ children: [
75405
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
75406
+ "div",
75407
+ {
75408
+ style: { display: "flex", justifyContent: "space-between", alignItems: "center" },
75409
+ children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
75410
+ "div",
75411
+ {
75412
+ style: { display: "flex", alignItems: "center", gap: "8px", fontWeight: 600 },
75413
+ children: [
75414
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
75415
+ "span",
75416
+ {
75417
+ style: {
75418
+ display: "flex",
75419
+ width: 16,
75420
+ height: 16,
75421
+ alignItems: "center",
75422
+ justifyContent: "center",
75423
+ color: "var(--sp-btn-bg)"
75424
+ },
75425
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(ConnectorGlyph, { type: c.type })
75426
+ }
75427
+ ),
75428
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: c.name })
75429
+ ]
75430
+ }
75431
+ )
75432
+ }
75433
+ ),
75434
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: { fontSize: "12px", color: "var(--sp-muted-fg)" }, children: c.type.toUpperCase() }),
75435
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
75436
+ "div",
75437
+ {
75438
+ style: {
75439
+ display: "flex",
75440
+ alignItems: "center",
75441
+ gap: "6px",
75442
+ fontSize: "11px",
75443
+ marginTop: "4px"
75444
+ },
75445
+ children: [
75446
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `sp-dot sp-dot-${status}` }),
75447
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { style: { color: "var(--sp-muted-fg)" }, children: statusLabel }),
75448
+ isActive && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "sp-pill", style: { marginLeft: "auto" }, children: "Active" })
75449
+ ]
75450
+ }
75451
+ )
75452
+ ]
75453
+ },
75454
+ c.id
75455
+ );
75456
+ })
75457
+ }
75458
+ )
75359
75459
  ] });
75360
75460
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "sp-conn-page", children: [
75361
75461
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "sp-conn", children: !isFormOpen && !selectedConnectionId ? renderGrid() : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
75362
- /* @__PURE__ */ jsxRuntimeExports.jsx("button", { className: "sp-btn", onClick: closeForm, style: { marginBottom: 12, alignSelf: "flex-start" }, children: "← Back to connections" }),
75363
- /* @__PURE__ */ jsxRuntimeExports.jsx("section", { "aria-label": "Connection details", style: { background: "var(--sp-bg)", border: "1px solid var(--sp-border)", borderRadius: 6 }, children: isFormOpen ? renderConnectionForm() : renderConnectionDetails() })
75462
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
75463
+ "button",
75464
+ {
75465
+ className: "sp-btn",
75466
+ onClick: closeForm,
75467
+ style: { marginBottom: 12, alignSelf: "flex-start" },
75468
+ children: "← Back to connections"
75469
+ }
75470
+ ),
75471
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
75472
+ "section",
75473
+ {
75474
+ "aria-label": "Connection details",
75475
+ style: {
75476
+ background: "var(--sp-bg)",
75477
+ border: "1px solid var(--sp-border)",
75478
+ borderRadius: 6
75479
+ },
75480
+ children: isFormOpen ? renderConnectionForm() : renderConnectionDetails()
75481
+ }
75482
+ )
75364
75483
  ] }) }),
75365
75484
  /* @__PURE__ */ jsxRuntimeExports.jsx(
75366
75485
  ConfirmDialog,