@qredence/fleet 0.6.6 → 0.7.0

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 (87) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/web/client/assets/{action-swap-roll-Dbquwd1Y.js → action-swap-roll-BfVrBOVd.js} +1 -1
  3. package/dist/web/client/assets/{alert-dialog-C6Dkg1x6.js → alert-dialog-FCppNafx.js} +1 -1
  4. package/dist/web/client/assets/{artifacts-panel-8a_tn7Yb.js → artifacts-panel-Qd6JlHzz.js} +1 -1
  5. package/dist/web/client/assets/button-BJyg7l5W.js +1 -0
  6. package/dist/web/client/assets/{chat-command-palette-DhidLnw7.js → chat-command-palette-CPlJp2cO.js} +1 -1
  7. package/dist/web/client/assets/{citations-BYiDBo21.js → citations-BhyqbxcZ.js} +1 -1
  8. package/dist/web/client/assets/{command-Cre9BsOI.js → command-Bo31U-UD.js} +1 -1
  9. package/dist/web/client/assets/create-project-dialog-SDyXTpl-.js +1 -0
  10. package/dist/web/client/assets/{dialog-0KDCsqw0.js → dialog-DLIPvl1s.js} +1 -1
  11. package/dist/web/client/assets/ease-DKi-MOH5.js +1 -0
  12. package/dist/web/client/assets/{fork-picker-dialog-BPSqUjKu.js → fork-picker-dialog-BDleMADF.js} +1 -1
  13. package/dist/web/client/assets/globals-DZbMyHfg.css +2 -0
  14. package/dist/web/client/assets/index-D3HpiAnD.js +12 -0
  15. package/dist/web/client/assets/input-Ce8yLnXY.js +1 -0
  16. package/dist/web/client/assets/{input-group-Fky3fte_.js → input-group-BZLQiZOA.js} +1 -1
  17. package/dist/web/client/assets/is-ref-object-BD8OGh9C.js +1 -0
  18. package/dist/web/client/assets/{layout-constants-CC0ANQOP.js → layout-constants-Bl6XCvhY.js} +1 -1
  19. package/dist/web/client/assets/{message-queue-BUJK6bPQ.js → message-queue-CiptKSb6.js} +1 -1
  20. package/dist/web/client/assets/{model-selector-list-yOj8BeKr.js → model-selector-list-BHQ-Q8b9.js} +1 -1
  21. package/dist/web/client/assets/{notify-GSsGEKtR.js → notify-BC0a76VJ.js} +1 -1
  22. package/dist/web/client/assets/{openui-renderer-xe2-ekvP.js → openui-renderer-CH9K7_8t.js} +3 -3
  23. package/dist/web/client/assets/{prompt-input-BhVQxoyh.js → prompt-input-IwZOepG7.js} +1 -1
  24. package/dist/web/client/assets/{provider-label-BW_awXvw.js → provider-label-DNZOLldn.js} +1 -1
  25. package/dist/web/client/assets/{right-panel-registry-BpfG1iZV.js → right-panel-registry-BJG8ubHt.js} +2 -2
  26. package/dist/web/client/assets/routes-BXFQmjL9.js +16 -0
  27. package/dist/web/client/assets/select-COK0Kaq2.js +1 -0
  28. package/dist/web/client/assets/{session-tool-renderer-CNcxpGsk.js → session-tool-renderer-mOZdkbiU.js} +1 -1
  29. package/dist/web/client/assets/{session-tree-panel-BIEUJ1Zs.js → session-tree-panel-deGRKAhX.js} +1 -1
  30. package/dist/web/client/assets/settings-dialog-BU1Tw0CQ.js +2 -0
  31. package/dist/web/client/assets/{subagent-chat-panel-DA1GvHt8.js → subagent-chat-panel-DQEnhU2t.js} +1 -1
  32. package/dist/web/client/assets/{subagent-transcript-BGctBTbY.js → subagent-transcript-CCpg3uL6.js} +1 -1
  33. package/dist/web/client/assets/{subagent-utils-HbymlalM.js → subagent-utils-DTV2RcFl.js} +2 -2
  34. package/dist/web/client/assets/{subagents-panel-BJIdWRcV.js → subagents-panel-B-X7WPUU.js} +1 -1
  35. package/dist/web/client/assets/surface-context-DWplCCcO.js +1 -0
  36. package/dist/web/client/assets/{switch-DIbInrPR.js → switch-DQETDDJT.js} +1 -1
  37. package/dist/web/client/assets/toast-BFeqSeaR.js +1 -0
  38. package/dist/web/client/assets/{tool-result-PSnAt_3f.js → tool-result-C5Ixe-AJ.js} +1 -1
  39. package/dist/web/client/assets/{use-presence-D2YmRKr3.js → use-presence-rcUnm8Z7.js} +1 -1
  40. package/dist/web/client/assets/use-reduced-motion-BgG7f9xw.js +9 -0
  41. package/dist/web/client/assets/{workspace-panel-D3CMFw8W.js → workspace-panel-DDjQuELx.js} +1 -1
  42. package/dist/web/client/bundle-budget.json +5 -5
  43. package/dist/web/server/{_tanstack-start-manifest_v-MhCuqEzO-S6MEB7L5.js → _tanstack-start-manifest_v-vL58CVrY-7SDCWIHD.js} +23 -23
  44. package/dist/web/server/{artifacts-panel-BVfcZuA2-PB4RCSHV.js → artifacts-panel-CozDO7ak-5T4W7RME.js} +9 -9
  45. package/dist/web/server/{chat-command-palette-DlJDToBH-MVI6V743.js → chat-command-palette-CLE-L0qp-ZZNKVTSS.js} +5 -5
  46. package/dist/web/server/{chunk-MM4HQ5EO.js → chunk-54UEKLGD.js} +7 -7
  47. package/dist/web/server/{chunk-3VMFSSWK.js → chunk-B4EBMF5J.js} +2 -2
  48. package/dist/web/server/{chunk-RQHQK66C.js → chunk-D7GSWBRI.js} +2 -2
  49. package/dist/web/server/{chunk-JT53AAM5.js → chunk-E4YWFQX5.js} +1442 -1063
  50. package/dist/web/server/{chunk-VF3NJAD6.js → chunk-EUWNVEIC.js} +497 -556
  51. package/dist/web/server/{chunk-KUBURZOL.js → chunk-GRGV5FVO.js} +4 -4
  52. package/dist/web/server/{chunk-4QFOBBX5.js → chunk-NHV77NOI.js} +2 -2
  53. package/dist/web/server/{chunk-RWQWBZNI.js → chunk-QCDSLD3L.js} +6 -6
  54. package/dist/web/server/{chunk-MSXGQVHG.js → chunk-RVDWGK6U.js} +5 -5
  55. package/dist/web/server/{chunk-SAIH5YPC.js → chunk-RYU7I34A.js} +4 -4
  56. package/dist/web/server/{chunk-WBPESYPV.js → chunk-SLRV7YNY.js} +3 -3
  57. package/dist/web/server/{chunk-44MTKAFZ.js → chunk-XJHYJLGU.js} +4 -4
  58. package/dist/web/server/{create-project-dialog-UPz5_Ysf-FS6BL74M.js → create-project-dialog-CReZdM5g-2V7C5J67.js} +75 -14
  59. package/dist/web/server/{fork-picker-dialog-CZBpezXS-64KP23PO.js → fork-picker-dialog-CXcLEaor-6SVM5RJO.js} +3 -3
  60. package/dist/web/server/{message-queue-D_Q3coUY-I3EJZXWR.js → message-queue-Q_Q6hbqc-AOV2PSCX.js} +3 -3
  61. package/dist/web/server/{model-selector-list-q6WkkOwQ-OT46QU5P.js → model-selector-list-BOKU5_Z3-III72ZT2.js} +5 -5
  62. package/dist/web/server/{openui-renderer-BqI6m6VI-HXEIYIYZ.js → openui-renderer-VuQOQeAP-XBOR3XGN.js} +5 -5
  63. package/dist/web/server/{resources-panel-BKZ0M0RP-CMATPQQP.js → resources-panel-Cnz-X1bx-TT5KVROR.js} +4 -4
  64. package/dist/web/server/{router-BfuEp_JW-DNQ33L5J.js → router-C437aaqv-72HBLLJI.js} +2 -2
  65. package/dist/web/server/{routes-NdG3DsXJ-QKZT7TKM.js → routes-BkVN3m9i-PYNMNLQ5.js} +36 -34
  66. package/dist/web/server/server.js +2 -2
  67. package/dist/web/server/{session-reasoning-panel-Dc-AnjdD-7KAZLD74.js → session-reasoning-panel-2_TR5nKM-KA5OY7ZV.js} +4 -4
  68. package/dist/web/server/{session-tool-renderer-DaR8U5rb-TXWACWT7.js → session-tool-renderer-BFEWy2Pk-JTSYUPO5.js} +5 -5
  69. package/dist/web/server/{session-tree-panel-V3l8WdmE-YBRDLHWU.js → session-tree-panel-3y9LVA0A-4V4TJX62.js} +5 -5
  70. package/dist/web/server/{settings-dialog-C8U1VX75-6A2V6HSW.js → settings-dialog-DgZ8Z5e4-6T5AS2EB.js} +190 -119
  71. package/dist/web/server/{subagent-chat-panel-B9CtFTP5-6QDZ4RQY.js → subagent-chat-panel-B0pmAxCp-DKXNAOUU.js} +7 -7
  72. package/dist/web/server/{subagents-panel-Dw6yP5X4-BMN45GDD.js → subagents-panel-FUUT0t1i-5ZKJ2QAJ.js} +8 -8
  73. package/dist/web/server/{workspace-panel-C246J-eO-2WGJWVE6.js → workspace-panel-BbI1N4f8-WYOEVH4G.js} +4 -4
  74. package/package.json +1 -1
  75. package/dist/web/client/assets/button-BrwYi6QP.js +0 -1
  76. package/dist/web/client/assets/create-project-dialog-DVOaxTzt.js +0 -1
  77. package/dist/web/client/assets/ease-2UPBQU5v.js +0 -1
  78. package/dist/web/client/assets/globals-CD6JXJJh.css +0 -2
  79. package/dist/web/client/assets/index-BEG-7vN-.js +0 -12
  80. package/dist/web/client/assets/input-tWLSIxES.js +0 -1
  81. package/dist/web/client/assets/is-ref-object-CEXqIz6L.js +0 -1
  82. package/dist/web/client/assets/routes-BIp_deev.js +0 -16
  83. package/dist/web/client/assets/select-Buvrx1fi.js +0 -1
  84. package/dist/web/client/assets/settings-dialog-DAB6RL4u.js +0 -2
  85. package/dist/web/client/assets/surface-context-A-BjVzO_.js +0 -1
  86. package/dist/web/client/assets/toast-CS0pnDlS.js +0 -1
  87. package/dist/web/client/assets/use-reduced-motion-CaQBb3Qc.js +0 -9
@@ -7,7 +7,7 @@ import {
7
7
  InputGroupButton,
8
8
  InputGroupInput,
9
9
  Textarea
10
- } from "./chunk-WBPESYPV.js";
10
+ } from "./chunk-SLRV7YNY.js";
11
11
  import {
12
12
  Alert,
13
13
  AlertDescription,
@@ -16,7 +16,7 @@ import {
16
16
  FieldGroup,
17
17
  FieldLabel,
18
18
  Switch$1
19
- } from "./chunk-KUBURZOL.js";
19
+ } from "./chunk-GRGV5FVO.js";
20
20
  import {
21
21
  isModelPatternEnabled,
22
22
  modelMatchesPattern,
@@ -47,7 +47,7 @@ import {
47
47
  useCSPContext,
48
48
  useChatPanelDataContext,
49
49
  useSettingsActionsContext
50
- } from "./chunk-VF3NJAD6.js";
50
+ } from "./chunk-EUWNVEIC.js";
51
51
  import {
52
52
  Button$1,
53
53
  addEventListener,
@@ -64,10 +64,11 @@ import {
64
64
  useDirection,
65
65
  useIsoLayoutEffect,
66
66
  useRenderElement,
67
+ useShape,
67
68
  useStableCallback,
68
69
  useTimeout,
69
70
  writeUiPreferences
70
- } from "./chunk-JT53AAM5.js";
71
+ } from "./chunk-E4YWFQX5.js";
71
72
  import {
72
73
  COMPACT_ACTION_BUTTON_CLASS,
73
74
  HIT_AREA_EXPAND_CLASS,
@@ -122,8 +123,8 @@ import {
122
123
  __export
123
124
  } from "./chunk-CZ7CSFO4.js";
124
125
 
125
- // web/app/dist/server/assets/settings-dialog-C8U1VX75.js
126
- import { useCallback, useEffect as useEffect2, useId, useMemo as useMemo3, useRef as useRef4, useState as useState2 } from "react";
126
+ // web/app/dist/server/assets/settings-dialog-DgZ8Z5e4.js
127
+ import { createContext as createContext4, forwardRef as forwardRef7, useCallback, useContext as useContext4, useEffect as useEffect2, useId, useMemo as useMemo3, useRef as useRef4, useState as useState2 } from "react";
127
128
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
128
129
 
129
130
  // node_modules/.pnpm/@base-ui+react@1.8.0_@date-fns+tz@1.5.0_@types+react@19.3.0_date-fns@4.4.0_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@base-ui/react/scroll-area/index.parts.mjs
@@ -1089,45 +1090,7 @@ var ScrollAreaCorner = /* @__PURE__ */ React9.forwardRef(function ScrollAreaCorn
1089
1090
  });
1090
1091
  if (process.env.NODE_ENV !== "production") ScrollAreaCorner.displayName = "ScrollAreaCorner";
1091
1092
 
1092
- // web/app/dist/server/assets/settings-dialog-C8U1VX75.js
1093
- function RowSurface({ className, interactive, padding, tone, ...props }) {
1094
- return /* @__PURE__ */ jsx("div", {
1095
- className: cn(rowSurface({
1096
- interactive,
1097
- padding,
1098
- tone
1099
- }), className),
1100
- ...props
1101
- });
1102
- }
1103
- function ItemRow({ icon, title, subtitle, trailing, className, interactive = true, tone = "default" }) {
1104
- return /* @__PURE__ */ jsxs(RowSurface, {
1105
- tone,
1106
- padding: "md",
1107
- interactive,
1108
- className: cn("items-center gap-3", className),
1109
- children: [
1110
- icon ? /* @__PURE__ */ jsx("div", {
1111
- className: "flex size-8 shrink-0 items-center justify-center rounded-md border border-border/40 bg-background/60 text-foreground/70",
1112
- children: icon
1113
- }) : null,
1114
- /* @__PURE__ */ jsxs("div", {
1115
- className: "min-w-0 flex-1",
1116
- children: [/* @__PURE__ */ jsx("div", {
1117
- className: "truncate text-sm font-medium text-foreground",
1118
- children: title
1119
- }), subtitle ? /* @__PURE__ */ jsx("div", {
1120
- className: "mt-0.5 truncate text-xs text-muted-foreground",
1121
- children: subtitle
1122
- }) : null]
1123
- }),
1124
- trailing ? /* @__PURE__ */ jsx("div", {
1125
- className: "flex shrink-0 items-center gap-1.5",
1126
- children: trailing
1127
- }) : null
1128
- ]
1129
- });
1130
- }
1093
+ // web/app/dist/server/assets/settings-dialog-DgZ8Z5e4.js
1131
1094
  function isFieldInvalid(value, attemptedSave, required = true) {
1132
1095
  return attemptedSave && required && value.trim().length === 0;
1133
1096
  }
@@ -1188,6 +1151,32 @@ function TextCredentialField({ attemptedSave, icon: Icon, inputType = "text", la
1188
1151
  })] })]
1189
1152
  });
1190
1153
  }
1154
+ function SettingsRow({ children, className, description, icon, label, trailing }) {
1155
+ const control = trailing ?? children;
1156
+ return /* @__PURE__ */ jsxs(Field, {
1157
+ orientation: "horizontal",
1158
+ className: cn("items-center justify-between gap-6 rounded-xl border border-border/60 bg-card p-4 transition-colors", className),
1159
+ children: [/* @__PURE__ */ jsxs("div", {
1160
+ className: "flex min-w-0 flex-1 items-start gap-3",
1161
+ children: [icon ? /* @__PURE__ */ jsx("div", {
1162
+ className: "flex size-8 shrink-0 items-center justify-center rounded-md border border-border/40 bg-background/60 text-foreground/70",
1163
+ children: icon
1164
+ }) : null, /* @__PURE__ */ jsxs("div", {
1165
+ className: "min-w-0 flex-1",
1166
+ children: [/* @__PURE__ */ jsx(FieldLabel, {
1167
+ className: "text-sm font-medium text-foreground",
1168
+ children: label
1169
+ }), description ? /* @__PURE__ */ jsx(FieldDescription, {
1170
+ className: "mt-0.5 text-xs text-muted-foreground leading-normal",
1171
+ children: description
1172
+ }) : null]
1173
+ })]
1174
+ }), control ? /* @__PURE__ */ jsx("div", {
1175
+ className: "shrink-0",
1176
+ children: control
1177
+ }) : null]
1178
+ });
1179
+ }
1191
1180
  var STATUS_COPY = {
1192
1181
  unconfigured: "Add a key below to turn this on.",
1193
1182
  unverified: "Checking the key\u2026",
@@ -1203,9 +1192,11 @@ function ComposerIntentSection({ enabled, keySource, status, onClearKey, onEnabl
1203
1192
  const [draftKey, setDraftKey] = useState2("");
1204
1193
  const [showKey, setShowKey] = useState2(false);
1205
1194
  const [attemptedSave, setAttemptedSave] = useState2(false);
1195
+ const [saveError, setSaveError] = useState2(null);
1206
1196
  const [busy, setBusy] = useState2(false);
1207
1197
  const save = useCallback(async () => {
1208
1198
  setAttemptedSave(true);
1199
+ setSaveError(null);
1209
1200
  if (!draftKey.trim() || !onSaveKey) return;
1210
1201
  setBusy(true);
1211
1202
  try {
@@ -1213,6 +1204,8 @@ function ComposerIntentSection({ enabled, keySource, status, onClearKey, onEnabl
1213
1204
  setDraftKey("");
1214
1205
  setShowKey(false);
1215
1206
  setAttemptedSave(false);
1207
+ } catch (error) {
1208
+ setSaveError(error instanceof Error ? error.message : "Failed to save key");
1216
1209
  } finally {
1217
1210
  setBusy(false);
1218
1211
  }
@@ -1220,9 +1213,12 @@ function ComposerIntentSection({ enabled, keySource, status, onClearKey, onEnabl
1220
1213
  const clear = useCallback(async () => {
1221
1214
  if (!onClearKey) return;
1222
1215
  setBusy(true);
1216
+ setSaveError(null);
1223
1217
  try {
1224
1218
  await onClearKey();
1225
1219
  setDraftKey("");
1220
+ } catch (error) {
1221
+ setSaveError(error instanceof Error ? error.message : "Failed to remove key");
1226
1222
  } finally {
1227
1223
  setBusy(false);
1228
1224
  }
@@ -1230,9 +1226,9 @@ function ComposerIntentSection({ enabled, keySource, status, onClearKey, onEnabl
1230
1226
  const unavailable = status === "unconfigured" || status === "error";
1231
1227
  return /* @__PURE__ */ jsxs("div", {
1232
1228
  className: "flex flex-col gap-3",
1233
- children: [/* @__PURE__ */ jsx(ItemRow, {
1234
- title: "Describe a command",
1235
- subtitle: `Recognise when a message is really asking for a built-in command, like "compact this" or "show the shortcuts". Messages you send are shared with TypeSafe for classification only when this is on. ${STATUS_COPY[status]}`,
1229
+ children: [/* @__PURE__ */ jsx(SettingsRow, {
1230
+ label: "Describe a command",
1231
+ description: `Recognise when a message is really asking for a built-in command, like "compact this" or "show the shortcuts". Messages you send are shared with TypeSafe for classification only when this is on. ${STATUS_COPY[status]}`,
1236
1232
  trailing: /* @__PURE__ */ jsx(Switch$1, {
1237
1233
  "aria-label": "Describe a command",
1238
1234
  checked: enabled,
@@ -1245,12 +1241,19 @@ function ComposerIntentSection({ enabled, keySource, status, onClearKey, onEnabl
1245
1241
  /* @__PURE__ */ jsx(SecretCredentialField, {
1246
1242
  attemptedSave,
1247
1243
  label: "TypeSafe API key",
1248
- onChange: setDraftKey,
1244
+ onChange: (val) => {
1245
+ setDraftKey(val);
1246
+ if (saveError) setSaveError(null);
1247
+ },
1249
1248
  onToggleVisibility: () => setShowKey((current) => !current),
1250
1249
  placeholder: "Paste your TypeSafe API key",
1251
1250
  showPassword: showKey,
1252
1251
  value: draftKey
1253
1252
  }),
1253
+ saveError ? /* @__PURE__ */ jsx("p", {
1254
+ className: "text-xs text-destructive",
1255
+ children: saveError
1256
+ }) : null,
1254
1257
  /* @__PURE__ */ jsx("p", {
1255
1258
  className: "text-xs text-muted-foreground",
1256
1259
  children: KEY_SOURCE_COPY[keySource]
@@ -1259,14 +1262,14 @@ function ComposerIntentSection({ enabled, keySource, status, onClearKey, onEnabl
1259
1262
  className: "flex items-center gap-2",
1260
1263
  children: [/* @__PURE__ */ jsx(Button$1, {
1261
1264
  type: "button",
1262
- size: "sm",
1265
+ size: "compact",
1263
1266
  disabled: busy || !draftKey.trim(),
1264
1267
  onClick: () => void save(),
1265
1268
  children: "Save key"
1266
1269
  }), keySource === "settings" ? /* @__PURE__ */ jsx(Button$1, {
1267
1270
  type: "button",
1268
1271
  variant: "outline",
1269
- size: "sm",
1272
+ size: "compact",
1270
1273
  disabled: busy,
1271
1274
  onClick: () => void clear(),
1272
1275
  children: "Remove key"
@@ -1276,6 +1279,44 @@ function ComposerIntentSection({ enabled, keySource, status, onClearKey, onEnabl
1276
1279
  })]
1277
1280
  });
1278
1281
  }
1282
+ function RowSurface({ className, interactive, padding, tone, ...props }) {
1283
+ return /* @__PURE__ */ jsx("div", {
1284
+ className: cn(rowSurface({
1285
+ interactive,
1286
+ padding,
1287
+ tone
1288
+ }), className),
1289
+ ...props
1290
+ });
1291
+ }
1292
+ function ItemRow({ icon, title, subtitle, trailing, className, interactive = true, tone = "default", truncateSubtitle = true, truncateTitle = true }) {
1293
+ return /* @__PURE__ */ jsxs(RowSurface, {
1294
+ tone,
1295
+ padding: "md",
1296
+ interactive,
1297
+ className: cn("items-center gap-3", className),
1298
+ children: [
1299
+ icon ? /* @__PURE__ */ jsx("div", {
1300
+ className: "flex size-8 shrink-0 items-center justify-center rounded-md border border-border/40 bg-background/60 text-foreground/70",
1301
+ children: icon
1302
+ }) : null,
1303
+ /* @__PURE__ */ jsxs("div", {
1304
+ className: "min-w-0 flex-1",
1305
+ children: [/* @__PURE__ */ jsx("div", {
1306
+ className: cn("text-sm font-medium text-foreground", truncateTitle && "truncate"),
1307
+ children: title
1308
+ }), subtitle ? /* @__PURE__ */ jsx("div", {
1309
+ className: cn("mt-0.5 text-xs text-muted-foreground", truncateSubtitle ? "truncate" : "leading-normal"),
1310
+ children: subtitle
1311
+ }) : null]
1312
+ }),
1313
+ trailing ? /* @__PURE__ */ jsx("div", {
1314
+ className: "flex shrink-0 items-center gap-1.5",
1315
+ children: trailing
1316
+ }) : null
1317
+ ]
1318
+ });
1319
+ }
1279
1320
  function SettingsPane({ actions, children, description, title }) {
1280
1321
  return /* @__PURE__ */ jsxs("div", {
1281
1322
  className: "flex flex-col gap-4",
@@ -1304,7 +1345,7 @@ function SettingsCommitActions({ dirty, disabled, onRevert, onSave, saving }) {
1304
1345
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [dirty ? /* @__PURE__ */ jsx(Button$1, {
1305
1346
  type: "button",
1306
1347
  variant: "ghost",
1307
- size: "icon-sm",
1348
+ size: "icon-compact",
1308
1349
  className: "text-muted-foreground transition-transform active:scale-[0.96]",
1309
1350
  disabled: disabled || saving,
1310
1351
  onClick: onRevert,
@@ -1313,7 +1354,7 @@ function SettingsCommitActions({ dirty, disabled, onRevert, onSave, saving }) {
1313
1354
  }) : null, /* @__PURE__ */ jsxs(Button$1, {
1314
1355
  type: "button",
1315
1356
  variant: "outline",
1316
- size: "sm",
1357
+ size: "compact",
1317
1358
  className: cn(COMPACT_ACTION_BUTTON_CLASS, "transition-transform active:scale-[0.96]", dirty && "border-primary/30 text-primary"),
1318
1359
  disabled: !dirty || disabled || saving,
1319
1360
  onClick: onSave,
@@ -1549,7 +1590,7 @@ function ProviderOAuthSignIn({ onConfigured, onOAuthLogin, provider }) {
1549
1590
  }) : null,
1550
1591
  authUrl ? /* @__PURE__ */ jsxs(Button$1, {
1551
1592
  type: "button",
1552
- size: "sm",
1593
+ size: "compact",
1553
1594
  onClick: () => {
1554
1595
  window.open(authUrl, "_blank", "noopener,noreferrer");
1555
1596
  },
@@ -1575,7 +1616,7 @@ function ProviderOAuthSignIn({ onConfigured, onOAuthLogin, provider }) {
1575
1616
  className: "flex justify-end",
1576
1617
  children: /* @__PURE__ */ jsxs(Button$1, {
1577
1618
  type: "button",
1578
- size: "sm",
1619
+ size: "compact",
1579
1620
  disabled: busy || !prompt.allowEmpty && !promptAnswer.trim(),
1580
1621
  onClick: () => {
1581
1622
  submitPrompt();
@@ -1590,7 +1631,7 @@ function ProviderOAuthSignIn({ onConfigured, onOAuthLogin, provider }) {
1590
1631
  children: /* @__PURE__ */ jsx(Button$1, {
1591
1632
  type: "button",
1592
1633
  variant: "ghost",
1593
- size: "sm",
1634
+ size: "compact",
1594
1635
  disabled: busy,
1595
1636
  onClick: () => {
1596
1637
  cancel();
@@ -1614,7 +1655,7 @@ function ProviderOAuthSignIn({ onConfigured, onOAuthLogin, provider }) {
1614
1655
  className: "flex justify-end",
1615
1656
  children: /* @__PURE__ */ jsxs(Button$1, {
1616
1657
  type: "button",
1617
- size: "sm",
1658
+ size: "compact",
1618
1659
  disabled: busy || !canStart,
1619
1660
  onClick: () => {
1620
1661
  start();
@@ -1757,7 +1798,7 @@ function McpConnectionsSection({ connections, isLoading, isPending, onOAuth, onR
1757
1798
  description: "Connect built-in and user MCP servers. Tokens stay on the server; this list only shows status and environment-variable names.",
1758
1799
  actions: /* @__PURE__ */ jsxs(Button$1, {
1759
1800
  type: "button",
1760
- size: "sm",
1801
+ size: "compact",
1761
1802
  variant: "outline",
1762
1803
  disabled: isPending || adding,
1763
1804
  onClick: () => setAdding(true),
@@ -1843,13 +1884,13 @@ function McpConnectionsSection({ connections, isLoading, isPending, onOAuth, onR
1843
1884
  className: "flex justify-end gap-2",
1844
1885
  children: [/* @__PURE__ */ jsx(Button$1, {
1845
1886
  type: "button",
1846
- size: "sm",
1887
+ size: "compact",
1847
1888
  variant: "ghost",
1848
1889
  onClick: resetAddForm,
1849
1890
  children: "Cancel"
1850
1891
  }), /* @__PURE__ */ jsxs(Button$1, {
1851
1892
  type: "button",
1852
- size: "sm",
1893
+ size: "compact",
1853
1894
  disabled: isPending || !name.trim(),
1854
1895
  onClick: () => void handleAdd(),
1855
1896
  children: [isPending ? /* @__PURE__ */ jsx(Spinner, { "data-icon": "inline-start" }) : null, "Save"]
@@ -1874,7 +1915,7 @@ function McpConnectionsSection({ connections, isLoading, isPending, onOAuth, onR
1874
1915
  className: "flex items-center gap-1.5",
1875
1916
  children: [connection.usesOAuth && connection.status !== "needs_auth" ? /* @__PURE__ */ jsx(Button$1, {
1876
1917
  type: "button",
1877
- size: "sm",
1918
+ size: "compact",
1878
1919
  variant: "ghost",
1879
1920
  disabled: isPending || !onOAuth,
1880
1921
  onClick: () => {
@@ -1883,7 +1924,7 @@ function McpConnectionsSection({ connections, isLoading, isPending, onOAuth, onR
1883
1924
  children: "Sign out"
1884
1925
  }) : null, connection.source === "user" ? confirmRemove === connection.name ? /* @__PURE__ */ jsx(Button$1, {
1885
1926
  type: "button",
1886
- size: "sm",
1927
+ size: "compact",
1887
1928
  variant: "destructive",
1888
1929
  disabled: isPending,
1889
1930
  onClick: () => {
@@ -1892,7 +1933,7 @@ function McpConnectionsSection({ connections, isLoading, isPending, onOAuth, onR
1892
1933
  children: "Confirm remove"
1893
1934
  }) : /* @__PURE__ */ jsx(Button$1, {
1894
1935
  type: "button",
1895
- size: "sm",
1936
+ size: "compact",
1896
1937
  variant: "ghost",
1897
1938
  disabled: isPending || !onRemove,
1898
1939
  "aria-label": `Remove ${connection.name}`,
@@ -2070,7 +2111,7 @@ function AddModelsDialog({ configuredProviderIds, discoverableProviderIds, disco
2070
2111
  return /* @__PURE__ */ jsxs(Button$1, {
2071
2112
  type: "button",
2072
2113
  variant: "outline",
2073
- size: "sm",
2114
+ size: "compact",
2074
2115
  disabled: discoveringProviderId !== null,
2075
2116
  onClick: () => {
2076
2117
  onDiscoverProvider(providerId);
@@ -2158,12 +2199,12 @@ function AddModelsDialog({ configuredProviderIds, discoverableProviderIds, disco
2158
2199
  children: [/* @__PURE__ */ jsx(Button$1, {
2159
2200
  type: "button",
2160
2201
  variant: "ghost",
2161
- size: "sm",
2202
+ size: "compact",
2162
2203
  onClick: () => onOpenChange(false),
2163
2204
  children: "Cancel"
2164
2205
  }), /* @__PURE__ */ jsxs(Button$1, {
2165
2206
  type: "button",
2166
- size: "sm",
2207
+ size: "compact",
2167
2208
  disabled: selectedKeys.size === 0,
2168
2209
  onClick: confirmAdd,
2169
2210
  children: ["Add ", selectedKeys.size > 0 ? /* @__PURE__ */ jsxs("span", {
@@ -2286,7 +2327,7 @@ function ModelDefaultsSection({ draft, discoveringProviderId, modelDirty, modelF
2286
2327
  }), /* @__PURE__ */ jsxs(Button$1, {
2287
2328
  type: "button",
2288
2329
  variant: "outline",
2289
- size: "sm",
2330
+ size: "compact",
2290
2331
  disabled,
2291
2332
  onClick: openAddDialog,
2292
2333
  children: [/* @__PURE__ */ jsx(Plus, { "data-icon": "inline-start" }), "Add models"]
@@ -2303,7 +2344,7 @@ function ModelDefaultsSection({ draft, discoveringProviderId, modelDirty, modelF
2303
2344
  }), !normalizedFilter ? /* @__PURE__ */ jsxs(Button$1, {
2304
2345
  type: "button",
2305
2346
  variant: "outline",
2306
- size: "sm",
2347
+ size: "compact",
2307
2348
  disabled,
2308
2349
  onClick: openAddDialog,
2309
2350
  children: [/* @__PURE__ */ jsx(Plus, { "data-icon": "inline-start" }), "Add models"]
@@ -2325,7 +2366,7 @@ function ModelDefaultsSection({ draft, discoveringProviderId, modelDirty, modelF
2325
2366
  }) : onSetDefaultModel ? /* @__PURE__ */ jsxs(Button$1, {
2326
2367
  type: "button",
2327
2368
  variant: "ghost",
2328
- size: "sm",
2369
+ size: "compact",
2329
2370
  className: cn(HIT_AREA_EXPAND_DENSE_CLASS, "h-7 px-2 text-xs text-muted-foreground transition-[background-color,color,transform] duration-150 active:scale-[0.96]"),
2330
2371
  disabled,
2331
2372
  "aria-label": `Set ${model.name} as default`,
@@ -2334,7 +2375,7 @@ function ModelDefaultsSection({ draft, discoveringProviderId, modelDirty, modelF
2334
2375
  }) : null, /* @__PURE__ */ jsxs(Button$1, {
2335
2376
  type: "button",
2336
2377
  variant: "ghost",
2337
- size: "sm",
2378
+ size: "compact",
2338
2379
  className: cn(HIT_AREA_EXPAND_DENSE_CLASS, "h-7 px-2 text-xs text-muted-foreground transition-[background-color,color,transform] duration-150 hover:text-destructive active:scale-[0.96]"),
2339
2380
  disabled,
2340
2381
  "aria-label": `Remove ${model.name}`,
@@ -2691,7 +2732,7 @@ function AddProviderPickerPanel({ addPickerQuery, credentialProvidersLength, fil
2691
2732
  children: [/* @__PURE__ */ jsx(Button$1, {
2692
2733
  type: "button",
2693
2734
  variant: "ghost",
2694
- size: "icon-sm",
2735
+ size: "icon-compact",
2695
2736
  "aria-label": "Back to providers",
2696
2737
  onClick: onClose,
2697
2738
  children: /* @__PURE__ */ jsx(ArrowLeft, {})
@@ -2754,7 +2795,7 @@ function AddProviderOAuthPanel({ onBack, onConfigured, onOAuthLogin, provider })
2754
2795
  children: [/* @__PURE__ */ jsx(Button$1, {
2755
2796
  type: "button",
2756
2797
  variant: "ghost",
2757
- size: "icon-sm",
2798
+ size: "icon-compact",
2758
2799
  "aria-label": "Back to provider list",
2759
2800
  onClick: onBack,
2760
2801
  children: /* @__PURE__ */ jsx(ArrowLeft, {})
@@ -2791,7 +2832,7 @@ function AddProviderEditorPanel({ provider, api, apiKey, baseUrl, modelId, model
2791
2832
  children: [/* @__PURE__ */ jsx(Button$1, {
2792
2833
  type: "button",
2793
2834
  variant: "ghost",
2794
- size: "icon-sm",
2835
+ size: "icon-compact",
2795
2836
  "aria-label": "Back to provider list",
2796
2837
  onClick: onBack,
2797
2838
  children: /* @__PURE__ */ jsx(ArrowLeft, {})
@@ -2838,12 +2879,12 @@ function AddProviderEditorPanel({ provider, api, apiKey, baseUrl, modelId, model
2838
2879
  children: [/* @__PURE__ */ jsx(Button$1, {
2839
2880
  type: "button",
2840
2881
  variant: "ghost",
2841
- size: "sm",
2882
+ size: "compact",
2842
2883
  onClick: onCancel,
2843
2884
  children: "Cancel"
2844
2885
  }), /* @__PURE__ */ jsxs(Button$1, {
2845
2886
  type: "button",
2846
- size: "sm",
2887
+ size: "compact",
2847
2888
  disabled: isPending || !canSave,
2848
2889
  onClick: onSave,
2849
2890
  children: [isPending ? /* @__PURE__ */ jsx(Spinner, { "data-icon": "inline-start" }) : null, "Save"]
@@ -2939,7 +2980,7 @@ function ActiveProviderList({ providers, editingProvider, form, operation, actio
2939
2980
  children: [/* @__PURE__ */ jsxs(Button$1, {
2940
2981
  type: "button",
2941
2982
  variant: "ghost",
2942
- size: "sm",
2983
+ size: "compact",
2943
2984
  className: cn(HIT_AREA_EXPAND_DENSE_CLASS, "h-7 px-2 text-xs text-muted-foreground transition-[background-color,color,transform] duration-150 hover:text-destructive active:scale-[0.96]"),
2944
2985
  disabled: isPending || !canRemove,
2945
2986
  "aria-label": `Remove ${provider.name}`,
@@ -2948,7 +2989,7 @@ function ActiveProviderList({ providers, editingProvider, form, operation, actio
2948
2989
  }), /* @__PURE__ */ jsxs(Button$1, {
2949
2990
  type: "button",
2950
2991
  variant: "ghost",
2951
- size: "sm",
2992
+ size: "compact",
2952
2993
  className: cn(HIT_AREA_EXPAND_DENSE_CLASS, "h-7 px-2 text-xs transition-[background-color,transform] duration-150 active:scale-[0.96]"),
2953
2994
  disabled: isPending,
2954
2995
  onClick: () => {
@@ -3001,7 +3042,7 @@ function ActiveProviderList({ providers, editingProvider, form, operation, actio
3001
3042
  className: "flex items-center justify-end",
3002
3043
  children: /* @__PURE__ */ jsxs(Button$1, {
3003
3044
  type: "button",
3004
- size: "sm",
3045
+ size: "compact",
3005
3046
  disabled: isPending || !canSave,
3006
3047
  onClick: () => onSave(provider.id),
3007
3048
  children: [isPending ? /* @__PURE__ */ jsx(Spinner, { "data-icon": "inline-start" }) : null, "Save"]
@@ -3111,7 +3152,7 @@ function ProviderCredentialsSection({ isLoading, isPending, onOAuthLogin, onRemo
3111
3152
  }), /* @__PURE__ */ jsxs(Button$1, {
3112
3153
  type: "button",
3113
3154
  variant: "outline",
3114
- size: "sm",
3155
+ size: "compact",
3115
3156
  disabled: isLoading || credentialProviders.length === 0,
3116
3157
  onClick: openAddPicker,
3117
3158
  children: [/* @__PURE__ */ jsx(Plus, { "data-icon": "inline-start" }), "Add provider"]
@@ -3127,7 +3168,7 @@ function ProviderCredentialsSection({ isLoading, isPending, onOAuthLogin, onRemo
3127
3168
  }), /* @__PURE__ */ jsxs(Button$1, {
3128
3169
  type: "button",
3129
3170
  variant: "outline",
3130
- size: "sm",
3171
+ size: "compact",
3131
3172
  disabled: credentialProviders.length === 0,
3132
3173
  onClick: openAddPicker,
3133
3174
  children: [/* @__PURE__ */ jsx(Plus, { "data-icon": "inline-start" }), "Add provider"]
@@ -3572,7 +3613,7 @@ function CatalogValueList({ addLabel, catalog, onChange, placeholder, values })
3572
3613
  trailing: /* @__PURE__ */ jsx(Button$1, {
3573
3614
  type: "button",
3574
3615
  variant: "ghost",
3575
- size: "icon-xs",
3616
+ size: "icon-compact",
3576
3617
  "aria-label": `Remove ${value}`,
3577
3618
  onClick: () => onChange(values.filter((entry) => entry !== value)),
3578
3619
  children: /* @__PURE__ */ jsx(Trash, {})
@@ -3772,7 +3813,7 @@ function SandboxProviderSection({ isLoading, isPending, onUpdateProvider, provid
3772
3813
  trailing: /* @__PURE__ */ jsx(Button$1, {
3773
3814
  type: "button",
3774
3815
  variant: "ghost",
3775
- size: "sm",
3816
+ size: "compact",
3776
3817
  className: cn(HIT_AREA_EXPAND_DENSE_CLASS, "h-7 px-2 text-xs transition-[background-color,transform] duration-150 active:scale-[0.96]"),
3777
3818
  onClick: () => {
3778
3819
  if (editing) {
@@ -3821,7 +3862,7 @@ function SandboxProviderSection({ isLoading, isPending, onUpdateProvider, provid
3821
3862
  className: "flex items-center justify-end",
3822
3863
  children: /* @__PURE__ */ jsxs(Button$1, {
3823
3864
  type: "button",
3824
- size: "sm",
3865
+ size: "compact",
3825
3866
  disabled: isPending || !canSave,
3826
3867
  onClick: () => void handleSave(),
3827
3868
  children: [isPending ? /* @__PURE__ */ jsx(Spinner, { "data-icon": "inline-start" }) : null, "Save"]
@@ -4018,48 +4059,78 @@ function BreadcrumbSeparator({ children, className, ...props }) {
4018
4059
  children: children ?? /* @__PURE__ */ jsx(ChevronRight, {})
4019
4060
  });
4020
4061
  }
4021
- function ScrollArea$1({ className, children, ...props }) {
4022
- return /* @__PURE__ */ jsxs(index_parts_exports.Root, {
4023
- "data-slot": "scroll-area",
4024
- className: cn("relative", className),
4025
- ...props,
4026
- children: [
4027
- /* @__PURE__ */ jsx(index_parts_exports.Viewport, {
4062
+ function useTouchPrimary() {
4063
+ const [isTouchPrimary, setIsTouchPrimary] = useState2(false);
4064
+ useEffect2(() => {
4065
+ if (typeof window === "undefined") return;
4066
+ const controller = new AbortController();
4067
+ const { signal } = controller;
4068
+ const handleTouch = () => {
4069
+ const hasTouch = "ontouchstart" in window || navigator.maxTouchPoints > 0;
4070
+ const prefersTouch = window.matchMedia("(pointer: coarse)").matches;
4071
+ setIsTouchPrimary(hasTouch && prefersTouch);
4072
+ };
4073
+ window.matchMedia("(pointer: coarse)").addEventListener("change", handleTouch, { signal });
4074
+ window.addEventListener("pointerdown", handleTouch, { signal });
4075
+ handleTouch();
4076
+ return () => controller.abort();
4077
+ }, []);
4078
+ return isTouchPrimary;
4079
+ }
4080
+ var ScrollAreaContext = createContext4(false);
4081
+ var ScrollArea$1 = forwardRef7(({ className, children, viewportClassName, orientation: orientation2 = "vertical", ...props }, ref) => {
4082
+ const isTouch = useTouchPrimary();
4083
+ return /* @__PURE__ */ jsx(ScrollAreaContext.Provider, {
4084
+ value: isTouch,
4085
+ children: isTouch ? /* @__PURE__ */ jsx("div", {
4086
+ ref,
4087
+ role: "group",
4088
+ "data-slot": "scroll-area",
4089
+ "aria-roledescription": "scroll area",
4090
+ className: cn("relative overflow-hidden", className),
4091
+ ...props,
4092
+ children: /* @__PURE__ */ jsx("div", {
4028
4093
  "data-slot": "scroll-area-viewport",
4029
- className: "size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",
4094
+ className: cn("size-full rounded-[inherit]", orientation2 === "vertical" && "overflow-y-auto", orientation2 === "horizontal" && "overflow-x-auto", orientation2 === "both" && "overflow-auto", viewportClassName),
4095
+ tabIndex: 0,
4030
4096
  children
4031
- }),
4032
- /* @__PURE__ */ jsx(ScrollBar, {}),
4033
- /* @__PURE__ */ jsx(index_parts_exports.Corner, {})
4034
- ]
4097
+ })
4098
+ }) : /* @__PURE__ */ jsxs(index_parts_exports.Root, {
4099
+ ref,
4100
+ "data-slot": "scroll-area",
4101
+ className: cn("relative overflow-hidden", className),
4102
+ ...props,
4103
+ children: [
4104
+ /* @__PURE__ */ jsx(index_parts_exports.Viewport, {
4105
+ "data-slot": "scroll-area-viewport",
4106
+ className: cn("size-full rounded-[inherit]", viewportClassName),
4107
+ children: /* @__PURE__ */ jsx(index_parts_exports.Content, { children })
4108
+ }),
4109
+ orientation2 !== "horizontal" && /* @__PURE__ */ jsx(ScrollBar, { orientation: "vertical" }),
4110
+ orientation2 !== "vertical" && /* @__PURE__ */ jsx(ScrollBar, { orientation: "horizontal" }),
4111
+ orientation2 === "both" && /* @__PURE__ */ jsx(index_parts_exports.Corner, {})
4112
+ ]
4113
+ })
4035
4114
  });
4036
- }
4037
- function ScrollBar({ className, orientation: orientation2 = "vertical", ...props }) {
4115
+ });
4116
+ ScrollArea$1.displayName = "ScrollArea";
4117
+ var ScrollBar = forwardRef7(({ className, orientation: orientation2 = "vertical", ...props }, ref) => {
4118
+ const isTouch = useContext4(ScrollAreaContext);
4119
+ const shape = useShape();
4120
+ if (isTouch) return null;
4038
4121
  return /* @__PURE__ */ jsx(index_parts_exports.Scrollbar, {
4039
- "data-slot": "scroll-area-scrollbar",
4040
- "data-orientation": orientation2,
4122
+ ref,
4041
4123
  orientation: orientation2,
4042
- className: cn("flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent", className),
4124
+ "data-slot": "scroll-area-scrollbar",
4125
+ className: cn("group/scrollbar absolute z-20 flex touch-none select-none", "opacity-0 transition-opacity duration-120 ease-out delay-160", "data-[hovering]:duration-160 data-[scrolling]:duration-160", "data-[hovering]:opacity-100 data-[scrolling]:opacity-100", "data-[hovering]:delay-0 data-[scrolling]:delay-0", orientation2 === "vertical" && "top-0 right-0 h-full w-2.5", orientation2 === "horizontal" && "bottom-0 left-0 h-2.5 w-full flex-col", className),
4043
4126
  ...props,
4044
4127
  children: /* @__PURE__ */ jsx(index_parts_exports.Thumb, {
4045
4128
  "data-slot": "scroll-area-thumb",
4046
- className: "relative flex-1 rounded-full bg-border"
4129
+ className: cn("relative bg-[rgb(var(--overlay)/0.08)] transition-[background-color,width,height] duration-160 ease-in-out", "group-hover/scrollbar:bg-[rgb(var(--overlay)/0.12)] active:!bg-[rgb(var(--overlay)/0.16)]", shape.bg, orientation2 === "vertical" && "mx-auto my-1 w-1 -translate-x-0.5 h-[var(--scroll-area-thumb-height)] group-hover/scrollbar:w-1.5", orientation2 === "horizontal" && "my-auto mx-1 h-1 -translate-y-0.5 w-[var(--scroll-area-thumb-width)] group-hover/scrollbar:h-1.5")
4047
4130
  })
4048
4131
  });
4049
- }
4050
- function PreferenceRow({ children, description, label }) {
4051
- return /* @__PURE__ */ jsxs(Field, {
4052
- orientation: "horizontal",
4053
- className: "items-center justify-between gap-6 rounded-xl border p-4",
4054
- children: [/* @__PURE__ */ jsxs("div", {
4055
- className: "min-w-0",
4056
- children: [/* @__PURE__ */ jsx(FieldLabel, { children: label }), /* @__PURE__ */ jsx(FieldDescription, { children: description })]
4057
- }), /* @__PURE__ */ jsx("div", {
4058
- className: "shrink-0",
4059
- children
4060
- })]
4061
- });
4062
- }
4132
+ });
4133
+ ScrollBar.displayName = "ScrollBar";
4063
4134
  function useSettingsForm() {
4064
4135
  const { isLoadingMcp, isLoadingProviders, isUpdatingMcp, isUpdatingProvider, mcpConnections = [], modelCatalog, onDiscoverModels, onMcpOAuth, onOAuthLogin, onRemoveMcp, onRemoveProvider, onThemePreferenceChange, onUpdateMcp, onUpdateProvider, providers = [], saveSettings, settings, settingsLoading, themePreference } = useSettingsActionsContext();
4065
4136
  const { models, resources } = useChatPanelDataContext();
@@ -4259,7 +4330,7 @@ function SettingsDialogPaneContent({ activeTab, composerIntent, form, onComposer
4259
4330
  onThemePreferenceChange,
4260
4331
  themePreference
4261
4332
  }),
4262
- /* @__PURE__ */ jsx(PreferenceRow, {
4333
+ /* @__PURE__ */ jsx(SettingsRow, {
4263
4334
  label: "Density",
4264
4335
  description: "Adjust spacing across chat and panels.",
4265
4336
  children: /* @__PURE__ */ jsx(Select$1, {
@@ -4275,7 +4346,7 @@ function SettingsDialogPaneContent({ activeTab, composerIntent, form, onComposer
4275
4346
  }]
4276
4347
  })
4277
4348
  }),
4278
- /* @__PURE__ */ jsx(PreferenceRow, {
4349
+ /* @__PURE__ */ jsx(SettingsRow, {
4279
4350
  label: "Motion",
4280
4351
  description: "Respect the system setting or reduce UI motion.",
4281
4352
  children: /* @__PURE__ */ jsx(Select$1, {
@@ -4303,7 +4374,7 @@ function SettingsDialogPaneContent({ activeTab, composerIntent, form, onComposer
4303
4374
  className: "text-sm text-muted-foreground",
4304
4375
  children: "Control transcript behavior."
4305
4376
  })] }),
4306
- /* @__PURE__ */ jsx(PreferenceRow, {
4377
+ /* @__PURE__ */ jsx(SettingsRow, {
4307
4378
  label: "Streaming transcript",
4308
4379
  description: "Follow new output or preserve the reading position.",
4309
4380
  children: /* @__PURE__ */ jsx(Select$1, {
@@ -4402,7 +4473,7 @@ function SettingsDialogPaneContent({ activeTab, composerIntent, form, onComposer
4402
4473
  className: "text-sm text-muted-foreground",
4403
4474
  children: "Set local conversation preferences. Provider and workspace configuration remains Fleet Prime-owned."
4404
4475
  })] }),
4405
- /* @__PURE__ */ jsx(PreferenceRow, {
4476
+ /* @__PURE__ */ jsx(SettingsRow, {
4406
4477
  label: "Confirm session deletion",
4407
4478
  description: "Require confirmation before deleting a saved conversation.",
4408
4479
  children: /* @__PURE__ */ jsx(Switch$1, {