@liberseek/boft-cli-win32-arm64 0.6.2 → 0.6.3

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.
@@ -15,7 +15,10 @@
15
15
  "opencode",
16
16
  "grok",
17
17
  "omp",
18
- "antigravity"
18
+ "antigravity",
19
+ "hermes",
20
+ "muse",
21
+ "kiro-cli"
19
22
  ];
20
23
  var DEFAULT_RENDERER_AGENTS = KNOWN_RENDERER_AGENTS;
21
24
  function defaultIdFactory(sequence) {
@@ -131,6 +134,9 @@
131
134
  if (agent === "grok" && model) state.grokModel = model;
132
135
  if (agent === "omp" && model) state.ompModel = model;
133
136
  if (agent === "antigravity" && model) state.antigravityModel = model;
137
+ if (agent === "hermes" && model) state.hermesModel = model;
138
+ if (agent === "muse" && model) state.museModel = model;
139
+ if (agent === "kiro-cli" && model) state.kiroCliModel = model;
134
140
  if (agent === "pi" && thinkingOptionId) state.piThinkingOptionId = thinkingOptionId;
135
141
  else if (agent === "pi") delete state.piThinkingOptionId;
136
142
  if (agent === "claude-code" && thinkingOptionId) {
@@ -146,6 +152,12 @@
146
152
  if (agent === "antigravity" && thinkingOptionId) {
147
153
  state.antigravityThinkingOptionId = thinkingOptionId;
148
154
  } else if (agent === "antigravity") delete state.antigravityThinkingOptionId;
155
+ if (agent === "muse" && thinkingOptionId) {
156
+ state.museThinkingOptionId = thinkingOptionId;
157
+ } else if (agent === "muse") delete state.museThinkingOptionId;
158
+ if (agent === "kiro-cli" && thinkingOptionId) {
159
+ state.kiroCliThinkingOptionId = thinkingOptionId;
160
+ } else if (agent === "kiro-cli") delete state.kiroCliThinkingOptionId;
149
161
  if (agent !== "codex") {
150
162
  const permissionModeByAgent = {};
151
163
  for (const candidate of [
@@ -155,7 +167,10 @@
155
167
  "opencode",
156
168
  "grok",
157
169
  "omp",
158
- "antigravity"
170
+ "antigravity",
171
+ "hermes",
172
+ "muse",
173
+ "kiro-cli"
159
174
  ]) {
160
175
  const current = state.permissionModeByAgent?.[candidate];
161
176
  if (candidate !== agent && current) permissionModeByAgent[candidate] = current;
@@ -177,7 +192,11 @@
177
192
  if (agent === "opencode") return state.openCodeModel;
178
193
  if (agent === "grok") return state.grokModel;
179
194
  if (agent === "omp") return state.ompModel;
180
- return state.antigravityModel;
195
+ if (agent === "hermes") return state.hermesModel;
196
+ if (agent === "antigravity") return state.antigravityModel;
197
+ if (agent === "muse") return state.museModel;
198
+ if (agent === "kiro-cli") return state.kiroCliModel;
199
+ return void 0;
181
200
  }
182
201
  thinkingOptionForAgent(composer, agent) {
183
202
  const state = this.#state(composer);
@@ -186,7 +205,10 @@
186
205
  if (agent === "grok") return state.grokThinkingOptionId;
187
206
  if (agent === "opencode") return state.openCodeThinkingOptionId;
188
207
  if (agent === "omp") return state.ompThinkingOptionId;
189
- return agent === "antigravity" ? state.antigravityThinkingOptionId : void 0;
208
+ if (agent === "antigravity") return state.antigravityThinkingOptionId;
209
+ if (agent === "muse") return state.museThinkingOptionId;
210
+ if (agent === "kiro-cli") return state.kiroCliThinkingOptionId;
211
+ return void 0;
190
212
  }
191
213
  permissionModeForAgent(composer, agent) {
192
214
  return this.#state(composer).permissionModeByAgent?.[agent];
@@ -207,7 +229,10 @@
207
229
  else if (agent === "opencode") state.openCodeModel = model;
208
230
  else if (agent === "grok") state.grokModel = model;
209
231
  else if (agent === "omp") state.ompModel = model;
210
- else state.antigravityModel = model;
232
+ else if (agent === "hermes") state.hermesModel = model;
233
+ else if (agent === "antigravity") state.antigravityModel = model;
234
+ else if (agent === "muse") state.museModel = model;
235
+ else if (agent === "kiro-cli") state.kiroCliModel = model;
211
236
  return state;
212
237
  }
213
238
  setPiConfiguration(composer, model, thinkingOptionId) {
@@ -244,6 +269,14 @@
244
269
  state.antigravityThinkingOptionId = thinkingOptionId;
245
270
  } else if (agent === "antigravity") {
246
271
  delete state.antigravityThinkingOptionId;
272
+ } else if (agent === "muse" && thinkingOptionId) {
273
+ state.museThinkingOptionId = thinkingOptionId;
274
+ } else if (agent === "muse") {
275
+ delete state.museThinkingOptionId;
276
+ } else if (agent === "kiro-cli" && thinkingOptionId) {
277
+ state.kiroCliThinkingOptionId = thinkingOptionId;
278
+ } else if (agent === "kiro-cli") {
279
+ delete state.kiroCliThinkingOptionId;
247
280
  }
248
281
  return state;
249
282
  }
@@ -14876,6 +14909,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
14876
14909
  reasoningOutputTokens: nonNegativeSafeIntegerSchema.optional(),
14877
14910
  totalTokens: nonNegativeSafeIntegerSchema.optional(),
14878
14911
  totalCostUsd: finiteNonNegativeNumberSchema.optional(),
14912
+ totalCredits: finiteNonNegativeNumberSchema.optional(),
14913
+ contextUsagePercent: finiteNonNegativeNumberSchema.optional(),
14879
14914
  cacheHitRatePercent: cacheHitRatePercentSchema.optional(),
14880
14915
  contextWindowTokens: nonNegativeSafeIntegerSchema.optional(),
14881
14916
  contextUsedTokens: nonNegativeSafeIntegerSchema.optional(),
@@ -15383,12 +15418,36 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
15383
15418
  });
15384
15419
 
15385
15420
  // ../shared-contracts/dist/harness-route.js
15421
+ var HARNESS_PLUGIN_ROUTE_PREFIX = "codexhost/plugin-v1@";
15422
+ var MAX_ROUTE_LENGTH = 4096;
15386
15423
  var harnessPluginRouteSchema = external_exports.object({
15387
15424
  harnessId: harnessPluginIdSchema,
15388
15425
  model: harnessModelRefSchema.optional(),
15389
15426
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15390
15427
  permissionModeId: harnessPermissionModeIdSchema.optional()
15391
15428
  }).strict();
15429
+ function encodeHarnessPluginRoute(route) {
15430
+ const parsed = harnessPluginRouteSchema.parse(route);
15431
+ const payload = [...JSON.stringify(parsed)].map((character) => character.charCodeAt(0).toString(16).padStart(2, "0")).join("");
15432
+ return `${HARNESS_PLUGIN_ROUTE_PREFIX}${payload}`;
15433
+ }
15434
+ function decodeHarnessPluginRoute(value) {
15435
+ if (typeof value !== "string" || !value.startsWith(HARNESS_PLUGIN_ROUTE_PREFIX))
15436
+ return null;
15437
+ const payload = value.slice(HARNESS_PLUGIN_ROUTE_PREFIX.length);
15438
+ if (value.length > MAX_ROUTE_LENGTH || !/^(?:[a-f0-9]{2})+$/u.test(payload)) {
15439
+ throw new Error("Invalid Harness plugin route");
15440
+ }
15441
+ try {
15442
+ const json2 = payload.replace(/[a-f0-9]{2}/gu, (byte) => String.fromCharCode(Number.parseInt(byte, 16)));
15443
+ const decoded = harnessPluginRouteSchema.parse(JSON.parse(json2));
15444
+ if (encodeHarnessPluginRoute(decoded) !== value)
15445
+ throw new Error("Noncanonical Harness plugin route");
15446
+ return decoded;
15447
+ } catch {
15448
+ throw new Error("Invalid Harness plugin route");
15449
+ }
15450
+ }
15392
15451
 
15393
15452
  // ../shared-contracts/dist/codex-accounts.js
15394
15453
  var accountIdSchema = external_exports.string().min(1).max(256).regex(/^[A-Za-z0-9._~-]+$/u);
@@ -15849,6 +15908,12 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
15849
15908
  // src/assets/antigravity-agent.svg
15850
15909
  var antigravity_agent_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="-2 -1 28 28"><path d="M21.751 22.607c1.34 1.005 3.35.335 1.508-1.508C17.73 15.74 18.904 1 12.037 1 5.17 1 6.342 15.74.815 21.1c-2.01 2.009.167 2.511 1.507 1.506 5.192-3.517 4.857-9.714 9.715-9.714 4.857 0 4.522 6.197 9.714 9.715z" fill="url(%23ag)"/><defs><linearGradient id="ag" x1="2" y1="12" x2="22" y2="12" gradientUnits="userSpaceOnUse"><stop stop-color="%234285F4"/><stop offset=".33" stop-color="%23EA4335"/><stop offset=".66" stop-color="%23FBBC04"/><stop offset="1" stop-color="%2334A853"/></linearGradient></defs></svg>%0A';
15851
15910
 
15911
+ // src/assets/hermes-agent.png
15912
+ var hermes_agent_default = "data:image/png;base64,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";
15913
+
15914
+ // src/assets/kiro-agent.svg
15915
+ var kiro_agent_default = 'data:image/svg+xml,<svg width="1200" height="1200" viewBox="0 0 1200 1200" fill="none" xmlns="http://www.w3.org/2000/svg">%0A<rect width="1200" height="1200" rx="260" fill="%239046FF"/>%0A<mask id="mask0_1106_4856" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="272" y="202" width="655" height="796">%0A<path d="M926.578 202.793H272.637V997.857H926.578V202.793Z" fill="white"/>%0A</mask>%0A<g mask="url(%23mask0_1106_4856)">%0A<path d="M398.554 818.914C316.315 1001.03 491.477 1046.74 620.672 940.156C658.687 1059.66 801.052 970.473 852.234 877.795C964.787 673.567 919.318 465.357 907.64 422.374C827.637 129.443 427.623 128.946 358.8 423.865C342.651 475.544 342.402 534.18 333.458 595.051C328.986 625.86 325.507 645.488 313.83 677.785C306.873 696.424 297.68 712.819 282.773 740.645C259.915 783.881 269.604 867.113 387.87 823.883L399.051 818.914H398.554Z" fill="white"/>%0A<path d="M636.123 549.353C603.328 549.353 598.359 510.097 598.359 486.742C598.359 465.623 602.086 448.977 609.293 438.293C615.504 428.852 624.697 424.131 636.123 424.131C647.555 424.131 657.492 428.852 664.447 438.541C672.398 449.474 676.623 466.12 676.623 486.742C676.623 525.998 661.471 549.353 636.375 549.353H636.123Z" fill="black"/>%0A<path d="M771.24 549.353C738.445 549.353 733.477 510.097 733.477 486.742C733.477 465.623 737.203 448.977 744.41 438.293C750.621 428.852 759.814 424.131 771.24 424.131C782.672 424.131 792.609 428.852 799.564 438.541C807.516 449.474 811.74 466.12 811.74 486.742C811.74 525.998 796.588 549.353 771.492 549.353H771.24Z" fill="black"/>%0A</g>%0A</svg>%0A';
15916
+
15852
15917
  // src/assets/omp-agent.svg
15853
15918
  var omp_agent_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">%0A <defs>%0A <linearGradient id="omp-gradient" x1="0" y1="0" x2="1" y2="1">%0A <stop offset="0" stop-color="%23ed4abf" />%0A <stop offset=".5" stop-color="%239b4dff" />%0A <stop offset="1" stop-color="%235ad8e6" />%0A </linearGradient>%0A </defs>%0A <path%0A fill="url(%23omp-gradient)"%0A transform="translate(-14.4 -20.2) scale(1.45)"%0A d="M14 16h36v8H40v32h-8V24h-6v22h-8V24h-4z"%0A />%0A</svg>%0A';
15854
15919
 
@@ -15864,7 +15929,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
15864
15929
  opencode: "OpenCode",
15865
15930
  grok: "Grok",
15866
15931
  omp: "Oh My Pi",
15867
- antigravity: "Antigravity CLI"
15932
+ antigravity: "Antigravity CLI",
15933
+ hermes: "Hermes",
15934
+ muse: "Meta Muse Code",
15935
+ "kiro-cli": "Kiro CLI"
15868
15936
  };
15869
15937
  var PI_PATHS = [
15870
15938
  {
@@ -15950,6 +16018,40 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
15950
16018
  image.style.flex = "none";
15951
16019
  return image;
15952
16020
  }
16021
+ if (agent === "hermes") {
16022
+ const image = ownerDocument.createElement("img");
16023
+ image.src = hermes_agent_default;
16024
+ image.alt = "";
16025
+ image.draggable = false;
16026
+ image.style.width = `${size}px`;
16027
+ image.style.height = `${size}px`;
16028
+ image.style.objectFit = "contain";
16029
+ image.style.flex = "none";
16030
+ return image;
16031
+ }
16032
+ if (agent === "kiro-cli") {
16033
+ const image = ownerDocument.createElement("img");
16034
+ image.src = kiro_agent_default;
16035
+ image.alt = "";
16036
+ image.draggable = false;
16037
+ image.style.width = `${size}px`;
16038
+ image.style.height = `${size}px`;
16039
+ image.style.objectFit = "contain";
16040
+ image.style.flex = "none";
16041
+ return image;
16042
+ }
16043
+ if (agent === "muse") {
16044
+ return createSvgIcon(
16045
+ [
16046
+ {
16047
+ d: "M12 2.2c-1.9 3.4-4.8 6.4-8.6 8.4 3.8 2 6.7 5 8.6 8.4 1.9-3.4 4.8-6.4 8.6-8.4C16.8 8.6 13.9 5.6 12 2.2z"
16048
+ }
16049
+ ],
16050
+ "#0668E1",
16051
+ size,
16052
+ ownerDocument
16053
+ );
16054
+ }
15953
16055
  const mark = ownerDocument.createElement("img");
15954
16056
  mark.src = grok_agent_default;
15955
16057
  mark.alt = "";
@@ -16084,6 +16186,15 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
16084
16186
  ["path", { d: "m7 10 5 5 5-5" }]
16085
16187
  ];
16086
16188
 
16189
+ // ../../node_modules/lucide/dist/esm/icons/hard-drive-download.mjs
16190
+ var HardDriveDownload = [
16191
+ ["path", { d: "M12 2v8" }],
16192
+ ["path", { d: "m16 6-4 4-4-4" }],
16193
+ ["rect", { width: "20", height: "8", x: "2", y: "14", rx: "2" }],
16194
+ ["path", { d: "M6 18h.01" }],
16195
+ ["path", { d: "M10 18h.01" }]
16196
+ ];
16197
+
16087
16198
  // ../../node_modules/lucide/dist/esm/icons/external-link.mjs
16088
16199
  var ExternalLink = [
16089
16200
  ["path", { d: "M15 3h6v6" }],
@@ -16296,6 +16407,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
16296
16407
  "copy",
16297
16408
  "ellipsis",
16298
16409
  "download",
16410
+ "hard-drive-download",
16299
16411
  "chevron-left",
16300
16412
  "chevron-right",
16301
16413
  "chevron-down",
@@ -16333,6 +16445,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
16333
16445
  copy: Copy,
16334
16446
  ellipsis: Ellipsis,
16335
16447
  download: Download,
16448
+ "hard-drive-download": HardDriveDownload,
16336
16449
  "chevron-left": ChevronLeft,
16337
16450
  "chevron-right": ChevronRight,
16338
16451
  "chevron-down": ChevronDown,
@@ -16697,17 +16810,94 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
16697
16810
  element.style.setProperty("-webkit-backdrop-filter", "none");
16698
16811
  }
16699
16812
 
16813
+ // src/settings/harness-install.ts
16814
+ var HARNESS_INSTALL_SPECS = Object.freeze({
16815
+ pi: {
16816
+ url: "https://pi.dev/",
16817
+ binary: "pi",
16818
+ posix: "curl -fsSL https://pi.dev/install.sh | sh",
16819
+ windows: "npm install -g --ignore-scripts @earendil-works/pi-coding-agent"
16820
+ },
16821
+ "claude-code": {
16822
+ url: "https://code.claude.com/docs/en/quickstart",
16823
+ binary: "claude",
16824
+ posix: "curl -fsSL https://claude.ai/install.sh | bash",
16825
+ windows: "irm https://claude.ai/install.ps1 | iex"
16826
+ },
16827
+ "deepseek-harness": {
16828
+ url: "https://deepseek-harness.github.io/deepseek-harness/",
16829
+ binary: "dsh",
16830
+ posix: "npm install -g @deepseek-ai/dsh",
16831
+ windows: "npm install -g @deepseek-ai/dsh"
16832
+ },
16833
+ opencode: {
16834
+ url: "https://opencode.ai/docs/",
16835
+ binary: "opencode",
16836
+ posix: "curl -fsSL https://opencode.ai/install | bash",
16837
+ windows: "npm install -g opencode-ai"
16838
+ },
16839
+ grok: {
16840
+ url: "https://grok.com/",
16841
+ binary: "grok",
16842
+ posix: "curl -fsSL https://x.ai/cli/install.sh | bash",
16843
+ windows: "irm https://x.ai/cli/install.ps1 | iex"
16844
+ },
16845
+ omp: {
16846
+ url: "https://github.com/can1357/oh-my-pi",
16847
+ binary: "omp",
16848
+ posix: "curl -fsSL https://omp.sh/install | sh",
16849
+ windows: "irm https://omp.sh/install.ps1 | iex"
16850
+ },
16851
+ antigravity: {
16852
+ url: "https://antigravity.google/product/antigravity-cli",
16853
+ binary: "agy",
16854
+ posix: "curl -fsSL https://antigravity.google/cli/install.sh | bash",
16855
+ windows: "irm https://antigravity.google/cli/install.ps1 | iex"
16856
+ },
16857
+ hermes: {
16858
+ url: "https://hermes-agent.nousresearch.com/docs/getting-started/installation",
16859
+ binary: "hermes",
16860
+ posix: "curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash",
16861
+ windows: "iex (irm https://hermes-agent.nousresearch.com/install.ps1)"
16862
+ },
16863
+ muse: {
16864
+ url: "https://developer.meta.com/ai/products/muse-code/",
16865
+ binary: "muse",
16866
+ posix: "curl -fsSL https://dev.meta.ai/install.sh | bash",
16867
+ windows: "curl -fsSL https://dev.meta.ai/install.sh | bash"
16868
+ },
16869
+ "kiro-cli": {
16870
+ url: "https://kiro.dev/docs/cli/",
16871
+ binary: "kiro-cli",
16872
+ posix: "curl -fsSL https://cli.kiro.dev/install | bash",
16873
+ windows: "irm 'https://cli.kiro.dev/install.ps1' | iex"
16874
+ }
16875
+ });
16876
+ function harnessInstallPlatform(window2) {
16877
+ const navigator2 = window2?.navigator;
16878
+ if (!navigator2) return "posix";
16879
+ const identity = `${navigator2.platform ?? ""} ${navigator2.userAgent}`;
16880
+ return /windows|win32|win64/iu.test(identity) ? "windows" : "posix";
16881
+ }
16882
+ function harnessInstallGuide(agent, platform) {
16883
+ const spec = HARNESS_INSTALL_SPECS[agent];
16884
+ return {
16885
+ url: spec.url,
16886
+ binary: spec.binary,
16887
+ command: platform === "windows" ? spec.windows : spec.posix
16888
+ };
16889
+ }
16890
+ function fillHarnessInstallPrompt(template, values) {
16891
+ return template.replaceAll(/\{(name|binary|command|url)\}/g, (_, key) => {
16892
+ if (key === "name") return values.name;
16893
+ if (key === "binary") return values.binary;
16894
+ if (key === "command") return values.command;
16895
+ return values.url;
16896
+ });
16897
+ }
16898
+
16700
16899
  // src/settings/connections-page.ts
16701
16900
  var CODEXHOST_GITHUB_ISSUES_NEW_URL = "https://github.com/LiberSeek/BOFT-CLI/issues/new";
16702
- var HARNESS_INSTALL_URLS = Object.freeze({
16703
- pi: "https://pi.dev/",
16704
- "claude-code": "https://code.claude.com/docs/en/quickstart",
16705
- "deepseek-harness": "https://deepseek-harness.github.io/deepseek-harness/",
16706
- opencode: "https://opencode.ai/docs/",
16707
- grok: "https://grok.com/",
16708
- omp: "https://github.com/can1357/oh-my-pi",
16709
- antigravity: "https://antigravity.google/product/antigravity-cli"
16710
- });
16711
16901
  function connectionStatusLabel(availability, messages, hasError = false) {
16712
16902
  if (hasError && availability !== "notInstalled") return messages.connectionStatusError;
16713
16903
  if (availability === "ready") return messages.connectionStatusReady;
@@ -16754,24 +16944,24 @@ ${error51.stderrTail}`] : []
16754
16944
  line.append(name, content);
16755
16945
  return line;
16756
16946
  }
16757
- function setCopyButtonLabel(button, label) {
16758
- button.replaceChildren(createRendererSettingsIcon("copy", 16), label);
16947
+ function setActionButtonLabel(button, icon2, label) {
16948
+ button.replaceChildren(createRendererSettingsIcon(icon2, 16), label);
16759
16949
  }
16760
- function showCopyButtonFeedback(button, label, restoreLabel) {
16761
- setCopyButtonLabel(button, label);
16950
+ function showCopyButtonFeedback(button, icon2, label, restoreLabel) {
16951
+ setActionButtonLabel(button, icon2, label);
16762
16952
  button.ownerDocument.defaultView?.setTimeout(() => {
16763
- setCopyButtonLabel(button, restoreLabel);
16953
+ setActionButtonLabel(button, icon2, restoreLabel);
16764
16954
  }, 2e3);
16765
16955
  }
16766
- function copyDiagnosticsToClipboard(document2, button, report, messages, restoreLabel) {
16956
+ function copyTextToClipboard(document2, button, report, messages, restoreLabel, icon2 = "copy") {
16767
16957
  const clipboard = document2.defaultView?.navigator.clipboard;
16768
16958
  if (!clipboard) {
16769
- showCopyButtonFeedback(button, messages.connectionCopyFailed, restoreLabel);
16959
+ showCopyButtonFeedback(button, icon2, messages.connectionCopyFailed, restoreLabel);
16770
16960
  return;
16771
16961
  }
16772
16962
  void clipboard.writeText(report).then(
16773
- () => showCopyButtonFeedback(button, messages.connectionCopied, restoreLabel),
16774
- () => showCopyButtonFeedback(button, messages.connectionCopyFailed, restoreLabel)
16963
+ () => showCopyButtonFeedback(button, icon2, messages.connectionCopied, restoreLabel),
16964
+ () => showCopyButtonFeedback(button, icon2, messages.connectionCopyFailed, restoreLabel)
16775
16965
  );
16776
16966
  }
16777
16967
  function connectionHostName(hostId, messages) {
@@ -16834,6 +17024,16 @@ ${error51.stderrTail}`] : []
16834
17024
  body.className = "settings-connection-inline-detail";
16835
17025
  body.dataset.connectionDetail = item.key;
16836
17026
  if (item.agentSnapshot?.availability === "notInstalled") {
17027
+ const guide = harnessInstallGuide(
17028
+ item.agentSnapshot.agent,
17029
+ harnessInstallPlatform(document2.defaultView)
17030
+ );
17031
+ const prompt = fillHarnessInstallPrompt(messages.connectionInstallPrompt, {
17032
+ name: item.name,
17033
+ binary: guide.binary,
17034
+ command: guide.command,
17035
+ url: guide.url
17036
+ });
16837
17037
  const callout = document2.createElement("div");
16838
17038
  callout.className = "settings-connection-install-callout";
16839
17039
  const icon2 = document2.createElement("span");
@@ -16844,18 +17044,67 @@ ${error51.stderrTail}`] : []
16844
17044
  title2.textContent = `${messages.connectionInstall} ${item.name}`;
16845
17045
  const description2 = document2.createElement("p");
16846
17046
  description2.textContent = messages.connectionInstallDescription;
16847
- copy2.append(title2, description2);
17047
+ const commandBlock = document2.createElement("div");
17048
+ commandBlock.className = "settings-connection-install-command";
17049
+ const commandLabel = document2.createElement("span");
17050
+ commandLabel.textContent = messages.connectionInstallCommand;
17051
+ const command = document2.createElement("code");
17052
+ command.textContent = guide.command;
17053
+ commandBlock.append(commandLabel, command);
17054
+ copy2.append(title2, description2, commandBlock);
16848
17055
  callout.append(icon2, copy2);
16849
- const install2 = document2.createElement("a");
16850
- install2.className = "settings-command-button settings-connection-install-button";
16851
- install2.href = HARNESS_INSTALL_URLS[item.agentSnapshot.agent];
16852
- install2.target = "_blank";
16853
- install2.rel = "noopener noreferrer";
16854
- install2.append(
17056
+ const actions2 = document2.createElement("div");
17057
+ actions2.className = "settings-connection-install-actions";
17058
+ const install2 = document2.createElement("button");
17059
+ install2.type = "button";
17060
+ install2.className = "settings-command-button";
17061
+ install2.dataset.connectionAction = "install-command";
17062
+ setActionButtonLabel(install2, "hard-drive-download", messages.connectionInstall);
17063
+ install2.addEventListener("click", () => {
17064
+ copyTextToClipboard(
17065
+ document2,
17066
+ install2,
17067
+ guide.command,
17068
+ messages,
17069
+ messages.connectionInstall,
17070
+ "hard-drive-download"
17071
+ );
17072
+ });
17073
+ const copyPromptWrap = document2.createElement("div");
17074
+ copyPromptWrap.className = "settings-connection-copy-prompt";
17075
+ const copyPrompt = document2.createElement("button");
17076
+ copyPrompt.type = "button";
17077
+ copyPrompt.className = "settings-command-button settings-command-button--secondary";
17078
+ copyPrompt.dataset.connectionAction = "copy-prompt";
17079
+ copyPrompt.setAttribute("aria-describedby", `${item.key}-install-prompt-tooltip`);
17080
+ setActionButtonLabel(copyPrompt, "copy", messages.connectionCopyPrompt);
17081
+ copyPrompt.addEventListener("click", () => {
17082
+ copyTextToClipboard(
17083
+ document2,
17084
+ copyPrompt,
17085
+ prompt,
17086
+ messages,
17087
+ messages.connectionCopyPrompt
17088
+ );
17089
+ });
17090
+ const tooltip = document2.createElement("div");
17091
+ tooltip.id = `${item.key}-install-prompt-tooltip`;
17092
+ tooltip.className = "settings-connection-copy-prompt__tooltip";
17093
+ tooltip.setAttribute("role", "tooltip");
17094
+ tooltip.textContent = prompt;
17095
+ copyPromptWrap.append(copyPrompt, tooltip);
17096
+ const official = document2.createElement("a");
17097
+ official.className = "settings-command-button settings-command-button--secondary";
17098
+ official.dataset.connectionAction = "open-installation";
17099
+ official.href = guide.url;
17100
+ official.target = "_blank";
17101
+ official.rel = "noopener noreferrer";
17102
+ official.append(
16855
17103
  messages.connectionOpenInstallation,
16856
17104
  createRendererSettingsIcon("external-link", 14)
16857
17105
  );
16858
- body.append(callout, install2);
17106
+ actions2.append(install2, copyPromptWrap, official);
17107
+ body.append(callout, actions2);
16859
17108
  return body;
16860
17109
  }
16861
17110
  if (!item.error) {
@@ -16917,10 +17166,10 @@ ${error51.stderrTail}`] : []
16917
17166
  const copy = document2.createElement("button");
16918
17167
  copy.type = "button";
16919
17168
  copy.className = "settings-command-button settings-command-button--secondary";
16920
- setCopyButtonLabel(copy, messages.connectionCopyDetails);
17169
+ setActionButtonLabel(copy, "copy", messages.connectionCopyDetails);
16921
17170
  const report = diagnosticText(hostId, item);
16922
17171
  copy.addEventListener("click", () => {
16923
- copyDiagnosticsToClipboard(document2, copy, report, messages, messages.connectionCopyDetails);
17172
+ copyTextToClipboard(document2, copy, report, messages, messages.connectionCopyDetails);
16924
17173
  });
16925
17174
  logHeader.append(logTitle, copy);
16926
17175
  const log = document2.createElement("pre");
@@ -16975,14 +17224,18 @@ ${error51.stderrTail}`] : []
16975
17224
  action.setAttribute("role", "cell");
16976
17225
  const canExpand = item.error !== null || item.agentSnapshot?.availability === "notInstalled" || item.openWebUi !== void 0;
16977
17226
  if (item.agentSnapshot?.availability === "notInstalled") {
16978
- const install2 = document2.createElement("a");
17227
+ const install2 = document2.createElement("button");
17228
+ install2.type = "button";
16979
17229
  install2.className = "settings-connection-install-link";
16980
- install2.href = HARNESS_INSTALL_URLS[item.agentSnapshot.agent];
16981
- install2.target = "_blank";
16982
- install2.rel = "noopener noreferrer";
16983
- install2.setAttribute("aria-label", `${messages.connectionOpenInstallation}: ${item.name}`);
16984
- install2.title = messages.connectionOpenInstallation;
17230
+ install2.dataset.connectionAction = "show-install";
17231
+ install2.setAttribute("aria-label", `${messages.connectionInstall}: ${item.name}`);
17232
+ install2.setAttribute("aria-expanded", String(expanded));
17233
+ install2.title = messages.connectionInstall;
16985
17234
  install2.append(createRendererSettingsIcon("download", 17));
17235
+ install2.addEventListener("click", (event) => {
17236
+ event?.stopPropagation?.();
17237
+ toggleExpand();
17238
+ });
16986
17239
  action.append(install2);
16987
17240
  } else if (item.error) {
16988
17241
  const viewError = document2.createElement("button");
@@ -17447,11 +17700,11 @@ ${error51.stderrTail}`] : []
17447
17700
  sessionImportTitle: "Session Import",
17448
17701
  sessionImportHarness: "Harness",
17449
17702
  sessionImportDescription: "Sessions keep their original project path. If a folder is not in the Codex sidebar, add it as a project first. Original history remains managed by the Harness.",
17450
- sessionImportAvailabilityNote: "Available Harnesses come from the local Host. If activity is unknown, close the session in its native client before importing to avoid concurrent writes.",
17703
+ sessionImportAvailabilityNote: "Available Harnesses come from the selected Host. If activity is unknown, close the session in its native client before importing to avoid concurrent writes.",
17451
17704
  sessionImportRefresh: "Refresh",
17452
- sessionImportRefreshing: "Loading local sessions...",
17453
- sessionImportUnavailable: "Session import is unavailable for this local Harness or its current protocol. Update the Host/plugin or choose another Harness.",
17454
- sessionImportEmpty: "No local sessions are available to import.",
17705
+ sessionImportRefreshing: "Loading sessions from the selected Host...",
17706
+ sessionImportUnavailable: "Session import is unavailable for this Harness or the selected Host protocol. Update the Host/plugin or choose another Harness.",
17707
+ sessionImportEmpty: "No sessions are available to import on the selected Host.",
17455
17708
  sessionImportSearch: "Search",
17456
17709
  sessionImportSearchPlaceholder: "Search titles, session IDs or project paths",
17457
17710
  sessionImportNoMatches: "No sessions match your search.",
@@ -17459,7 +17712,7 @@ ${error51.stderrTail}`] : []
17459
17712
  sessionImportPrevious: "Previous",
17460
17713
  sessionImportNext: "Next",
17461
17714
  sessionImportPageSummary: "{total} records / {from}-{to}",
17462
- sessionImportLoadFailed: "Local sessions could not be loaded. Check directory access or duplicate session IDs, then retry.",
17715
+ sessionImportLoadFailed: "Sessions could not be loaded from the selected Host. Check directory access or duplicate session IDs, then retry.",
17463
17716
  sessionImportFailed: "The session could not be imported.",
17464
17717
  sessionImportUntitled: "Untitled session",
17465
17718
  sessionImportUpdatedAt: "Updated",
@@ -17573,7 +17826,10 @@ ${error51.stderrTail}`] : []
17573
17826
  connectionOpenInstallation: "Open official installation page",
17574
17827
  connectionOpenHarnessWeb: "Open DeepSeek Harness Web",
17575
17828
  connectionInstall: "Install",
17576
- connectionInstallDescription: "This Harness was not detected. Follow its official installation guide, then return here and run the check again.",
17829
+ connectionInstallDescription: "This Harness was not detected. Copy the official install command, copy an install prompt for another Agent, or open the official installation page. After installing, return here and run the check again.",
17830
+ connectionInstallCommand: "Install command",
17831
+ connectionCopyPrompt: "Copy prompt",
17832
+ connectionInstallPrompt: "Please install {name} (CLI command: {binary}) on this machine.\n\nUse the official install method and run:\n{command}\n\nOfficial installation page: {url}\n\nAfter installation, verify that `{binary}` is available in the terminal and report the result.",
17577
17833
  connectionErrorTitle: "Connection check failed",
17578
17834
  connectionErrorLog: "Error log",
17579
17835
  connectionOpenIssue: "Open GitHub Issue",
@@ -17672,11 +17928,11 @@ ${error51.stderrTail}`] : []
17672
17928
  sessionImportTitle: "\u4F1A\u8BDD\u5BFC\u5165",
17673
17929
  sessionImportHarness: "Harness",
17674
17930
  sessionImportDescription: "\u4F1A\u8BDD\u5C06\u4FDD\u7559\u539F\u59CB\u9879\u76EE\u8DEF\u5F84\uFF1B\u82E5\u8BE5\u6587\u4EF6\u5939\u5C1A\u672A\u51FA\u73B0\u5728 Codex \u4FA7\u680F\uFF0C\u8BF7\u5148\u5C06\u5176\u6DFB\u52A0\u4E3A\u9879\u76EE\u3002\u539F\u59CB\u5386\u53F2\u4ECD\u7531 Harness \u7BA1\u7406\u3002",
17675
- sessionImportAvailabilityNote: "\u53EF\u9009 Harness \u6765\u81EA\u672C\u5730 Host\u3002\u8FD0\u884C\u72B6\u6001\u672A\u77E5\u65F6\uFF0C\u8BF7\u5148\u5728\u539F\u751F\u5BA2\u6237\u7AEF\u5173\u95ED\u8BE5\u4F1A\u8BDD\u518D\u5BFC\u5165\uFF0C\u907F\u514D\u540C\u65F6\u5199\u5165\u3002",
17931
+ sessionImportAvailabilityNote: "\u53EF\u9009 Harness \u6765\u81EA\u5F53\u524D Host\u3002\u8FD0\u884C\u72B6\u6001\u672A\u77E5\u65F6\uFF0C\u8BF7\u5148\u5728\u539F\u751F\u5BA2\u6237\u7AEF\u5173\u95ED\u8BE5\u4F1A\u8BDD\u518D\u5BFC\u5165\uFF0C\u907F\u514D\u540C\u65F6\u5199\u5165\u3002",
17676
17932
  sessionImportRefresh: "\u5237\u65B0",
17677
- sessionImportRefreshing: "\u6B63\u5728\u8BFB\u53D6\u672C\u5730\u4F1A\u8BDD\u2026\u2026",
17678
- sessionImportUnavailable: "\u672C\u5730 Harness \u6216\u5F53\u524D\u534F\u8BAE\u6682\u4E0D\u652F\u6301\u4F1A\u8BDD\u5BFC\u5165\uFF0C\u8BF7\u66F4\u65B0 Host/\u63D2\u4EF6\u6216\u9009\u62E9\u5176\u4ED6 Harness\u3002",
17679
- sessionImportEmpty: "\u6CA1\u6709\u53EF\u5BFC\u5165\u7684\u672C\u5730\u4F1A\u8BDD\u3002",
17933
+ sessionImportRefreshing: "\u6B63\u5728\u8BFB\u53D6\u5F53\u524D Host \u4E0A\u7684\u4F1A\u8BDD\u2026\u2026",
17934
+ sessionImportUnavailable: "\u8BE5 Harness \u6216\u5F53\u524D Host \u534F\u8BAE\u6682\u4E0D\u652F\u6301\u4F1A\u8BDD\u5BFC\u5165\uFF0C\u8BF7\u66F4\u65B0 Host/\u63D2\u4EF6\u6216\u9009\u62E9\u5176\u4ED6 Harness\u3002",
17935
+ sessionImportEmpty: "\u5F53\u524D Host \u4E0A\u6CA1\u6709\u53EF\u5BFC\u5165\u7684\u4F1A\u8BDD\u3002",
17680
17936
  sessionImportSearch: "\u641C\u7D22",
17681
17937
  sessionImportSearchPlaceholder: "\u641C\u7D22\u6807\u9898\u3001\u4F1A\u8BDD ID \u6216\u9879\u76EE\u8DEF\u5F84",
17682
17938
  sessionImportNoMatches: "\u6CA1\u6709\u5339\u914D\u7684\u4F1A\u8BDD\u3002",
@@ -17684,7 +17940,7 @@ ${error51.stderrTail}`] : []
17684
17940
  sessionImportPrevious: "\u4E0A\u4E00\u9875",
17685
17941
  sessionImportNext: "\u4E0B\u4E00\u9875",
17686
17942
  sessionImportPageSummary: "{total} \u6761\u8BB0\u5F55 / {from}-{to}",
17687
- sessionImportLoadFailed: "\u65E0\u6CD5\u8BFB\u53D6\u672C\u5730\u4F1A\u8BDD\uFF0C\u8BF7\u68C0\u67E5\u76EE\u5F55\u8BBF\u95EE\u6743\u9650\u6216\u91CD\u590D\u7684\u4F1A\u8BDD ID \u540E\u91CD\u8BD5\u3002",
17943
+ sessionImportLoadFailed: "\u65E0\u6CD5\u8BFB\u53D6\u5F53\u524D Host \u4E0A\u7684\u4F1A\u8BDD\uFF0C\u8BF7\u68C0\u67E5\u76EE\u5F55\u8BBF\u95EE\u6743\u9650\u6216\u91CD\u590D\u7684\u4F1A\u8BDD ID \u540E\u91CD\u8BD5\u3002",
17688
17944
  sessionImportFailed: "\u65E0\u6CD5\u5BFC\u5165\u8BE5\u4F1A\u8BDD\u3002",
17689
17945
  sessionImportUntitled: "\u672A\u547D\u540D\u4F1A\u8BDD",
17690
17946
  sessionImportUpdatedAt: "\u66F4\u65B0\u65F6\u95F4",
@@ -17798,7 +18054,10 @@ ${error51.stderrTail}`] : []
17798
18054
  connectionOpenInstallation: "\u524D\u5F80\u5B98\u65B9\u5B89\u88C5\u9875\u9762",
17799
18055
  connectionOpenHarnessWeb: "\u6253\u5F00 DeepSeek Harness Web",
17800
18056
  connectionInstall: "\u5B89\u88C5",
17801
- connectionInstallDescription: "\u5C1A\u672A\u68C0\u6D4B\u5230\u8BE5 Harness\u3002\u8BF7\u6309\u7167\u5B98\u65B9\u5B89\u88C5\u6307\u5357\u5B8C\u6210\u5B89\u88C5\uFF0C\u7136\u540E\u8FD4\u56DE\u6B64\u9875\u9762\u91CD\u65B0\u68C0\u67E5\u3002",
18057
+ connectionInstallDescription: "\u5C1A\u672A\u68C0\u6D4B\u5230\u8BE5 Harness\u3002\u53EF\u4EE5\u590D\u5236\u5B98\u65B9\u5B89\u88C5\u547D\u4EE4\u3001\u590D\u5236\u5B89\u88C5 Prompt \u4EA4\u7ED9\u5176\u4ED6 Agent \u6267\u884C\uFF0C\u6216\u524D\u5F80\u5B98\u65B9\u5B89\u88C5\u9875\u9762\u3002\u5B89\u88C5\u5B8C\u6210\u540E\u8BF7\u8FD4\u56DE\u6B64\u9875\u9762\u91CD\u65B0\u68C0\u67E5\u3002",
18058
+ connectionInstallCommand: "\u5B89\u88C5\u547D\u4EE4",
18059
+ connectionCopyPrompt: "\u590D\u5236 Prompt",
18060
+ connectionInstallPrompt: "\u8BF7\u5E2E\u6211\u5728\u672C\u673A\u5B89\u88C5 {name}\uFF08CLI \u547D\u4EE4\uFF1A{binary}\uFF09\u3002\n\n\u8BF7\u6309\u5B98\u65B9\u5B89\u88C5\u65B9\u5F0F\u6267\u884C\u4EE5\u4E0B\u547D\u4EE4\uFF0C\u5E76\u5904\u7406 PATH\u3001\u6743\u9650\u548C\u4F9D\u8D56\u95EE\u9898\uFF1A\n{command}\n\n\u5B98\u65B9\u5B89\u88C5\u9875\u9762\uFF1A{url}\n\n\u5B89\u88C5\u5B8C\u6210\u540E\u8BF7\u9A8C\u8BC1 `{binary}` \u53EF\u4EE5\u5728\u7EC8\u7AEF\u4E2D\u8FD0\u884C\uFF0C\u5E76\u544A\u8BC9\u6211\u7ED3\u679C\u3002",
17802
18061
  connectionErrorTitle: "\u8FDE\u63A5\u68C0\u67E5\u5931\u8D25",
17803
18062
  connectionErrorLog: "\u9519\u8BEF\u65E5\u5FD7",
17804
18063
  connectionOpenIssue: "\u63D0\u4EA4 GitHub Issue",
@@ -17927,7 +18186,10 @@ ${error51.stderrTail}`] : []
17927
18186
  opencode: "https://opencode.ai/docs/",
17928
18187
  grok: "https://grok.com/",
17929
18188
  omp: "https://github.com/can1357/oh-my-pi",
17930
- antigravity: "https://antigravity.google/product/antigravity-cli"
18189
+ antigravity: "https://antigravity.google/product/antigravity-cli",
18190
+ hermes: "https://hermes-agent.nousresearch.com/docs",
18191
+ muse: "https://www.meta.ai/",
18192
+ "kiro-cli": "https://kiro.dev/docs/cli/"
17931
18193
  };
17932
18194
  var CONTROL_ATTRIBUTE = "data-codexhost-agent-control";
17933
18195
  var AGENT_MENU_WIDTH = 224;
@@ -19274,7 +19536,10 @@ ${error51.stderrTail}`] : []
19274
19536
  ["Workspace write", "\u5DE5\u4F5C\u533A\u5199\u5165"],
19275
19537
  ["Full access (dangerous)", "\u5B8C\u5168\u8BBF\u95EE\uFF08\u5371\u9669\uFF09"],
19276
19538
  ["Configured permissions", "\u4F7F\u7528\u5DF2\u914D\u7F6E\u6743\u9650"],
19277
- ["Skip permissions", "\u8DF3\u8FC7\u6743\u9650\u68C0\u67E5"]
19539
+ ["Skip permissions", "\u8DF3\u8FC7\u6743\u9650\u68C0\u67E5"],
19540
+ ["On request", "\u6309\u8BF7\u6C42\u8BE2\u95EE"],
19541
+ ["Prompt unmatched", "\u672A\u5339\u914D\u65F6\u8BE2\u95EE"],
19542
+ ["Deny unmatched", "\u672A\u5339\u914D\u65F6\u62D2\u7EDD"]
19278
19543
  ]);
19279
19544
  var CHINESE_PERMISSION_MODE_DESCRIPTIONS = /* @__PURE__ */ new Map([
19280
19545
  [
@@ -19626,7 +19891,9 @@ ${error51.stderrTail}`] : []
19626
19891
  // src/renderer-usage-control.ts
19627
19892
  var ENGLISH_USAGE_MESSAGES = Object.freeze({
19628
19893
  usage: "Usage",
19894
+ account: "Account",
19629
19895
  context: "Context",
19896
+ recordedCredits: "Recorded usage",
19630
19897
  latestCacheHit: "Latest cache hit",
19631
19898
  outputSpeed: "Output speed",
19632
19899
  cacheRead: "Cache read",
@@ -19634,19 +19901,17 @@ ${error51.stderrTail}`] : []
19634
19901
  reasoning: "Reasoning",
19635
19902
  totalTokens: "Total tokens",
19636
19903
  inputOutput: "Input / output",
19637
- fiveHourLimit: "5-hour limit",
19638
- sevenDayLimit: "7-day limit",
19639
19904
  sessionCostEstimate: "Session cost estimate",
19640
19905
  threadUsage: "Thread Usage",
19641
19906
  threadUsageDetails: "Thread Usage details",
19642
19907
  tokensSummary: "tokens",
19643
- tokensPerSecond: "tok/s",
19644
- fiveHourSummary: "5h",
19645
- sevenDaySummary: "7d"
19908
+ tokensPerSecond: "tok/s"
19646
19909
  });
19647
19910
  var CHINESE_USAGE_MESSAGES = Object.freeze({
19648
19911
  usage: "\u7528\u91CF",
19912
+ account: "\u8D26\u53F7",
19649
19913
  context: "\u4E0A\u4E0B\u6587",
19914
+ recordedCredits: "\u5DF2\u8BB0\u5F55\u6D88\u8017",
19650
19915
  latestCacheHit: "\u7F13\u5B58\u547D\u4E2D\u7387",
19651
19916
  outputSpeed: "\u8F93\u51FA\u901F\u5EA6",
19652
19917
  cacheRead: "\u7F13\u5B58\u8BFB\u53D6",
@@ -19654,15 +19919,11 @@ ${error51.stderrTail}`] : []
19654
19919
  reasoning: "\u63A8\u7406",
19655
19920
  totalTokens: "Token \u603B\u6570",
19656
19921
  inputOutput: "\u8F93\u5165 / \u8F93\u51FA",
19657
- fiveHourLimit: "5 \u5C0F\u65F6\u9650\u989D",
19658
- sevenDayLimit: "7 \u5929\u9650\u989D",
19659
19922
  sessionCostEstimate: "\u4F1A\u8BDD\u8D39\u7528\u4F30\u7B97",
19660
19923
  threadUsage: "\u5BF9\u8BDD\u7528\u91CF",
19661
19924
  threadUsageDetails: "\u5BF9\u8BDD\u7528\u91CF\u8BE6\u60C5",
19662
19925
  tokensSummary: "Token",
19663
- tokensPerSecond: "Token/\u79D2",
19664
- fiveHourSummary: "5 \u5C0F\u65F6",
19665
- sevenDaySummary: "7 \u5929"
19926
+ tokensPerSecond: "Token/\u79D2"
19666
19927
  });
19667
19928
  function rendererUsageMessages(locale) {
19668
19929
  return locale === "zh-CN" ? CHINESE_USAGE_MESSAGES : ENGLISH_USAGE_MESSAGES;
@@ -19676,6 +19937,9 @@ ${error51.stderrTail}`] : []
19676
19937
  function formatRendererCost(value) {
19677
19938
  return `$${value.toFixed(3)}`;
19678
19939
  }
19940
+ function formatRendererCredits(value) {
19941
+ return `${value > 0 && value < 1e-3 ? "<0.001" : decimal(value, 3)} credits`;
19942
+ }
19679
19943
  function formatRendererTokenRate(value, locale = "en") {
19680
19944
  return `${decimal(value, 1)} ${rendererUsageMessages(locale).tokensPerSecond}`;
19681
19945
  }
@@ -19730,27 +19994,11 @@ ${error51.stderrTail}`] : []
19730
19994
  svg.append(track, fill);
19731
19995
  return svg;
19732
19996
  }
19733
- function formatRendererPlanReset(unixSeconds, locale) {
19734
- const date5 = new Date(unixSeconds * 1e3);
19735
- if (Number.isNaN(date5.getTime())) return "";
19736
- return date5.toLocaleString(locale === "zh-CN" ? "zh-CN" : void 0, {
19737
- month: "long",
19738
- day: "numeric",
19739
- hour: "numeric",
19740
- minute: "2-digit"
19741
- });
19742
- }
19743
- function formatRendererPlanWindow(usedPercent, resetsAtUnix, locale) {
19744
- const percent = formatRendererCreditsPercent(usedPercent);
19745
- if (resetsAtUnix === void 0) return percent;
19746
- const reset = formatRendererPlanReset(resetsAtUnix, locale);
19747
- return reset.length > 0 ? `${percent} \xB7 ${reset}` : percent;
19748
- }
19749
19997
  function rendererUsageTriggerMaxWidth() {
19750
19998
  return "min(180px, 30vw)";
19751
19999
  }
19752
20000
  function rendererUsageHasDisplayData(usage) {
19753
- return usage?.cacheHitRatePercent !== void 0 || usage?.outputTokensPerSecond !== void 0 || usage?.totalCostUsd !== void 0 || usage?.contextUsedTokens !== void 0 && usage.contextWindowTokens !== void 0 || usage?.totalTokens !== void 0 || usage?.inputTokens !== void 0 || usage?.cachedInputTokens !== void 0 || usage?.cacheWriteInputTokens !== void 0 || usage?.outputTokens !== void 0 || usage?.reasoningOutputTokens !== void 0 || usage?.planFiveHourUsedPercent !== void 0 || usage?.planSevenDayUsedPercent !== void 0;
20001
+ return usage?.cacheHitRatePercent !== void 0 || usage?.outputTokensPerSecond !== void 0 || usage?.totalCostUsd !== void 0 || usage?.totalCredits !== void 0 || usage?.contextUsagePercent !== void 0 || usage?.contextUsedTokens !== void 0 && usage.contextWindowTokens !== void 0 || usage?.totalTokens !== void 0 || usage?.inputTokens !== void 0 || usage?.cachedInputTokens !== void 0 || usage?.cacheWriteInputTokens !== void 0 || usage?.outputTokens !== void 0 || usage?.reasoningOutputTokens !== void 0;
19754
20002
  }
19755
20003
  function applyRendererPopoverChrome(popover) {
19756
20004
  popover.style.border = "1px solid light-dark(rgba(15, 23, 42, 0.10), color-mix(in srgb, CanvasText 16%, transparent))";
@@ -19759,10 +20007,10 @@ ${error51.stderrTail}`] : []
19759
20007
  popover.style.color = "CanvasText";
19760
20008
  popover.style.boxShadow = "light-dark(0 10px 24px rgba(15, 23, 42, 0.12), 0 20px 45px rgba(0, 0, 0, 0.42)), 0 2px 8px light-dark(rgba(15, 23, 42, 0.06), rgba(0, 0, 0, 0.28))";
19761
20009
  }
19762
- function addDetailRow(parent, label, value) {
20010
+ function addDetailRow(parent, label, value, wrap = false) {
19763
20011
  const row = document.createElement("div");
19764
20012
  row.style.display = "grid";
19765
- row.style.gridTemplateColumns = "minmax(0, 1fr) auto";
20013
+ row.style.gridTemplateColumns = wrap ? "auto minmax(0, 1fr)" : "minmax(0, 1fr) auto";
19766
20014
  row.style.gap = "20px";
19767
20015
  row.style.padding = "4px 0";
19768
20016
  const labelElement = document.createElement("span");
@@ -19772,17 +20020,24 @@ ${error51.stderrTail}`] : []
19772
20020
  valueElement.textContent = value;
19773
20021
  valueElement.style.fontVariantNumeric = "tabular-nums";
19774
20022
  valueElement.style.textAlign = "right";
20023
+ if (wrap) {
20024
+ valueElement.style.overflowWrap = "anywhere";
20025
+ valueElement.title = value;
20026
+ }
19775
20027
  row.append(labelElement, valueElement);
19776
20028
  parent.append(row);
19777
20029
  }
19778
- function renderDetails(popover, usage, messages, locale) {
20030
+ function renderDetails(popover, usage, messages, locale, accountName) {
19779
20031
  popover.replaceChildren();
19780
20032
  const heading = document.createElement("div");
19781
20033
  heading.textContent = messages.usage;
19782
20034
  heading.style.fontWeight = "600";
19783
20035
  heading.style.marginBottom = "6px";
19784
20036
  popover.append(heading);
19785
- if (usage?.contextUsedTokens !== void 0 && usage.contextWindowTokens !== void 0) {
20037
+ if (accountName) addDetailRow(popover, messages.account, accountName, true);
20038
+ if (usage?.contextUsagePercent !== void 0) {
20039
+ addDetailRow(popover, messages.context, `${decimal(usage.contextUsagePercent, 1)}%`);
20040
+ } else if (usage?.contextUsedTokens !== void 0 && usage.contextWindowTokens !== void 0) {
19786
20041
  const contextPercent = usage.contextWindowTokens > 0 ? usage.contextUsedTokens / usage.contextWindowTokens * 100 : null;
19787
20042
  addDetailRow(
19788
20043
  popover,
@@ -19824,34 +20079,15 @@ ${error51.stderrTail}`] : []
19824
20079
  addDetailRow(
19825
20080
  popover,
19826
20081
  messages.inputOutput,
19827
- `${formatRendererTokenCount(usage.inputTokens ?? 0)} / ${formatRendererTokenCount(usage.outputTokens ?? 0)}`
19828
- );
19829
- }
19830
- if (usage?.planFiveHourUsedPercent !== void 0) {
19831
- addDetailRow(
19832
- popover,
19833
- messages.fiveHourLimit,
19834
- formatRendererPlanWindow(
19835
- usage.planFiveHourUsedPercent,
19836
- usage.planFiveHourResetsAtUnix,
19837
- locale
19838
- )
19839
- );
19840
- }
19841
- if (usage?.planSevenDayUsedPercent !== void 0) {
19842
- addDetailRow(
19843
- popover,
19844
- messages.sevenDayLimit,
19845
- formatRendererPlanWindow(
19846
- usage.planSevenDayUsedPercent,
19847
- usage.planSevenDayResetsAtUnix,
19848
- locale
19849
- )
20082
+ `${usage.inputTokens === void 0 ? "-" : formatRendererTokenCount(usage.inputTokens)} / ${usage.outputTokens === void 0 ? "-" : formatRendererTokenCount(usage.outputTokens)}`
19850
20083
  );
19851
20084
  }
19852
20085
  if (usage?.totalCostUsd !== void 0) {
19853
20086
  addDetailRow(popover, messages.sessionCostEstimate, formatRendererCost(usage.totalCostUsd));
19854
20087
  }
20088
+ if (usage?.totalCredits !== void 0) {
20089
+ addDetailRow(popover, messages.recordedCredits, formatRendererCredits(usage.totalCredits));
20090
+ }
19855
20091
  }
19856
20092
  function popoverIsOpen(popover) {
19857
20093
  try {
@@ -19935,6 +20171,8 @@ ${error51.stderrTail}`] : []
19935
20171
  popover.setAttribute("popover", "auto");
19936
20172
  popover.hidden = typeof popover.showPopover !== "function";
19937
20173
  popover.style.position = "fixed";
20174
+ popover.style.boxSizing = "border-box";
20175
+ popover.style.margin = "0";
19938
20176
  popover.style.inset = "auto";
19939
20177
  popover.style.width = "260px";
19940
20178
  popover.style.maxWidth = "min(320px, calc(100vw - 24px))";
@@ -20006,7 +20244,7 @@ ${error51.stderrTail}`] : []
20006
20244
  document.body.append(popover);
20007
20245
  return control;
20008
20246
  }
20009
- function renderRendererUsageControl(control, usage, locale = control.locale) {
20247
+ function renderRendererUsageControl(control, usage, locale = control.locale, accountName = null) {
20010
20248
  control.locale = locale;
20011
20249
  const messages = rendererUsageMessages(locale);
20012
20250
  control.popover.setAttribute("aria-label", messages.threadUsageDetails);
@@ -20015,18 +20253,20 @@ ${error51.stderrTail}`] : []
20015
20253
  const totalCostUsd = usage?.totalCostUsd;
20016
20254
  const hasContext = usage?.contextUsedTokens !== void 0 && usage.contextWindowTokens !== void 0;
20017
20255
  const hasTokenUsage = usage?.totalTokens !== void 0 || usage?.inputTokens !== void 0 || usage?.cachedInputTokens !== void 0 || usage?.cacheWriteInputTokens !== void 0 || usage?.outputTokens !== void 0 || usage?.reasoningOutputTokens !== void 0;
20018
- const hasPlanLimit = usage?.planFiveHourUsedPercent !== void 0 || usage?.planSevenDayUsedPercent !== void 0;
20019
- const visible = rendererUsageHasDisplayData(usage);
20256
+ const visible = rendererUsageHasDisplayData(usage) || Boolean(accountName);
20020
20257
  control.root.style.display = visible ? "inline-flex" : "none";
20021
20258
  if (!visible) {
20022
20259
  closePopover(control);
20023
20260
  return false;
20024
20261
  }
20025
20262
  const summary = [
20263
+ usage?.totalCredits !== void 0 ? formatRendererCredits(usage.totalCredits) : null,
20026
20264
  cacheHitRatePercent !== void 0 ? formatRendererCacheHitRate(cacheHitRatePercent) : null,
20027
20265
  outputTokensPerSecond !== void 0 ? formatRendererTokenRate(outputTokensPerSecond, locale) : null,
20028
20266
  totalCostUsd !== void 0 ? formatRendererCost(totalCostUsd) : null
20029
20267
  ].filter((value) => value !== null);
20268
+ const contextPercent = usage?.contextUsagePercent;
20269
+ if (contextPercent !== void 0 && summary.length === 0) summary.push(messages.usage);
20030
20270
  if (summary.length === 0 && hasContext && usage?.contextWindowTokens !== void 0 && usage.contextWindowTokens > 0) {
20031
20271
  summary.push(
20032
20272
  formatRendererContextSummary(usage.contextUsedTokens ?? 0, usage.contextWindowTokens)
@@ -20040,18 +20280,13 @@ ${error51.stderrTail}`] : []
20040
20280
  `${formatRendererTokenCount((usage?.inputTokens ?? 0) + (usage?.outputTokens ?? 0))} ${messages.tokensSummary}`
20041
20281
  );
20042
20282
  }
20043
- if (summary.length === 0 && hasPlanLimit) {
20044
- summary.push(
20045
- usage?.planFiveHourUsedPercent !== void 0 ? `${messages.fiveHourSummary} ${formatRendererCreditsPercent(usage.planFiveHourUsedPercent)}` : `${messages.sevenDaySummary} ${formatRendererCreditsPercent(usage?.planSevenDayUsedPercent ?? 0)}`
20046
- );
20047
- }
20048
- const compactSummary = summary.join(" \xB7 ");
20049
- const accessibleSummary = `${messages.threadUsage}: ${compactSummary}`;
20283
+ const compactSummary = summary.join(" \xB7 ") || messages.usage;
20284
+ const accessibleSummary = `${messages.threadUsage}: ${compactSummary}${contextPercent !== void 0 ? `; ${messages.context} ${decimal(contextPercent, 1)}%` : ""}`;
20050
20285
  control.trigger.style.maxWidth = rendererUsageTriggerMaxWidth();
20051
20286
  control.trigger.setAttribute("aria-label", accessibleSummary);
20052
20287
  control.trigger.title = accessibleSummary;
20053
20288
  control.label.textContent = compactSummary;
20054
- renderDetails(control.popover, usage, messages, locale);
20289
+ renderDetails(control.popover, usage, messages, locale, accountName);
20055
20290
  return true;
20056
20291
  }
20057
20292
 
@@ -21260,7 +21495,15 @@ ${error51.stderrTail}`] : []
21260
21495
  permissionModeVisible,
21261
21496
  locale
21262
21497
  );
21263
- if (control.usage) renderRendererUsageControl(control.usage, usage, locale);
21498
+ const selectedCodexAccount = state.agent === "codex" && !ownershipError ? codexAccounts.find((account) => account.active) : void 0;
21499
+ if (control.usage) {
21500
+ renderRendererUsageControl(
21501
+ control.usage,
21502
+ usage,
21503
+ locale,
21504
+ selectedCodexAccount?.email ?? selectedCodexAccount?.label ?? null
21505
+ );
21506
+ }
21264
21507
  control.harnessCommands.setLocale(locale);
21265
21508
  control.harnessCommands.root.hidden = state.agent === "codex";
21266
21509
  control.harnessCommands.root.style.display = state.agent === "codex" ? "none" : "inline-flex";
@@ -21404,14 +21647,7 @@ ${error51.stderrTail}`] : []
21404
21647
  }
21405
21648
  function rendererAgentForThreadOwnership(ownership) {
21406
21649
  if (ownership.owner === "codex") return null;
21407
- if (ownership.harnessId === "pi") return "pi";
21408
- if (ownership.harnessId === "claude-code") return "claude-code";
21409
- if (ownership.harnessId === "deepseek-harness") return "deepseek-harness";
21410
- if (ownership.harnessId === "opencode") return "opencode";
21411
- if (ownership.harnessId === "grok") return "grok";
21412
- if (ownership.harnessId === "omp") return "omp";
21413
- if (ownership.harnessId === "antigravity") return "antigravity";
21414
- return null;
21650
+ return KNOWN_RENDERER_AGENTS.includes(ownership.harnessId) && ownership.harnessId !== "codex" ? ownership.harnessId : null;
21415
21651
  }
21416
21652
  var BrowserSidebarAgentIconRow = class {
21417
21653
  constructor(element) {
@@ -22542,6 +22778,13 @@ ${error51.stderrTail}`] : []
22542
22778
  var OMP_TRANSPORT_MODEL_PREFIX = `${OMP_TRANSPORT_MODEL_ID}@`;
22543
22779
  var ANTIGRAVITY_TRANSPORT_MODEL_ID = "codexhost/antigravity-native";
22544
22780
  var ANTIGRAVITY_TRANSPORT_MODEL_PREFIX = `${ANTIGRAVITY_TRANSPORT_MODEL_ID}@`;
22781
+ function hermesTransportModelId(model, permissionModeId) {
22782
+ return encodeHarnessPluginRoute({
22783
+ harnessId: harnessIdSchema.parse("hermes"),
22784
+ ...model ? { model: harnessModelRefSchema.parse(model) } : {},
22785
+ ...permissionModeId ? { permissionModeId: harnessPermissionModeIdSchema.parse(permissionModeId) } : {}
22786
+ });
22787
+ }
22545
22788
  function transitionRendererAdapterStatus(current, next, publish) {
22546
22789
  if (current.state === next.state && current.reason === next.reason && current.hook === next.hook) {
22547
22790
  return false;
@@ -22562,7 +22805,8 @@ ${error51.stderrTail}`] : []
22562
22805
  if (agent === "grok") return GROK_TRANSPORT_MODEL_ID;
22563
22806
  if (agent === "omp") return OMP_TRANSPORT_MODEL_ID;
22564
22807
  if (agent === "antigravity") return ANTIGRAVITY_TRANSPORT_MODEL_ID;
22565
- return null;
22808
+ if (agent === "codex") return null;
22809
+ return encodeHarnessPluginRoute({ harnessId: harnessPluginIdSchema.parse(agent) });
22566
22810
  }
22567
22811
  function isRecord6(value) {
22568
22812
  return typeof value === "object" && value !== null && !Array.isArray(value);
@@ -23004,7 +23248,12 @@ ${error51.stderrTail}`] : []
23004
23248
  }
23005
23249
  }
23006
23250
  function modelSelectionForAgent(officialSelection, reasoningEffort, agent, model, thinkingOptionId, permissionModeId) {
23007
- const transportModelId = agent === "pi" ? piTransportModelId(model, thinkingOptionId) : agent === "claude-code" ? claudeTransportModelId(model, permissionModeId, thinkingOptionId) : agent === "deepseek-harness" ? deepSeekHarnessTransportModelId(model, permissionModeId) : agent === "opencode" ? openCodeTransportModelId(model, permissionModeId, thinkingOptionId) : agent === "grok" ? grokTransportModelId(model, permissionModeId, thinkingOptionId) : agent === "omp" ? ompTransportModelId(model, thinkingOptionId, permissionModeId) : agent === "antigravity" ? antigravityTransportModelId(model, permissionModeId, thinkingOptionId) : transportModelIdForAgent(agent);
23251
+ const transportModelId = agent === "pi" ? piTransportModelId(model, thinkingOptionId) : agent === "claude-code" ? claudeTransportModelId(model, permissionModeId, thinkingOptionId) : agent === "deepseek-harness" ? deepSeekHarnessTransportModelId(model, permissionModeId) : agent === "opencode" ? openCodeTransportModelId(model, permissionModeId, thinkingOptionId) : agent === "grok" ? grokTransportModelId(model, permissionModeId, thinkingOptionId) : agent === "omp" ? ompTransportModelId(model, thinkingOptionId, permissionModeId) : agent === "antigravity" ? antigravityTransportModelId(model, permissionModeId, thinkingOptionId) : agent === "hermes" ? hermesTransportModelId(model, permissionModeId) : agent === "codex" ? null : model || thinkingOptionId || permissionModeId ? encodeHarnessPluginRoute({
23252
+ harnessId: harnessPluginIdSchema.parse(agent),
23253
+ ...model ? { model } : {},
23254
+ ...thinkingOptionId ? { thinkingOptionId } : {},
23255
+ ...permissionModeId ? { permissionModeId } : {}
23256
+ }) : transportModelIdForAgent(agent);
23008
23257
  return transportModelId ? { model: transportModelId, reasoningEffort } : officialSelection;
23009
23258
  }
23010
23259
  function installCurrentRendererAdapter() {
@@ -23271,6 +23520,24 @@ ${error51.stderrTail}`] : []
23271
23520
  };
23272
23521
  }
23273
23522
 
23523
+ // src/renderer-approval-style.ts
23524
+ function installRendererApprovalStyle(ownerDocument) {
23525
+ if (typeof ownerDocument.createElement !== "function") return () => void 0;
23526
+ ownerDocument.querySelector("style[data-codexhost-approval-style]")?.remove();
23527
+ const style = ownerDocument.createElement("style");
23528
+ style.setAttribute("data-codexhost-approval-style", "true");
23529
+ style.textContent = `
23530
+ [data-codex-approval-surface] > form {
23531
+ justify-content: flex-end;
23532
+ }
23533
+ [data-codex-approval-surface] > form > .ms-auto {
23534
+ margin-inline-start: 0;
23535
+ }
23536
+ `;
23537
+ (ownerDocument.head ?? ownerDocument.documentElement)?.append?.(style);
23538
+ return () => style.remove();
23539
+ }
23540
+
23274
23541
  // src/renderer-permission-mode-preference.ts
23275
23542
  var CLAUDE_PERMISSION_MODE_PREFERENCE_KEY = "codexhost.claude-code.permission-mode.v1";
23276
23543
  function rendererStorage() {
@@ -23896,6 +24163,7 @@ ${error51.stderrTail}`] : []
23896
24163
  listControls.pagination
23897
24164
  );
23898
24165
  let candidates = [];
24166
+ let loadedClient = null;
23899
24167
  let importingId = null;
23900
24168
  let actions = [];
23901
24169
  const updateImportActions = () => {
@@ -23944,7 +24212,7 @@ ${error51.stderrTail}`] : []
23944
24212
  status.focus();
23945
24213
  }
23946
24214
  };
23947
- const renderOpenRecovery = (candidate, threadId) => {
24215
+ const renderOpenRecovery = (candidate, threadId, hostId) => {
23948
24216
  actions = [];
23949
24217
  refresh.disabled = false;
23950
24218
  const recovery = document2.createElement("section");
@@ -24010,12 +24278,12 @@ ${error51.stderrTail}`] : []
24010
24278
  retry.addEventListener("click", () => {
24011
24279
  if (retry.disabled) return;
24012
24280
  setRetrying(true);
24013
- void context.runLatest((signal) => openImportedThread(threadId, signal), {
24281
+ void context.runLatest((signal) => openImportedThread(threadId, signal, hostId), {
24014
24282
  success() {
24015
24283
  setRetrying(false);
24016
24284
  },
24017
24285
  failure() {
24018
- renderOpenRecovery(candidate, threadId);
24286
+ renderOpenRecovery(candidate, threadId, hostId);
24019
24287
  }
24020
24288
  });
24021
24289
  });
@@ -24092,7 +24360,7 @@ ${error51.stderrTail}`] : []
24092
24360
  if (candidate.running === true || importingId !== null || selectedHarness === null)
24093
24361
  return;
24094
24362
  const harnessId = selectedHarness;
24095
- const client = getClient();
24363
+ const client = loadedClient;
24096
24364
  if (!client) {
24097
24365
  renderUnavailable(true);
24098
24366
  return;
@@ -24108,7 +24376,9 @@ ${error51.stderrTail}`] : []
24108
24376
  nativeSessionId: candidate.nativeSessionId
24109
24377
  });
24110
24378
  committedThreadId = result.threadId;
24111
- if (!signal.aborted) await openImportedThread(result.threadId, signal);
24379
+ if (!signal.aborted) {
24380
+ await openImportedThread(result.threadId, signal, client.hostId);
24381
+ }
24112
24382
  },
24113
24383
  {
24114
24384
  success() {
@@ -24121,7 +24391,7 @@ ${error51.stderrTail}`] : []
24121
24391
  updateImportActions();
24122
24392
  refresh.disabled = false;
24123
24393
  if (committedThreadId) {
24124
- renderOpenRecovery(candidate, committedThreadId);
24394
+ renderOpenRecovery(candidate, committedThreadId, client.hostId);
24125
24395
  } else {
24126
24396
  renderFailure(error51, "import");
24127
24397
  }
@@ -24139,6 +24409,7 @@ ${error51.stderrTail}`] : []
24139
24409
  };
24140
24410
  const load = () => {
24141
24411
  if (importingId !== null || context.signal.aborted) return;
24412
+ loadedClient = null;
24142
24413
  const client = getClient();
24143
24414
  if (!client) {
24144
24415
  refresh.disabled = false;
@@ -24168,6 +24439,7 @@ ${error51.stderrTail}`] : []
24168
24439
  },
24169
24440
  {
24170
24441
  success(result) {
24442
+ loadedClient = client;
24171
24443
  listControls.setBusy(false);
24172
24444
  if (listControls.setTotal(result.total)) {
24173
24445
  load();
@@ -24180,6 +24452,7 @@ ${error51.stderrTail}`] : []
24180
24452
  else renderCandidates();
24181
24453
  },
24182
24454
  failure(error51) {
24455
+ loadedClient = null;
24183
24456
  listControls.setBusy(false);
24184
24457
  candidates = [];
24185
24458
  refresh.disabled = false;
@@ -25025,8 +25298,8 @@ ${error51.stderrTail}`] : []
25025
25298
  copy.append(heading, description);
25026
25299
  const add = document2.createElement("button");
25027
25300
  add.type = "button";
25028
- add.className = "settings-command-button";
25029
- add.append(createRendererSettingsIcon("add", 16), messages.accountAdd);
25301
+ add.className = "settings-command-button settings-command-button--secondary";
25302
+ add.append(createRendererSettingsIcon("add", 15), messages.accountAdd);
25030
25303
  header.append(copy, add);
25031
25304
  const status = document2.createElement("p");
25032
25305
  status.className = "settings-account-status";
@@ -26080,10 +26353,10 @@ ${error51.stderrTail}`] : []
26080
26353
  }
26081
26354
 
26082
26355
  // src/settings/shell.css
26083
- var shell_default = ':host {\n /* Inherit Codex Desktop color-scheme; light-dark() tracks the host page. */\n --settings-bg: light-dark(#ffffff, #181818);\n --settings-sidebar: light-dark(#f4f4f5, #1c1c1c);\n --settings-panel: transparent;\n --settings-text: light-dark(#171717, #f5f5f5);\n --settings-muted: light-dark(#737373, #a1a1a1);\n --settings-subtle: light-dark(#8a8a8a, #777777);\n --settings-border: light-dark(rgb(15 23 42 / 10%), rgb(255 255 255 / 10%));\n --settings-divider: light-dark(rgb(15 23 42 / 10%), rgb(255 255 255 / 10%));\n --settings-hover: light-dark(rgb(15 23 42 / 5%), rgb(255 255 255 / 6%));\n --settings-active: light-dark(rgb(51 156 255 / 14%), rgb(51 156 255 / 12%));\n --settings-focus: #339cff;\n --settings-elevated: light-dark(#ffffff, #2c2c2e);\n --settings-inset: light-dark(rgb(15 23 42 / 4%), rgb(0 0 0 / 18%));\n --settings-surface: light-dark(rgb(15 23 42 / 3%), rgb(255 255 255 / 2%));\n --settings-surface-strong: light-dark(rgb(15 23 42 / 6%), rgb(255 255 255 / 6%));\n --settings-surface-hover: light-dark(#eeeeee, #303030);\n --settings-mark: light-dark(#52525b, #d4d8de);\n --settings-dialog-shadow: light-dark(\n 0 24px 64px rgb(15 23 42 / 16%),\n 0 24px 64px rgb(0 0 0 / 38%)\n );\n --settings-backdrop: light-dark(rgb(15 23 42 / 28%), rgb(0 0 0 / 52%));\n --settings-segmented-shadow:\n 0 0 0 0.5px light-dark(rgb(15 23 42 / 6%), rgb(0 0 0 / 4%)),\n 0 3px 1px 0 light-dark(rgb(15 23 42 / 4%), rgb(0 0 0 / 4%)),\n 0 3px 8px 0 light-dark(rgb(15 23 42 / 10%), rgb(0 0 0 / 12%));\n --settings-primary: light-dark(#171717, #f4f4f4);\n --settings-primary-hover: light-dark(#2f2f2f, #ffffff);\n --settings-primary-text: light-dark(#ffffff, #171717);\n --settings-warning: light-dark(#8a5500, #f5c96a);\n --settings-warning-bg: light-dark(#fff8e6, rgb(245 201 106 / 8%));\n --settings-warning-border: light-dark(#ead8a8, rgb(245 201 106 / 24%));\n --settings-danger: light-dark(#b42318, #f87171);\n --settings-danger-bg: light-dark(#fff1f0, rgb(239 68 68 / 8%));\n --settings-danger-border: light-dark(#f3c7c3, rgb(239 68 68 / 22%));\n --settings-success: light-dark(#16784a, #4ade80);\n color: var(--settings-text);\n color-scheme: inherit;\n font:\n 13px/1.5 system-ui,\n -apple-system,\n BlinkMacSystemFont,\n "Segoe UI",\n sans-serif;\n letter-spacing: 0;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n letter-spacing: 0;\n}\n\nbutton,\ninput,\nselect {\n font: inherit;\n}\n\nbutton {\n color: inherit;\n}\n\n[hidden] {\n display: none !important;\n}\n\n.codexhost-settings-dialog {\n width: min(1120px, calc(100vw - 32px));\n height: min(780px, calc(100vh - 32px));\n max-width: none;\n max-height: none;\n margin: auto;\n padding: 0;\n overflow: hidden;\n color: var(--settings-text);\n background: var(--settings-bg);\n border: 1px solid var(--settings-border);\n border-radius: 12px;\n box-shadow: var(--settings-dialog-shadow);\n}\n\n.codexhost-settings-dialog::backdrop {\n background: var(--settings-backdrop);\n}\n\n.settings-frame,\n.settings-layout {\n width: 100%;\n height: 100%;\n min-width: 0;\n min-height: 0;\n}\n\n.settings-frame {\n display: flex;\n flex-direction: column;\n}\n\n.settings-layout {\n flex: 1;\n display: grid;\n grid-template-columns: 184px minmax(0, 1fr);\n background: var(--settings-bg);\n}\n\n.settings-sidebar {\n display: flex;\n min-width: 0;\n min-height: 0;\n flex-direction: column;\n overflow: hidden;\n background: var(--settings-sidebar);\n border-right: 1px solid var(--settings-border);\n padding-top: 14px;\n}\n\n.settings-header {\n display: flex;\n align-items: center;\n min-width: 0;\n height: 48px;\n flex: none;\n padding: 0 12px;\n border-bottom: 1px solid var(--settings-border);\n}\n\n.settings-header-actions {\n display: flex;\n align-items: center;\n flex: none;\n gap: 12px;\n margin-left: auto;\n}\n\n.settings-brand {\n display: flex;\n align-items: center;\n min-width: 0;\n gap: 7px;\n}\n\n.settings-brand__mark {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n flex: none;\n color: var(--settings-text);\n}\n\n.settings-brand__mark .codexhost-settings-icon {\n width: 24px;\n height: 24px;\n object-fit: contain;\n}\n\n.settings-brand__copy {\n display: flex;\n min-width: 0;\n align-items: baseline;\n gap: 0;\n line-height: 20px;\n}\n\n.settings-brand__name {\n overflow: hidden;\n color: var(--settings-text);\n font-size: 13px;\n font-weight: 600;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.settings-brand__title {\n margin-left: 8px;\n padding-left: 8px;\n color: var(--settings-muted);\n font-size: 13px;\n font-weight: 400;\n border-left: 1px solid var(--settings-border);\n}\n\n.settings-nav {\n display: flex;\n min-width: 0;\n min-height: 0;\n flex: 1;\n flex-direction: column;\n gap: 2px;\n padding: 0 7px 10px;\n overflow-y: auto;\n}\n\n.settings-nav-section-label {\n min-height: 28px;\n padding: 7px 9px 3px 4px;\n color: var(--settings-muted);\n font-size: 12px;\n font-weight: 600;\n line-height: 18px;\n}\n\n.settings-nav-section-label:not(:first-child) {\n margin-top: 8px;\n}\n\n.settings-nav-button {\n display: grid;\n grid-template-columns: 16px minmax(0, 1fr);\n align-items: center;\n width: 100%;\n position: relative;\n min-height: 34px;\n flex: none;\n gap: 9px;\n padding: 6px 9px;\n color: var(--settings-text);\n font-size: 14px;\n font-weight: 600;\n line-height: 21px;\n text-align: left;\n background: transparent;\n border: 0;\n border-radius: 8px;\n cursor: pointer;\n}\n\n.settings-nav-button .codexhost-settings-icon {\n width: 16px;\n height: 16px;\n opacity: 0.9;\n}\n\n.settings-nav-button:hover {\n background: var(--settings-hover);\n}\n\n.settings-nav-button[aria-current="page"] {\n background: var(--settings-active);\n color: var(--settings-text);\n font-weight: 500;\n}\n\n.settings-nav-button span {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.settings-icon-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n flex: none;\n padding: 0;\n color: var(--settings-muted);\n background: transparent;\n border: 0;\n border-radius: 8px;\n cursor: pointer;\n}\n\n.settings-icon-button:hover {\n color: var(--settings-text);\n background: var(--settings-hover);\n}\n\n.settings-icon-button:focus-visible,\n.settings-nav-button:focus-visible {\n outline: 2px solid var(--settings-focus);\n outline-offset: 1px;\n}\n\n.settings-page {\n display: block;\n position: relative;\n min-width: 0;\n min-height: 0;\n overflow-y: auto;\n background: var(--settings-bg);\n scrollbar-gutter: stable;\n}\n\n.settings-page__content {\n width: min(930px, calc(100% - 80px));\n margin-inline: auto;\n}\n\n.settings-page__content {\n min-width: 0;\n padding: 28px 0 36px;\n}\n\n.settings-section-label {\n min-height: auto;\n padding: 0 0 28px;\n color: var(--settings-text);\n font-size: 18px;\n font-weight: 600;\n line-height: 26px;\n}\n\n.settings-status-list,\n.settings-empty {\n overflow: hidden;\n background: var(--settings-panel);\n}\n\n.settings-status-row {\n display: grid;\n grid-template-columns: minmax(170px, 1fr) auto minmax(280px, 1.45fr);\n position: relative;\n align-items: center;\n min-height: 72px;\n gap: 20px;\n padding: 12px 0;\n}\n\n.settings-status-row:not(:last-child)::after {\n content: "";\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 1px;\n background: var(--settings-divider);\n}\n\n.settings-status-row__identity {\n display: inline-flex;\n align-items: center;\n min-width: 0;\n color: var(--settings-text);\n gap: 10px;\n font-size: 14px;\n font-weight: 500;\n line-height: 22px;\n}\n\n.settings-status-row__icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n flex: none;\n color: var(--settings-muted);\n background: var(--settings-surface-strong);\n border-radius: 50%;\n}\n\n.settings-status-badge {\n flex: none;\n padding: 3px 8px;\n color: var(--settings-muted);\n font-size: 11px;\n font-weight: 500;\n line-height: 18px;\n background: var(--settings-surface-strong);\n border: 1px solid var(--settings-border);\n border-radius: 6px;\n}\n\n.settings-status-row__detail {\n min-width: 0;\n color: var(--settings-muted);\n font-size: 13px;\n line-height: 20px;\n}\n\n.settings-page-description {\n max-width: 760px;\n margin: -10px 0 20px;\n color: var(--settings-muted);\n font-size: 12px;\n line-height: 18px;\n}\n\n.settings-session-import-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 24px;\n}\n\n.settings-session-import-header .settings-section-label {\n min-width: 0;\n}\n\n.settings-session-import-harness {\n display: flex;\n min-width: 0;\n margin: 0 0 16px;\n}\n\n.settings-session-import-harness__options {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n width: fit-content;\n max-width: 100%;\n gap: 8px;\n}\n\n.settings-session-import-harness__option {\n min-height: 32px;\n flex: none;\n padding: 6px 10px;\n color: var(--settings-muted);\n font: inherit;\n font-size: 12px;\n white-space: nowrap;\n background: transparent;\n border: 1px solid var(--settings-border);\n border-radius: 6px;\n cursor: pointer;\n}\n\n.settings-session-import-harness__option[aria-pressed="true"] {\n color: var(--settings-text);\n background: var(--settings-active);\n border-color: rgb(51 156 255 / 50%);\n}\n\n.settings-session-import-harness__option:disabled {\n opacity: 0.38;\n cursor: not-allowed;\n}\n\n.settings-session-import-harness__option:focus-visible {\n outline: 2px solid var(--settings-focus);\n outline-offset: 2px;\n}\n\n.settings-session-import-search,\n.settings-session-import-pagination {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 10px;\n}\n\n.settings-session-import-search {\n align-items: stretch;\n margin: 16px 0 0;\n}\n\n.settings-session-import-pagination {\n margin: 16px 0 0;\n}\n\n.settings-session-import-search input {\n flex: 1;\n min-width: 160px;\n}\n\n.settings-session-import-search input,\n.settings-session-import-pagination select {\n box-sizing: border-box;\n color: var(--settings-text);\n background: var(--settings-bg);\n border: 1px solid var(--settings-border);\n border-radius: 6px;\n}\n\n.settings-session-import-search input,\n.settings-session-import-search .settings-command-button {\n box-sizing: border-box;\n height: 36px;\n min-height: 36px;\n padding: 6px 10px;\n border-radius: 6px;\n}\n\n.settings-session-import-pagination select {\n min-height: 28px;\n padding: 2px 8px;\n}\n\n.settings-session-import-search input:focus-visible,\n.settings-session-import-pagination select:focus-visible {\n outline: 2px solid var(--settings-focus);\n outline-offset: 2px;\n}\n\n.settings-session-import-pagination {\n color: var(--settings-muted);\n font-size: 12px;\n line-height: 18px;\n}\n\n.settings-session-import-pagination label {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.settings-session-import-pagination > span {\n flex: none;\n min-width: 0;\n}\n\n.settings-session-import-pagination__navigation {\n display: flex;\n gap: 8px;\n margin-left: auto;\n}\n\n.settings-session-import-content,\n.settings-session-import-list {\n display: grid;\n gap: 10px;\n}\n\n.settings-session-import-content {\n margin-top: 16px;\n}\n\n.settings-session-import-status {\n display: flex;\n align-items: center;\n min-height: 0;\n gap: 12px;\n padding: 12px 16px;\n color: var(--settings-muted);\n background: var(--settings-panel);\n border: 1px solid var(--settings-border);\n border-radius: 8px;\n}\n\n.settings-session-import-status.is-error {\n color: #ef4444;\n}\n\n.settings-session-import-recovery {\n display: grid;\n justify-items: start;\n gap: 14px;\n padding: 16px;\n background: var(--settings-panel);\n border: 1px solid var(--settings-border);\n border-radius: 8px;\n}\n\n.settings-session-import-recovery:focus-visible {\n outline: 2px solid var(--settings-focus);\n outline-offset: 2px;\n}\n\n.settings-session-import-recovery__copy {\n display: grid;\n gap: 4px;\n}\n\n.settings-session-import-recovery__copy strong {\n color: var(--settings-text);\n font-size: 14px;\n}\n\n.settings-session-import-recovery__copy p {\n margin: 0;\n color: var(--settings-muted);\n font-size: 13px;\n line-height: 20px;\n}\n\n.settings-session-import-recovery__path {\n display: flex;\n align-items: stretch;\n width: 100%;\n min-width: 0;\n overflow: hidden;\n border: 1px solid var(--settings-border);\n border-radius: 6px;\n}\n\n.settings-session-import-recovery__path code {\n min-width: 0;\n flex: 1;\n padding: 8px 10px;\n overflow-x: auto;\n color: var(--settings-text);\n font-size: 12px;\n line-height: 20px;\n white-space: nowrap;\n}\n\n.settings-session-import-recovery__path .settings-command-button {\n min-height: 0;\n flex: none;\n border-width: 0 0 0 1px;\n border-radius: 0;\n}\n\n.settings-session-import-row {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: center;\n gap: 20px;\n min-width: 0;\n padding: 16px;\n background: var(--settings-panel);\n border: 1px solid var(--settings-border);\n border-radius: 8px;\n}\n\n.settings-session-import-row__copy {\n display: grid;\n min-width: 0;\n gap: 4px;\n}\n\n.settings-session-import-row__copy strong {\n overflow: hidden;\n color: var(--settings-text);\n font-size: 14px;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.settings-session-import-row__copy span,\n.settings-session-import-row__cwd {\n overflow: hidden;\n color: var(--settings-muted);\n font-size: 12px;\n line-height: 18px;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.settings-session-import-row__cwd {\n display: block;\n min-width: 0;\n background: transparent;\n}\n\n.settings-session-import-row__action {\n display: flex;\n align-items: flex-end;\n flex-direction: column;\n gap: 8px;\n}\n\n.settings-session-import-running {\n color: var(--settings-muted);\n font-size: 12px;\n}\n\n.settings-preference-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 32px;\n min-height: 88px;\n padding: 18px 0;\n border-top: 1px solid var(--settings-divider);\n border-bottom: 1px solid var(--settings-divider);\n}\n\n.settings-preference-row__copy {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n min-width: 0;\n gap: 5px;\n}\n\n.settings-preference-row__copy strong {\n color: var(--settings-text);\n font-size: 15px;\n font-weight: 600;\n line-height: 22px;\n}\n\n.settings-preference-row__copy span {\n max-width: 680px;\n color: var(--settings-muted);\n font-size: 13px;\n line-height: 20px;\n}\n\n.settings-preference-switch {\n display: inline-flex;\n align-items: center;\n width: 42px;\n height: 24px;\n flex: none;\n padding: 2px;\n border: 0;\n border-radius: 999px;\n background: var(--settings-surface-strong);\n cursor: pointer;\n transition: background 120ms ease;\n}\n\n.settings-preference-switch[aria-checked="true"] {\n justify-content: flex-end;\n background: var(--settings-focus);\n}\n\n.settings-preference-switch:focus-visible {\n outline: 2px solid var(--settings-focus);\n outline-offset: 2px;\n}\n\n.settings-preference-switch__thumb {\n width: 20px;\n height: 20px;\n border-radius: 50%;\n background: var(--settings-primary-text);\n box-shadow: 0 1px 3px rgb(0 0 0 / 24%);\n}\n\n.settings-connection-page-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 18px;\n margin-bottom: 18px;\n}\n\n.settings-connection-page-header .settings-section-label {\n padding-bottom: 0;\n}\n\n.settings-connection-page-header .settings-page-description {\n margin: 8px 0 0;\n}\n\n.settings-connection-page-header .settings-page-description + .settings-page-description {\n margin-top: 8px;\n}\n\n.settings-update-header {\n margin-bottom: 8px;\n}\n\n.settings-connections-content,\n.settings-plugins-content,\n.settings-connection-list,\n.settings-connection-rows {\n min-width: 0;\n}\n\n.settings-connections-content,\n.settings-plugins-content {\n display: grid;\n gap: 12px;\n}\n\n.settings-connection-list {\n overflow: hidden;\n background: var(--settings-surface);\n border: 1px solid var(--settings-border);\n border-radius: 10px;\n}\n\n.settings-segmented {\n display: inline-flex;\n flex-wrap: wrap;\n align-items: center;\n width: fit-content;\n max-width: 100%;\n padding: 2px;\n gap: 3px;\n background: var(--settings-surface-strong);\n border-radius: 10px;\n}\n\n.settings-segmented__item {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-height: 28px;\n padding: 4px 14px;\n color: var(--settings-muted);\n font: inherit;\n font-size: 12px;\n font-weight: 600;\n line-height: 18px;\n white-space: nowrap;\n background: transparent;\n border: 0;\n border-radius: 8px;\n cursor: pointer;\n transition:\n color 0.15s ease,\n background-color 0.15s ease,\n box-shadow 0.15s ease;\n}\n\n.settings-segmented__item:hover {\n color: var(--settings-text);\n background: var(--settings-hover);\n}\n\n.settings-segmented__item--selected,\n.settings-segmented__item[aria-selected="true"],\n.settings-segmented__item[aria-pressed="true"] {\n color: var(--settings-text);\n background: var(--settings-elevated);\n box-shadow: var(--settings-segmented-shadow);\n}\n\n.settings-segmented__item:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.settings-segmented__item:disabled:hover {\n color: var(--settings-muted);\n background: transparent;\n}\n\n.settings-segmented__item:focus-visible,\n.settings-connection-row:focus-visible,\n.settings-connection-install-link:focus-visible,\n.settings-connection-view-error:focus-visible {\n outline: 2px solid var(--settings-focus);\n outline-offset: 1px;\n}\n\n\n.settings-connection-host-tabs {\n display: flex;\n align-items: center;\n min-width: 0;\n gap: 6px;\n overflow-x: auto;\n overflow-y: hidden;\n overscroll-behavior-x: contain;\n scrollbar-width: none;\n scroll-behavior: smooth;\n scroll-snap-type: x proximity;\n touch-action: pan-x;\n}\n\n.settings-connection-host-tabs::-webkit-scrollbar {\n display: none;\n}\n\n.settings-connection-host-tab {\n display: inline-flex;\n align-items: center;\n height: 30px;\n min-width: max-content;\n flex: none;\n padding: 0 9px;\n color: var(--settings-muted);\n font: inherit;\n font-size: 12px;\n line-height: 18px;\n white-space: nowrap;\n background: var(--settings-inset);\n border: 1px solid var(--settings-border);\n border-radius: 7px;\n cursor: pointer;\n scroll-snap-align: start;\n}\n\n.settings-connection-host-tab:hover {\n color: var(--settings-text);\n background: var(--settings-hover);\n}\n\n.settings-connection-host-tab[aria-selected="true"] {\n color: var(--settings-text);\n font-weight: 600;\n background: var(--settings-active);\n border-color: var(--settings-border);\n}\n\n.settings-connection-table-header,\n.settings-connection-row {\n display: grid;\n /* Component : Status : Actions = 4 : 3 : 3 */\n grid-template-columns: minmax(0, 4fr) minmax(0, 3fr) minmax(0, 3fr);\n align-items: center;\n min-width: 0;\n column-gap: 16px;\n}\n\n.settings-connection-table-header {\n min-height: 30px;\n padding: 0 10px;\n color: var(--settings-muted);\n font-size: 10px;\n font-weight: 600;\n line-height: 16px;\n text-transform: uppercase;\n letter-spacing: 0.06em;\n background: var(--settings-surface);\n border-bottom: 1px solid var(--settings-divider);\n}\n\n.settings-connection-rows > .settings-connection-row,\n.settings-connection-rows > .settings-connection-block {\n border-bottom: 1px solid var(--settings-divider);\n}\n\n.settings-connection-rows > .settings-connection-row:last-child,\n.settings-connection-rows > .settings-connection-block:last-child {\n border-bottom: 0;\n}\n\n.settings-connection-row {\n min-height: 52px;\n padding: 8px 10px;\n cursor: pointer;\n}\n\n.settings-connection-row:hover {\n background: var(--settings-hover);\n}\n\n.settings-connection-row[data-connection-selected="true"] {\n background: var(--settings-surface);\n}\n\n.settings-connection-row__identity,\n.settings-connection-inspector__identity {\n display: inline-flex;\n align-items: center;\n min-width: 0;\n gap: 8px;\n color: var(--settings-text);\n}\n\n.settings-connection-row__identity strong,\n.settings-connection-inspector__identity strong {\n min-width: 0;\n overflow-wrap: anywhere;\n font-size: 12px;\n font-weight: 500;\n line-height: 18px;\n}\n\n.settings-connection-row__mark {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n flex: none;\n color: var(--settings-mark);\n font-size: 10px;\n font-weight: 700;\n background: var(--settings-surface-strong);\n border-radius: 7px;\n}\n\n.settings-connection-row__mark--logo {\n color: var(--settings-text);\n background: transparent;\n}\n\n.settings-connection-row__mark--logo > img,\n.settings-connection-row__mark--logo > svg {\n display: block;\n max-width: 18px;\n max-height: 18px;\n}\n\n.settings-connection-table-header > :last-child {\n text-align: end;\n}\n\n.settings-connection-row__status {\n display: inline-flex;\n align-items: center;\n width: fit-content;\n max-width: 100%;\n gap: 6px;\n color: var(--settings-muted);\n font-size: 11px;\n font-weight: 500;\n line-height: 18px;\n}\n\n.settings-connection-row__status::before {\n width: 6px;\n height: 6px;\n flex: none;\n content: "";\n background: currentColor;\n border-radius: 50%;\n}\n\n.settings-connection-row__status[data-connection-tone="ready"] {\n color: var(--settings-success);\n}\n\n.settings-connection-row__status[data-connection-tone="checking"] {\n color: var(--settings-warning);\n}\n\n.settings-connection-row__status[data-connection-tone="setup"] {\n color: var(--settings-muted);\n}\n\n.settings-connection-row__status[data-connection-tone="setup"]::before {\n background: transparent;\n border: 1.5px solid currentColor;\n}\n\n.settings-connection-row__status[data-connection-tone="failed"] {\n color: var(--settings-danger);\n}\n\n.settings-connection-row__action {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n min-width: 0;\n gap: 4px;\n}\n\n.settings-connection-row__handle {\n display: inline-flex;\n flex: none;\n align-items: center;\n justify-content: center;\n width: 16px;\n color: var(--settings-muted);\n cursor: grab;\n opacity: 0.6;\n}\n\n.settings-connection-row__handle:hover {\n opacity: 1;\n}\n\n.settings-connection-row[draggable="true"] {\n cursor: grab;\n}\n\n.settings-connection-row[data-connection-dragging="true"] {\n opacity: 0.4;\n}\n\n.settings-connection-row[data-connection-drop-indicator="before"] {\n box-shadow: inset 0 2px 0 0 var(--settings-focus);\n}\n\n.settings-connection-row[data-connection-drop-indicator="after"] {\n box-shadow: inset 0 -2px 0 0 var(--settings-focus);\n}\n\n.settings-connection-inline-detail {\n display: grid;\n gap: 12px;\n margin-top: 2px;\n padding: 14px 12px 16px;\n border-top: 1px solid var(--settings-divider);\n background: var(--settings-inset);\n}\n\n.settings-connection-group-divider {\n padding: 10px 12px 6px;\n color: var(--settings-muted);\n font-size: 10px;\n font-weight: 600;\n line-height: 16px;\n text-transform: uppercase;\n letter-spacing: 0.06em;\n /* No border-top here: the row immediately above already carries its own\n border-bottom (it is no longer :last-child once this divider follows\n it), so adding one here would double the separator line. */\n}\n\n.settings-connection-group-divider[data-connection-drag-over="true"] {\n color: var(--settings-focus);\n background: rgb(51 156 255 / 8%);\n border-radius: 6px;\n}\n\n.settings-connection-group-more[data-connection-drag-over="true"] {\n background: rgb(51 156 255 / 8%);\n}\n\n.settings-connection-group-hint {\n display: grid;\n gap: 3px;\n margin: 0 12px 12px;\n padding: 14px 16px;\n text-align: center;\n border: 1.5px dashed var(--settings-border);\n border-radius: 10px;\n}\n\n.settings-connection-group-more[data-connection-drag-over="true"] .settings-connection-group-hint {\n border-color: var(--settings-focus);\n}\n\n.settings-connection-group-hint strong {\n color: var(--settings-text);\n font-size: 12.5px;\n font-weight: 500;\n line-height: 18px;\n}\n\n.settings-connection-group-hint span {\n color: var(--settings-muted);\n font-size: 12px;\n line-height: 17px;\n}\n\n.settings-connection-group-reset {\n display: flex;\n width: 100%;\n align-items: center;\n gap: 6px;\n padding: 10px 12px;\n color: var(--settings-muted);\n font: inherit;\n font-size: 12px;\n text-align: left;\n background: transparent;\n border: 0;\n border-top: 1px solid var(--settings-divider);\n cursor: pointer;\n}\n\n.settings-connection-group-reset:hover {\n color: var(--settings-text);\n background: var(--settings-hover);\n}\n\n.settings-connection-install-link {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n color: var(--settings-focus);\n text-decoration: none;\n background: transparent;\n border: 1px solid transparent;\n border-radius: 7px;\n opacity: 0;\n transition: opacity 120ms ease;\n}\n\n.settings-connection-row:hover .settings-connection-install-link,\n.settings-connection-install-link:focus-visible {\n opacity: 1;\n}\n\n.settings-connection-install-link:hover {\n color: var(--settings-focus);\n background: var(--settings-active);\n border-color: var(--settings-border);\n}\n\n.settings-connection-view-error {\n padding: 4px 7px;\n color: var(--settings-danger);\n font: inherit;\n font-size: 11px;\n line-height: 18px;\n background: transparent;\n border: 0;\n border-radius: 6px;\n cursor: pointer;\n}\n\n.settings-connection-view-error:hover {\n color: var(--settings-danger);\n background: var(--settings-danger-bg);\n}\n\n.settings-connection-inspector {\n position: sticky;\n top: 18px;\n}\n\n.settings-connection-inspector__header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n min-width: 0;\n gap: 10px;\n padding: 12px;\n border-bottom: 1px solid var(--settings-divider);\n}\n\n.settings-connection-inspector__body {\n display: grid;\n min-width: 0;\n gap: 12px;\n padding: 12px;\n}\n\n.settings-connection-install-callout {\n display: grid;\n grid-template-columns: 28px minmax(0, 1fr);\n gap: 9px;\n padding: 11px;\n background: var(--settings-surface);\n border: 0;\n border-radius: 8px;\n}\n\n.settings-connection-install-callout__icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n color: var(--settings-focus);\n background: var(--settings-active);\n border-radius: 7px;\n}\n\n.settings-connection-install-callout strong,\n.settings-connection-error-summary strong,\n.settings-connection-state-summary strong {\n display: block;\n margin: 0 0 4px;\n color: var(--settings-text);\n font-size: 12px;\n font-weight: 500;\n line-height: 18px;\n}\n\n.settings-connection-install-callout p,\n.settings-connection-error-summary p,\n.settings-connection-state-summary p,\n.settings-connection-issue-note {\n margin: 0;\n color: var(--settings-muted);\n font-size: 11px;\n line-height: 16px;\n}\n\n.settings-connection-install-button {\n width: fit-content;\n}\n\n.settings-connection-error-summary {\n padding: 13px 14px;\n color: var(--settings-danger);\n background: var(--settings-danger-bg);\n border: 1px solid var(--settings-danger-border);\n border-radius: 10px;\n}\n\n.settings-connection-error-metadata {\n display: grid;\n gap: 7px;\n padding: 12px;\n background: var(--settings-inset);\n border: 1px solid var(--settings-border);\n border-radius: 9px;\n}\n\n.settings-connection-detail-line {\n display: grid;\n grid-template-columns: 92px minmax(0, 1fr);\n gap: 10px;\n min-width: 0;\n color: var(--settings-muted);\n font-size: 10px;\n line-height: 16px;\n}\n\n.settings-connection-detail-line code {\n min-width: 0;\n overflow-wrap: anywhere;\n color: var(--settings-text);\n font-family: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace;\n white-space: pre-wrap;\n}\n\n.settings-connection-error-log-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 10px;\n}\n\n.settings-connection-error-log-header strong {\n color: var(--settings-text);\n font-size: 11px;\n font-weight: 600;\n}\n\n.settings-connection-error-log-header .settings-command-button {\n min-height: 30px;\n padding: 5px 9px;\n font-size: 11px;\n}\n\n.settings-connection-stderr {\n max-height: 220px;\n min-width: 0;\n margin: 0;\n padding: 11px;\n overflow: auto;\n color: var(--settings-text);\n font:\n 10px/16px ui-monospace,\n "SFMono-Regular",\n Consolas,\n "Liberation Mono",\n monospace;\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n background: var(--settings-inset);\n border: 1px solid var(--settings-border);\n border-radius: 9px;\n}\n\n.settings-connection-error-actions {\n display: grid;\n grid-template-columns: minmax(0, 1fr);\n gap: 8px;\n}\n\n.settings-connection-error-actions .settings-command-button {\n width: 100%;\n}\n\n.settings-connection-issue-note {\n margin-top: -4px;\n}\n\n.settings-connection-state-summary {\n padding: 14px;\n background: var(--settings-surface);\n border: 1px solid var(--settings-border);\n border-radius: 10px;\n}\n\n.settings-empty {\n display: flex;\n align-items: center;\n min-height: 72px;\n padding: 12px 16px;\n}\n\n.settings-empty > div {\n display: grid;\n min-width: 0;\n gap: 2px;\n}\n\n.settings-empty strong {\n color: var(--settings-text);\n font-size: 13px;\n font-weight: 500;\n line-height: 19px;\n}\n\n.settings-empty span {\n color: var(--settings-muted);\n font-size: 13px;\n line-height: 19px;\n}\n\n.settings-about-page {\n display: flex;\n flex-direction: column;\n gap: 18px;\n box-sizing: border-box;\n min-height: min(620px, calc(100vh - 200px));\n max-width: 720px;\n}\n\n.settings-about-page > .settings-section-label {\n padding-bottom: 10px;\n}\n\n.settings-about-panel {\n display: grid;\n gap: 18px;\n padding: 24px;\n background: var(--settings-panel);\n border: 1px solid var(--settings-border);\n border-radius: 12px;\n}\n\n.settings-about-product {\n color: var(--settings-text);\n font-size: 24px;\n font-weight: 700;\n line-height: 32px;\n}\n\n.settings-about-tagline {\n color: var(--settings-text);\n font-size: 16px;\n font-weight: 600;\n line-height: 24px;\n}\n\n.settings-about-copy {\n display: grid;\n max-width: 660px;\n gap: 12px;\n}\n\n.settings-about-lead,\n.settings-about-extension,\n.settings-about-closing p,\n.settings-about-copy p {\n margin: 0;\n color: var(--settings-muted);\n font-size: 13px;\n line-height: 21px;\n}\n\n.settings-about-lead {\n color: var(--settings-text);\n font-weight: 500;\n}\n\n.settings-about-agents {\n display: grid;\n gap: 10px;\n margin: 2px 0;\n padding: 0;\n list-style: none;\n}\n\n.settings-about-agent {\n display: grid;\n gap: 4px;\n padding-left: 2px;\n}\n\n.settings-about-agent-name {\n color: var(--settings-text);\n font-size: 13px;\n font-weight: 600;\n line-height: 18px;\n}\n\n.settings-about-agent-name::before {\n content: "\xB7 ";\n color: var(--settings-muted);\n font-weight: 600;\n}\n\n.settings-about-agent-description {\n display: block;\n padding-left: 0.85em;\n color: var(--settings-muted);\n font-size: 12px;\n font-weight: 400;\n line-height: 18px;\n}\n\n.settings-about-closing {\n display: grid;\n gap: 8px;\n}\n\n.settings-about-repository {\n gap: 10px;\n}\n\n.settings-about-open-source {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 0.35em;\n margin: 0;\n color: var(--settings-muted);\n font-size: 13px;\n line-height: 21px;\n}\n\n.settings-about-repository p {\n margin: 0;\n color: var(--settings-muted);\n font-size: 13px;\n line-height: 21px;\n}\n\n.settings-about-star-callout {\n margin: 4px 0 0;\n color: var(--settings-warning);\n font-size: 14px;\n font-weight: 600;\n line-height: 22px;\n}\n\n.settings-about-repository-link {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n color: #7cb8ff;\n font-weight: 600;\n line-height: 1;\n text-decoration: none;\n}\n\n.settings-about-repository-link .codexhost-settings-icon {\n display: block;\n flex: none;\n}\n\n.settings-about-repository-link:hover {\n text-decoration: underline;\n}\n\n.settings-about-brand {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 12px;\n margin-top: auto;\n padding-top: 12px;\n color: inherit;\n opacity: 0.9;\n text-decoration: none;\n transition: opacity 160ms ease;\n}\n\n.settings-about-brand:hover {\n opacity: 1;\n}\n\n.settings-about-brand-video {\n width: 40px;\n height: 40px;\n flex: none;\n overflow: hidden;\n object-fit: cover;\n border-radius: 999px;\n box-shadow: 0 1px 2px rgb(0 0 0 / 18%);\n}\n\n.settings-about-brand-copy {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 2px;\n}\n\n.settings-about-brand-name {\n color: var(--settings-text);\n font-size: 14px;\n font-weight: 800;\n letter-spacing: 0.18em;\n line-height: 18px;\n}\n\n.settings-about-brand-tagline {\n color: var(--settings-muted);\n font-size: 12px;\n font-weight: 500;\n letter-spacing: 0.18em;\n line-height: 16px;\n}\n\n.settings-page-error {\n padding: 16px;\n color: var(--settings-text);\n font-size: 13px;\n background: var(--settings-panel);\n border: 1px solid var(--settings-border);\n border-radius: 20px;\n}\n\n.settings-update-metadata {\n display: grid;\n grid-template-columns: repeat(3, minmax(0, 1fr));\n gap: 24px;\n margin-bottom: 24px;\n padding: 0 0 20px;\n border-bottom: 1px solid var(--settings-divider);\n}\n\n.settings-update-metadata__item {\n display: grid;\n min-width: 0;\n gap: 4px;\n}\n\n.settings-update-metadata__item span {\n color: var(--settings-muted);\n font-size: 12px;\n line-height: 18px;\n}\n\n.settings-update-metadata__item strong {\n min-width: 0;\n overflow-wrap: anywhere;\n color: var(--settings-text);\n font-size: 15px;\n font-weight: 500;\n line-height: 22px;\n}\n\n/* The only emphasis on this screen: a latest version newer than the installed one. */\n.settings-update-metadata__value--newer {\n color: var(--settings-focus);\n}\n\n.settings-update-panel {\n display: grid;\n gap: 12px;\n padding: 20px;\n color: var(--settings-text);\n background: var(--settings-panel);\n border: 1px solid var(--settings-border);\n border-radius: 8px;\n}\n\n/* Soft status copy and the Update action should not sit in a framed card. */\n.settings-update-panel[data-update-state="unavailable"],\n.settings-update-panel[data-update-state="failed"],\n.settings-update-panel[data-update-state="error"],\n.settings-update-panel[data-update-state="available"] {\n padding: 4px 0 0;\n border: 0;\n border-radius: 0;\n}\n\n.settings-update-panel__status-row {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 8px;\n min-width: 0;\n}\n\n.settings-update-panel__status-row .settings-update-actions {\n flex: none;\n}\n\n.settings-update-panel__status-row .settings-update-panel__head {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n.settings-update-panel__head {\n display: flex;\n align-items: center;\n min-width: 0;\n gap: 8px;\n}\n\n.settings-update-panel__head .codexhost-settings-icon {\n color: var(--settings-muted);\n}\n\n.settings-update-panel[data-update-state="available"]\n .settings-update-panel__head\n .codexhost-settings-icon,\n.settings-update-panel[data-update-state="downloading"]\n .settings-update-panel__head\n .codexhost-settings-icon,\n.settings-update-panel[data-update-state="installing"]\n .settings-update-panel__head\n .codexhost-settings-icon,\n.settings-update-panel[data-update-state="restarting"]\n .settings-update-panel__head\n .codexhost-settings-icon {\n color: var(--settings-focus);\n}\n\n.settings-update-panel[data-update-state="current"]\n .settings-update-panel__head\n .codexhost-settings-icon {\n color: var(--settings-success);\n}\n\n.settings-update-panel[data-update-state="failed"]\n .settings-update-panel__head\n .codexhost-settings-icon,\n.settings-update-panel[data-update-state="error"]\n .settings-update-panel__head\n .codexhost-settings-icon {\n color: var(--settings-danger);\n}\n\n.settings-update-panel[data-update-state="unavailable"]\n .settings-update-panel__head\n .codexhost-settings-icon {\n color: var(--settings-muted);\n}\n\n.settings-update-panel__title {\n min-width: 0;\n overflow-wrap: anywhere;\n color: var(--settings-text);\n font-size: 14px;\n font-weight: 600;\n line-height: 22px;\n}\n\n.settings-update-summary,\n.settings-update-error {\n margin: 0;\n overflow-wrap: anywhere;\n font-size: 13px;\n line-height: 20px;\n}\n\n.settings-update-summary {\n color: var(--settings-muted);\n}\n\n.settings-update-error {\n color: var(--settings-danger);\n}\n\n.settings-update-progress {\n width: 100%;\n height: 8px;\n accent-color: var(--settings-focus);\n}\n\n.settings-update-progress-detail {\n color: var(--settings-muted);\n font-size: 12px;\n line-height: 18px;\n}\n\n/* Release notes scroll with the page; a scroller inside a scroller traps the wheel. */\n.settings-update-notes-section {\n min-width: 0;\n margin-top: 24px;\n padding-top: 24px;\n border-top: 1px solid var(--settings-divider);\n}\n\n.settings-update-notes-section:empty {\n display: none;\n}\n\n.settings-update-notes {\n display: grid;\n min-width: 0;\n gap: 12px;\n color: var(--settings-muted);\n font-size: 14px;\n line-height: 22px;\n overflow-wrap: anywhere;\n}\n\n.settings-update-notes > :first-child {\n margin-top: 0;\n}\n\n.settings-update-notes > :last-child {\n margin-bottom: 0;\n}\n\n.settings-update-notes h1,\n.settings-update-notes h2,\n.settings-update-notes h3,\n.settings-update-notes h4,\n.settings-update-notes h5,\n.settings-update-notes h6 {\n margin: 6px 0 0;\n color: var(--settings-text);\n font-weight: 600;\n}\n\n.settings-update-notes h1 {\n font-size: 18px;\n line-height: 26px;\n}\n\n.settings-update-notes h2 {\n font-size: 17px;\n line-height: 24px;\n}\n\n.settings-update-notes h3,\n.settings-update-notes h4,\n.settings-update-notes h5,\n.settings-update-notes h6 {\n font-size: 14px;\n line-height: 22px;\n}\n\n.settings-update-notes p,\n.settings-update-notes ul,\n.settings-update-notes ol,\n.settings-update-notes pre,\n.settings-update-notes blockquote {\n margin: 0;\n}\n\n.settings-update-notes ul,\n.settings-update-notes ol {\n padding-left: 24px;\n}\n\n.settings-update-notes li {\n padding-left: 4px;\n}\n\n.settings-update-notes li::marker {\n color: var(--settings-muted);\n font-size: 0.85em;\n}\n\n.settings-update-notes li + li {\n margin-top: 14px;\n}\n\n.settings-update-notes .release-note-translation {\n display: block;\n margin-top: 3px;\n color: var(--settings-muted);\n font-size: 13px;\n line-height: 20px;\n}\n\n.settings-update-notes blockquote {\n padding: 8px 12px;\n color: var(--settings-muted);\n border-left: 3px solid var(--settings-focus);\n background: var(--settings-surface);\n}\n\n.settings-update-notes hr {\n width: 100%;\n margin: 2px 0;\n border: 0;\n border-top: 1px solid var(--settings-divider);\n}\n\n.settings-update-notes strong {\n color: var(--settings-text);\n font-weight: 600;\n}\n\n.settings-update-notes a {\n color: var(--settings-focus);\n text-decoration: none;\n}\n\n.settings-update-notes a:hover {\n text-decoration: underline;\n}\n\n.settings-update-notes code {\n font-family: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace;\n font-size: 12px;\n}\n\n.settings-update-notes :not(pre) > code {\n padding: 1px 5px;\n background: var(--settings-surface-strong);\n border-radius: 4px;\n}\n\n.settings-update-notes pre {\n min-width: 0;\n max-width: 100%;\n padding: 10px 12px;\n overflow-x: auto;\n overflow-y: hidden;\n background: var(--settings-inset);\n border-radius: 6px;\n}\n\n.settings-update-notes pre code {\n line-height: 18px;\n white-space: pre-wrap;\n}\n\n/* Manual update sits directly under the status panel, not behind a disclosure:\n automatic updates can fail for machine-local reasons and this is the way out. */\n.settings-update-controls {\n display: grid;\n min-width: 0;\n gap: 10px;\n margin-top: 24px;\n}\n\n.settings-update-manual-title {\n color: var(--settings-text);\n font-size: 15px;\n font-weight: 600;\n line-height: 22px;\n}\n\n.settings-update-manual {\n display: grid;\n min-width: 0;\n gap: 8px;\n}\n\n.settings-update-manual[hidden] {\n display: none;\n}\n\n.settings-update-manual-description {\n margin: 0;\n color: var(--settings-muted);\n font-size: 12px;\n line-height: 18px;\n}\n\n.settings-update-manual-description.is-fallback {\n color: var(--settings-danger);\n}\n\n.settings-update-command {\n display: flex;\n align-items: stretch;\n min-width: 0;\n overflow: hidden;\n border: 1px solid var(--settings-border);\n border-radius: 6px;\n}\n\n.settings-update-command code {\n min-width: 0;\n flex: 1;\n padding: 9px 12px;\n overflow-x: auto;\n color: var(--settings-text);\n font-family: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace;\n font-size: 12px;\n line-height: 20px;\n white-space: nowrap;\n}\n\n.settings-update-command__copy {\n display: inline-flex;\n align-items: center;\n flex: none;\n gap: 6px;\n padding: 0 12px;\n color: var(--settings-muted);\n font-size: 12px;\n background: transparent;\n border: 0;\n border-left: 1px solid var(--settings-border);\n cursor: pointer;\n}\n\n.settings-update-command__copy:hover {\n color: var(--settings-text);\n background: var(--settings-hover);\n}\n\n.settings-update-command__copy:focus-visible {\n outline: 2px solid var(--settings-focus);\n outline-offset: -2px;\n}\n\n.settings-update-actions {\n display: flex;\n align-items: center;\n min-width: 0;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.settings-command-button,\n.settings-update-link {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: none;\n width: max-content;\n max-width: 100%;\n min-height: 30px;\n gap: 6px;\n padding: 5px 10px;\n white-space: nowrap;\n color: var(--settings-primary-text);\n font: inherit;\n font-size: 12px;\n text-decoration: none;\n background: var(--settings-primary);\n border: 1px solid var(--settings-primary);\n border-radius: 7px;\n cursor: pointer;\n}\n\n.settings-command-button--secondary,\n.settings-update-link {\n color: var(--settings-muted);\n background: transparent;\n border-color: var(--settings-border);\n}\n\n.settings-command-button--secondary .codexhost-settings-icon,\n.settings-update-link .codexhost-settings-icon {\n color: var(--settings-muted);\n}\n\n.settings-command-button:hover:not(.settings-command-button--secondary) {\n filter: brightness(1.08);\n}\n\n.settings-command-button--danger {\n color: var(--settings-danger);\n}\n\n.settings-command-button--danger:hover:not(:disabled) {\n color: #fecaca;\n background: var(--settings-danger-bg);\n border-color: var(--settings-danger-border);\n}\n\n.settings-command-button--secondary:hover,\n.settings-update-link:hover {\n color: var(--settings-text);\n background: var(--settings-hover);\n}\n\n.settings-command-button--secondary:hover .codexhost-settings-icon,\n.settings-update-link:hover .codexhost-settings-icon {\n color: var(--settings-text);\n}\n\n.settings-command-button:disabled,\n.settings-command-button[aria-disabled="true"] {\n opacity: 0.55;\n cursor: not-allowed;\n filter: none;\n}\n\n.settings-command-button:focus-visible,\n.settings-update-link:focus-visible {\n outline: 2px solid var(--settings-focus);\n outline-offset: 2px;\n}\n\n.settings-visually-hidden {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n.settings-session-import-content {\n display: grid;\n min-width: 0;\n gap: 12px;\n margin-top: 16px;\n}\n\n.settings-session-import-list {\n display: grid;\n min-width: 0;\n overflow: hidden;\n background: var(--settings-surface);\n border: 1px solid var(--settings-border);\n border-radius: 12px;\n}\n\n.settings-session-import-row {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: center;\n min-width: 0;\n gap: 16px;\n padding: 14px 16px;\n border-bottom: 1px solid var(--settings-divider);\n}\n\n.settings-session-import-row:last-child {\n border-bottom: 0;\n}\n\n.settings-session-import-row__copy {\n display: grid;\n min-width: 0;\n gap: 4px;\n}\n\n.settings-session-import-row__copy strong {\n color: var(--settings-text);\n font-size: 14px;\n font-weight: 600;\n line-height: 20px;\n}\n\n.settings-session-import-row__copy span,\n.settings-session-import-row__cwd {\n min-width: 0;\n overflow-wrap: anywhere;\n color: var(--settings-muted);\n font-size: 12px;\n line-height: 18px;\n}\n\n.settings-session-import-row__cwd {\n font-family: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace;\n}\n\n.settings-session-import-row__action {\n display: flex;\n align-items: center;\n flex: none;\n gap: 8px;\n}\n\n.settings-session-import-running {\n color: #f5c542;\n font-size: 12px;\n font-weight: 500;\n line-height: 18px;\n white-space: nowrap;\n}\n\n.settings-session-import-recovery {\n display: grid;\n min-width: 0;\n gap: 12px;\n padding: 16px;\n background: var(--settings-surface);\n border: 1px solid var(--settings-border);\n border-radius: 12px;\n}\n\n.settings-session-import-recovery__copy {\n display: grid;\n gap: 6px;\n}\n\n.settings-session-import-recovery__copy strong {\n color: var(--settings-text);\n font-size: 15px;\n font-weight: 600;\n line-height: 22px;\n}\n\n.settings-session-import-recovery__copy p {\n margin: 0;\n color: var(--settings-muted);\n font-size: 13px;\n line-height: 20px;\n}\n\n.settings-session-import-recovery__path {\n display: flex;\n align-items: center;\n min-width: 0;\n gap: 8px;\n}\n\n.settings-session-import-recovery__path code {\n min-width: 0;\n flex: 1;\n overflow-wrap: anywhere;\n color: var(--settings-text);\n font-family: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace;\n font-size: 12px;\n line-height: 18px;\n}\n\n.codexhost-settings-icon {\n display: block;\n flex: none;\n stroke: currentColor;\n}\n\n@media (max-width: 720px) {\n .codexhost-settings-dialog {\n width: calc(100vw - 16px);\n height: calc(100vh - 16px);\n border-radius: 10px;\n }\n\n .settings-layout {\n grid-template-columns: minmax(0, 1fr);\n grid-template-rows: auto minmax(0, 1fr);\n }\n\n .settings-sidebar {\n border-right: 0;\n border-bottom: 1px solid var(--settings-border);\n }\n\n .settings-header {\n height: 56px;\n padding-inline: 14px;\n }\n\n .settings-sidebar {\n padding-top: 20px;\n }\n\n .settings-nav {\n flex: none;\n flex-direction: row;\n gap: 4px;\n padding: 7px 8px 8px;\n overflow-x: auto;\n overflow-y: hidden;\n }\n\n .settings-nav-section-label {\n display: none;\n }\n\n .settings-nav-button {\n width: auto;\n min-width: max-content;\n min-height: 34px;\n grid-template-columns: 16px auto;\n border-radius: 10px;\n }\n\n .settings-page__content {\n width: calc(100% - 40px);\n }\n\n .settings-page__content {\n padding-top: 32px;\n padding-bottom: 32px;\n }\n\n .settings-section-label {\n padding-bottom: 20px;\n font-size: 20px;\n line-height: 26px;\n }\n\n .settings-update-metadata {\n grid-template-columns: minmax(0, 1fr);\n gap: 16px;\n }\n\n .settings-status-row {\n grid-template-columns: minmax(0, 1fr) auto;\n gap: 16px;\n }\n\n .settings-account-header,\n .settings-connection-page-header {\n flex-direction: column;\n }\n\n .settings-account-header > .settings-command-button,\n .settings-connection-page-header > .settings-command-button {\n width: 100%;\n }\n\n .settings-session-import-row {\n grid-template-columns: minmax(0, 1fr);\n }\n\n .settings-session-import-row__action {\n justify-content: flex-start;\n flex-wrap: wrap;\n }\n\n .settings-status-row__detail {\n grid-column: 1 / -1;\n margin: -8px 0 0 58px;\n }\n}\n\n@media (forced-colors: active) {\n :host,\n :host([data-theme="light"]),\n :host([data-theme="dark"]) {\n --settings-bg: Canvas;\n --settings-sidebar: Canvas;\n --settings-panel: Canvas;\n --settings-surface: Canvas;\n --settings-surface-hover: Highlight;\n --settings-inset: Canvas;\n --settings-text: CanvasText;\n --settings-muted: GrayText;\n --settings-subtle: GrayText;\n --settings-border: ButtonBorder;\n --settings-divider: ButtonBorder;\n --settings-hover: Highlight;\n --settings-active: Highlight;\n --settings-focus: Highlight;\n --settings-elevated: Canvas;\n --settings-surface-strong: Canvas;\n --settings-mark: CanvasText;\n --settings-primary: ButtonFace;\n --settings-primary-hover: Highlight;\n --settings-primary-text: ButtonText;\n --settings-warning: CanvasText;\n --settings-warning-bg: Canvas;\n --settings-warning-border: ButtonBorder;\n --settings-danger: CanvasText;\n --settings-danger-bg: Canvas;\n --settings-danger-border: ButtonBorder;\n --settings-success: CanvasText;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n *,\n *::before,\n *::after {\n scroll-behavior: auto !important;\n transition-duration: 0s !important;\n }\n}\n';
26356
+ var shell_default = ':host {\n /* Inherit Codex Desktop color-scheme; light-dark() tracks the host page. */\n --settings-bg: light-dark(#ffffff, #181818);\n --settings-sidebar: light-dark(#f4f4f5, #1c1c1c);\n --settings-panel: transparent;\n --settings-text: light-dark(#171717, #f5f5f5);\n --settings-muted: light-dark(#737373, #a1a1a1);\n --settings-subtle: light-dark(#8a8a8a, #777777);\n --settings-border: light-dark(rgb(15 23 42 / 10%), rgb(255 255 255 / 10%));\n --settings-divider: light-dark(rgb(15 23 42 / 10%), rgb(255 255 255 / 10%));\n --settings-hover: light-dark(rgb(15 23 42 / 5%), rgb(255 255 255 / 6%));\n --settings-active: light-dark(rgb(51 156 255 / 14%), rgb(51 156 255 / 12%));\n --settings-focus: #339cff;\n --settings-elevated: light-dark(#ffffff, #2c2c2e);\n --settings-inset: light-dark(rgb(15 23 42 / 4%), rgb(0 0 0 / 18%));\n --settings-surface: light-dark(rgb(15 23 42 / 3%), rgb(255 255 255 / 2%));\n --settings-surface-strong: light-dark(rgb(15 23 42 / 6%), rgb(255 255 255 / 6%));\n --settings-surface-hover: light-dark(#eeeeee, #303030);\n --settings-mark: light-dark(#52525b, #d4d8de);\n --settings-dialog-shadow: light-dark(\n 0 24px 64px rgb(15 23 42 / 16%),\n 0 24px 64px rgb(0 0 0 / 38%)\n );\n --settings-backdrop: light-dark(rgb(15 23 42 / 28%), rgb(0 0 0 / 52%));\n --settings-segmented-shadow:\n 0 0 0 0.5px light-dark(rgb(15 23 42 / 6%), rgb(0 0 0 / 4%)),\n 0 3px 1px 0 light-dark(rgb(15 23 42 / 4%), rgb(0 0 0 / 4%)),\n 0 3px 8px 0 light-dark(rgb(15 23 42 / 10%), rgb(0 0 0 / 12%));\n --settings-primary: light-dark(#171717, #f4f4f4);\n --settings-primary-hover: light-dark(#2f2f2f, #ffffff);\n --settings-primary-text: light-dark(#ffffff, #171717);\n --settings-warning: light-dark(#8a5500, #f5c96a);\n --settings-warning-bg: light-dark(#fff8e6, rgb(245 201 106 / 8%));\n --settings-warning-border: light-dark(#ead8a8, rgb(245 201 106 / 24%));\n --settings-danger: light-dark(#b42318, #f87171);\n --settings-danger-bg: light-dark(#fff1f0, rgb(239 68 68 / 8%));\n --settings-danger-border: light-dark(#f3c7c3, rgb(239 68 68 / 22%));\n --settings-success: light-dark(#16784a, #4ade80);\n color: var(--settings-text);\n color-scheme: inherit;\n font:\n 13px/1.5 system-ui,\n -apple-system,\n BlinkMacSystemFont,\n "Segoe UI",\n sans-serif;\n letter-spacing: 0;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n letter-spacing: 0;\n}\n\nbutton,\ninput,\nselect {\n font: inherit;\n}\n\nbutton {\n color: inherit;\n}\n\n[hidden] {\n display: none !important;\n}\n\n.codexhost-settings-dialog {\n width: min(1120px, calc(100vw - 32px));\n height: min(780px, calc(100vh - 32px));\n max-width: none;\n max-height: none;\n margin: auto;\n padding: 0;\n overflow: hidden;\n color: var(--settings-text);\n background: var(--settings-bg);\n border: 1px solid var(--settings-border);\n border-radius: 12px;\n box-shadow: var(--settings-dialog-shadow);\n}\n\n.codexhost-settings-dialog::backdrop {\n background: var(--settings-backdrop);\n}\n\n.settings-frame,\n.settings-layout {\n width: 100%;\n height: 100%;\n min-width: 0;\n min-height: 0;\n}\n\n.settings-frame {\n display: flex;\n flex-direction: column;\n}\n\n.settings-layout {\n flex: 1;\n display: grid;\n grid-template-columns: 184px minmax(0, 1fr);\n background: var(--settings-bg);\n}\n\n.settings-sidebar {\n display: flex;\n min-width: 0;\n min-height: 0;\n flex-direction: column;\n overflow: hidden;\n background: var(--settings-sidebar);\n border-right: 1px solid var(--settings-border);\n padding-top: 14px;\n}\n\n.settings-header {\n display: flex;\n align-items: center;\n min-width: 0;\n height: 48px;\n flex: none;\n padding: 0 12px;\n border-bottom: 1px solid var(--settings-border);\n}\n\n.settings-header-actions {\n display: flex;\n align-items: center;\n flex: none;\n gap: 12px;\n margin-left: auto;\n}\n\n.settings-brand {\n display: flex;\n align-items: center;\n min-width: 0;\n gap: 7px;\n}\n\n.settings-brand__mark {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n flex: none;\n color: var(--settings-text);\n}\n\n.settings-brand__mark .codexhost-settings-icon {\n width: 24px;\n height: 24px;\n object-fit: contain;\n}\n\n.settings-brand__copy {\n display: flex;\n min-width: 0;\n align-items: baseline;\n gap: 0;\n line-height: 20px;\n}\n\n.settings-brand__name {\n overflow: hidden;\n color: var(--settings-text);\n font-size: 13px;\n font-weight: 600;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.settings-brand__title {\n margin-left: 8px;\n padding-left: 8px;\n color: var(--settings-muted);\n font-size: 13px;\n font-weight: 400;\n border-left: 1px solid var(--settings-border);\n}\n\n.settings-nav {\n display: flex;\n min-width: 0;\n min-height: 0;\n flex: 1;\n flex-direction: column;\n gap: 2px;\n padding: 0 7px 10px;\n overflow-y: auto;\n}\n\n.settings-nav-section-label {\n min-height: 28px;\n padding: 7px 9px 3px 4px;\n color: var(--settings-muted);\n font-size: 12px;\n font-weight: 600;\n line-height: 18px;\n}\n\n.settings-nav-section-label:not(:first-child) {\n margin-top: 8px;\n}\n\n.settings-nav-button {\n display: grid;\n grid-template-columns: 16px minmax(0, 1fr);\n align-items: center;\n width: 100%;\n position: relative;\n min-height: 34px;\n flex: none;\n gap: 9px;\n padding: 6px 9px;\n color: var(--settings-text);\n font-size: 14px;\n font-weight: 600;\n line-height: 21px;\n text-align: left;\n background: transparent;\n border: 0;\n border-radius: 8px;\n cursor: pointer;\n}\n\n.settings-nav-button .codexhost-settings-icon {\n width: 16px;\n height: 16px;\n opacity: 0.9;\n}\n\n.settings-nav-button:hover {\n background: var(--settings-hover);\n}\n\n.settings-nav-button[aria-current="page"] {\n background: var(--settings-active);\n color: var(--settings-text);\n font-weight: 500;\n}\n\n.settings-nav-button span {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.settings-icon-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n flex: none;\n padding: 0;\n color: var(--settings-muted);\n background: transparent;\n border: 0;\n border-radius: 8px;\n cursor: pointer;\n}\n\n.settings-icon-button:hover {\n color: var(--settings-text);\n background: var(--settings-hover);\n}\n\n.settings-icon-button:focus-visible,\n.settings-nav-button:focus-visible {\n outline: 2px solid var(--settings-focus);\n outline-offset: 1px;\n}\n\n.settings-page {\n display: block;\n position: relative;\n min-width: 0;\n min-height: 0;\n overflow-y: auto;\n background: var(--settings-bg);\n scrollbar-gutter: stable;\n}\n\n.settings-page__content {\n width: min(930px, calc(100% - 80px));\n margin-inline: auto;\n}\n\n.settings-page__content {\n min-width: 0;\n padding: 28px 0 36px;\n}\n\n.settings-section-label {\n min-height: auto;\n padding: 0 0 28px;\n color: var(--settings-text);\n font-size: 18px;\n font-weight: 600;\n line-height: 26px;\n}\n\n.settings-status-list,\n.settings-empty {\n overflow: hidden;\n background: var(--settings-panel);\n}\n\n.settings-status-row {\n display: grid;\n grid-template-columns: minmax(170px, 1fr) auto minmax(280px, 1.45fr);\n position: relative;\n align-items: center;\n min-height: 72px;\n gap: 20px;\n padding: 12px 0;\n}\n\n.settings-status-row:not(:last-child)::after {\n content: "";\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 1px;\n background: var(--settings-divider);\n}\n\n.settings-status-row__identity {\n display: inline-flex;\n align-items: center;\n min-width: 0;\n color: var(--settings-text);\n gap: 10px;\n font-size: 14px;\n font-weight: 500;\n line-height: 22px;\n}\n\n.settings-status-row__icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n flex: none;\n color: var(--settings-muted);\n background: var(--settings-surface-strong);\n border-radius: 50%;\n}\n\n.settings-status-badge {\n flex: none;\n padding: 3px 8px;\n color: var(--settings-muted);\n font-size: 11px;\n font-weight: 500;\n line-height: 18px;\n background: var(--settings-surface-strong);\n border: 1px solid var(--settings-border);\n border-radius: 6px;\n}\n\n.settings-status-row__detail {\n min-width: 0;\n color: var(--settings-muted);\n font-size: 13px;\n line-height: 20px;\n}\n\n.settings-page-description {\n max-width: 760px;\n margin: -10px 0 20px;\n color: var(--settings-muted);\n font-size: 12px;\n line-height: 18px;\n}\n\n.settings-session-import-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 24px;\n}\n\n.settings-session-import-header .settings-section-label {\n min-width: 0;\n}\n\n.settings-session-import-harness {\n display: flex;\n min-width: 0;\n margin: 0 0 16px;\n}\n\n.settings-session-import-harness__options {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n width: fit-content;\n max-width: 100%;\n gap: 8px;\n}\n\n.settings-session-import-harness__option {\n min-height: 32px;\n flex: none;\n padding: 6px 10px;\n color: var(--settings-muted);\n font: inherit;\n font-size: 12px;\n white-space: nowrap;\n background: transparent;\n border: 1px solid var(--settings-border);\n border-radius: 6px;\n cursor: pointer;\n}\n\n.settings-session-import-harness__option[aria-pressed="true"] {\n color: var(--settings-text);\n background: var(--settings-active);\n border-color: rgb(51 156 255 / 50%);\n}\n\n.settings-session-import-harness__option:disabled {\n opacity: 0.38;\n cursor: not-allowed;\n}\n\n.settings-session-import-harness__option:focus-visible {\n outline: 2px solid var(--settings-focus);\n outline-offset: 2px;\n}\n\n.settings-session-import-search,\n.settings-session-import-pagination {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 10px;\n}\n\n.settings-session-import-search {\n align-items: stretch;\n margin: 16px 0 0;\n}\n\n.settings-session-import-pagination {\n margin: 16px 0 0;\n}\n\n.settings-session-import-search input {\n flex: 1;\n min-width: 160px;\n}\n\n.settings-session-import-search input,\n.settings-session-import-pagination select {\n box-sizing: border-box;\n color: var(--settings-text);\n background: var(--settings-bg);\n border: 1px solid var(--settings-border);\n border-radius: 6px;\n}\n\n.settings-session-import-search input,\n.settings-session-import-search .settings-command-button {\n box-sizing: border-box;\n height: 36px;\n min-height: 36px;\n padding: 6px 10px;\n border-radius: 6px;\n}\n\n.settings-session-import-pagination select {\n min-height: 28px;\n padding: 2px 8px;\n}\n\n.settings-session-import-search input:focus-visible,\n.settings-session-import-pagination select:focus-visible {\n outline: 2px solid var(--settings-focus);\n outline-offset: 2px;\n}\n\n.settings-session-import-pagination {\n color: var(--settings-muted);\n font-size: 12px;\n line-height: 18px;\n}\n\n.settings-session-import-pagination label {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.settings-session-import-pagination > span {\n flex: none;\n min-width: 0;\n}\n\n.settings-session-import-pagination__navigation {\n display: flex;\n gap: 8px;\n margin-left: auto;\n}\n\n.settings-session-import-content,\n.settings-session-import-list {\n display: grid;\n gap: 10px;\n}\n\n.settings-session-import-content {\n margin-top: 16px;\n}\n\n.settings-session-import-status {\n display: flex;\n align-items: center;\n min-height: 0;\n gap: 12px;\n padding: 12px 16px;\n color: var(--settings-muted);\n background: var(--settings-panel);\n border: 1px solid var(--settings-border);\n border-radius: 8px;\n}\n\n.settings-session-import-status.is-error {\n color: #ef4444;\n}\n\n.settings-session-import-recovery {\n display: grid;\n justify-items: start;\n gap: 14px;\n padding: 16px;\n background: var(--settings-panel);\n border: 1px solid var(--settings-border);\n border-radius: 8px;\n}\n\n.settings-session-import-recovery:focus-visible {\n outline: 2px solid var(--settings-focus);\n outline-offset: 2px;\n}\n\n.settings-session-import-recovery__copy {\n display: grid;\n gap: 4px;\n}\n\n.settings-session-import-recovery__copy strong {\n color: var(--settings-text);\n font-size: 14px;\n}\n\n.settings-session-import-recovery__copy p {\n margin: 0;\n color: var(--settings-muted);\n font-size: 13px;\n line-height: 20px;\n}\n\n.settings-session-import-recovery__path {\n display: flex;\n align-items: stretch;\n width: 100%;\n min-width: 0;\n overflow: hidden;\n border: 1px solid var(--settings-border);\n border-radius: 6px;\n}\n\n.settings-session-import-recovery__path code {\n min-width: 0;\n flex: 1;\n padding: 8px 10px;\n overflow-x: auto;\n color: var(--settings-text);\n font-size: 12px;\n line-height: 20px;\n white-space: nowrap;\n}\n\n.settings-session-import-recovery__path .settings-command-button {\n min-height: 0;\n flex: none;\n border-width: 0 0 0 1px;\n border-radius: 0;\n}\n\n.settings-session-import-row {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: center;\n gap: 20px;\n min-width: 0;\n padding: 16px;\n background: var(--settings-panel);\n border: 1px solid var(--settings-border);\n border-radius: 8px;\n}\n\n.settings-session-import-row__copy {\n display: grid;\n min-width: 0;\n gap: 4px;\n}\n\n.settings-session-import-row__copy strong {\n overflow: hidden;\n color: var(--settings-text);\n font-size: 14px;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.settings-session-import-row__copy span,\n.settings-session-import-row__cwd {\n overflow: hidden;\n color: var(--settings-muted);\n font-size: 12px;\n line-height: 18px;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.settings-session-import-row__cwd {\n display: block;\n min-width: 0;\n background: transparent;\n}\n\n.settings-session-import-row__action {\n display: flex;\n align-items: flex-end;\n flex-direction: column;\n gap: 8px;\n}\n\n.settings-session-import-running {\n color: var(--settings-muted);\n font-size: 12px;\n}\n\n.settings-preference-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 32px;\n min-height: 88px;\n padding: 18px 0;\n border-top: 1px solid var(--settings-divider);\n border-bottom: 1px solid var(--settings-divider);\n}\n\n.settings-preference-row__copy {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n min-width: 0;\n gap: 5px;\n}\n\n.settings-preference-row__copy strong {\n color: var(--settings-text);\n font-size: 15px;\n font-weight: 600;\n line-height: 22px;\n}\n\n.settings-preference-row__copy span {\n max-width: 680px;\n color: var(--settings-muted);\n font-size: 13px;\n line-height: 20px;\n}\n\n.settings-preference-switch {\n display: inline-flex;\n align-items: center;\n width: 42px;\n height: 24px;\n flex: none;\n padding: 2px;\n border: 0;\n border-radius: 999px;\n background: var(--settings-surface-strong);\n cursor: pointer;\n transition: background 120ms ease;\n}\n\n.settings-preference-switch[aria-checked="true"] {\n justify-content: flex-end;\n background: var(--settings-focus);\n}\n\n.settings-preference-switch:focus-visible {\n outline: 2px solid var(--settings-focus);\n outline-offset: 2px;\n}\n\n.settings-preference-switch__thumb {\n width: 20px;\n height: 20px;\n border-radius: 50%;\n background: var(--settings-primary-text);\n box-shadow: 0 1px 3px rgb(0 0 0 / 24%);\n}\n\n.settings-connection-page-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 18px;\n margin-bottom: 18px;\n}\n\n.settings-connection-page-header .settings-section-label {\n padding-bottom: 0;\n}\n\n.settings-connection-page-header .settings-page-description {\n margin: 8px 0 0;\n}\n\n.settings-connection-page-header .settings-page-description + .settings-page-description {\n margin-top: 8px;\n}\n\n.settings-update-header {\n margin-bottom: 8px;\n}\n\n.settings-connections-content,\n.settings-plugins-content,\n.settings-connection-list,\n.settings-connection-rows {\n min-width: 0;\n}\n\n.settings-connections-content,\n.settings-plugins-content {\n display: grid;\n gap: 12px;\n}\n\n.settings-connection-list {\n overflow: hidden;\n background: var(--settings-surface);\n border: 1px solid var(--settings-border);\n border-radius: 10px;\n}\n\n.settings-segmented {\n display: inline-flex;\n flex-wrap: wrap;\n align-items: center;\n width: fit-content;\n max-width: 100%;\n padding: 2px;\n gap: 3px;\n background: var(--settings-surface-strong);\n border-radius: 10px;\n}\n\n.settings-segmented__item {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-height: 28px;\n padding: 4px 14px;\n color: var(--settings-muted);\n font: inherit;\n font-size: 12px;\n font-weight: 600;\n line-height: 18px;\n white-space: nowrap;\n background: transparent;\n border: 0;\n border-radius: 8px;\n cursor: pointer;\n transition:\n color 0.15s ease,\n background-color 0.15s ease,\n box-shadow 0.15s ease;\n}\n\n.settings-segmented__item:hover {\n color: var(--settings-text);\n background: var(--settings-hover);\n}\n\n.settings-segmented__item--selected,\n.settings-segmented__item[aria-selected="true"],\n.settings-segmented__item[aria-pressed="true"] {\n color: var(--settings-text);\n background: var(--settings-elevated);\n box-shadow: var(--settings-segmented-shadow);\n}\n\n.settings-segmented__item:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.settings-segmented__item:disabled:hover {\n color: var(--settings-muted);\n background: transparent;\n}\n\n.settings-segmented__item:focus-visible,\n.settings-connection-row:focus-visible,\n.settings-connection-install-link:focus-visible,\n.settings-connection-view-error:focus-visible {\n outline: 2px solid var(--settings-focus);\n outline-offset: 1px;\n}\n\n\n.settings-connection-host-tabs {\n display: flex;\n align-items: center;\n min-width: 0;\n gap: 6px;\n overflow-x: auto;\n overflow-y: hidden;\n overscroll-behavior-x: contain;\n scrollbar-width: none;\n scroll-behavior: smooth;\n scroll-snap-type: x proximity;\n touch-action: pan-x;\n}\n\n.settings-connection-host-tabs::-webkit-scrollbar {\n display: none;\n}\n\n.settings-connection-host-tab {\n display: inline-flex;\n align-items: center;\n height: 30px;\n min-width: max-content;\n flex: none;\n padding: 0 9px;\n color: var(--settings-muted);\n font: inherit;\n font-size: 12px;\n line-height: 18px;\n white-space: nowrap;\n background: var(--settings-inset);\n border: 1px solid var(--settings-border);\n border-radius: 7px;\n cursor: pointer;\n scroll-snap-align: start;\n}\n\n.settings-connection-host-tab:hover {\n color: var(--settings-text);\n background: var(--settings-hover);\n}\n\n.settings-connection-host-tab[aria-selected="true"] {\n color: var(--settings-text);\n font-weight: 600;\n background: var(--settings-active);\n border-color: var(--settings-border);\n}\n\n.settings-connection-table-header,\n.settings-connection-row {\n display: grid;\n /* Component : Status : Actions = 4 : 3 : 3 */\n grid-template-columns: minmax(0, 4fr) minmax(0, 3fr) minmax(0, 3fr);\n align-items: center;\n min-width: 0;\n column-gap: 16px;\n}\n\n.settings-connection-table-header {\n min-height: 30px;\n padding: 0 10px;\n color: var(--settings-muted);\n font-size: 10px;\n font-weight: 600;\n line-height: 16px;\n text-transform: uppercase;\n letter-spacing: 0.06em;\n background: var(--settings-surface);\n border-bottom: 1px solid var(--settings-divider);\n}\n\n.settings-connection-rows > .settings-connection-row,\n.settings-connection-rows > .settings-connection-block {\n border-bottom: 1px solid var(--settings-divider);\n}\n\n.settings-connection-rows > .settings-connection-row:last-child,\n.settings-connection-rows > .settings-connection-block:last-child {\n border-bottom: 0;\n}\n\n.settings-connection-row {\n min-height: 52px;\n padding: 8px 10px;\n cursor: pointer;\n}\n\n.settings-connection-row:hover {\n background: var(--settings-hover);\n}\n\n.settings-connection-row[data-connection-selected="true"] {\n background: var(--settings-surface);\n}\n\n.settings-connection-row__identity,\n.settings-connection-inspector__identity {\n display: inline-flex;\n align-items: center;\n min-width: 0;\n gap: 8px;\n color: var(--settings-text);\n}\n\n.settings-connection-row__identity strong,\n.settings-connection-inspector__identity strong {\n min-width: 0;\n overflow-wrap: anywhere;\n font-size: 12px;\n font-weight: 500;\n line-height: 18px;\n}\n\n.settings-connection-row__mark {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n flex: none;\n color: var(--settings-mark);\n font-size: 10px;\n font-weight: 700;\n background: var(--settings-surface-strong);\n border-radius: 7px;\n}\n\n.settings-connection-row__mark--logo {\n color: var(--settings-text);\n background: transparent;\n}\n\n.settings-connection-row__mark--logo > img,\n.settings-connection-row__mark--logo > svg {\n display: block;\n max-width: 18px;\n max-height: 18px;\n}\n\n.settings-connection-table-header > :last-child {\n text-align: end;\n}\n\n.settings-connection-row__status {\n display: inline-flex;\n align-items: center;\n width: fit-content;\n max-width: 100%;\n gap: 6px;\n color: var(--settings-muted);\n font-size: 11px;\n font-weight: 500;\n line-height: 18px;\n}\n\n.settings-connection-row__status::before {\n width: 6px;\n height: 6px;\n flex: none;\n content: "";\n background: currentColor;\n border-radius: 50%;\n}\n\n.settings-connection-row__status[data-connection-tone="ready"] {\n color: var(--settings-success);\n}\n\n.settings-connection-row__status[data-connection-tone="checking"] {\n color: var(--settings-warning);\n}\n\n.settings-connection-row__status[data-connection-tone="setup"] {\n color: var(--settings-muted);\n}\n\n.settings-connection-row__status[data-connection-tone="setup"]::before {\n background: transparent;\n border: 1.5px solid currentColor;\n}\n\n.settings-connection-row__status[data-connection-tone="failed"] {\n color: var(--settings-danger);\n}\n\n.settings-connection-row__action {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n min-width: 0;\n gap: 4px;\n}\n\n.settings-connection-row__handle {\n display: inline-flex;\n flex: none;\n align-items: center;\n justify-content: center;\n width: 16px;\n color: var(--settings-muted);\n cursor: grab;\n opacity: 0.6;\n}\n\n.settings-connection-row__handle:hover {\n opacity: 1;\n}\n\n.settings-connection-row[draggable="true"] {\n cursor: grab;\n}\n\n.settings-connection-row[data-connection-dragging="true"] {\n opacity: 0.4;\n}\n\n.settings-connection-row[data-connection-drop-indicator="before"] {\n box-shadow: inset 0 2px 0 0 var(--settings-focus);\n}\n\n.settings-connection-row[data-connection-drop-indicator="after"] {\n box-shadow: inset 0 -2px 0 0 var(--settings-focus);\n}\n\n.settings-connection-inline-detail {\n display: grid;\n gap: 12px;\n margin-top: 2px;\n padding: 14px 12px 16px;\n border-top: 1px solid var(--settings-divider);\n background: var(--settings-inset);\n}\n\n.settings-connection-group-divider {\n padding: 10px 12px 6px;\n color: var(--settings-muted);\n font-size: 10px;\n font-weight: 600;\n line-height: 16px;\n text-transform: uppercase;\n letter-spacing: 0.06em;\n /* No border-top here: the row immediately above already carries its own\n border-bottom (it is no longer :last-child once this divider follows\n it), so adding one here would double the separator line. */\n}\n\n.settings-connection-group-divider[data-connection-drag-over="true"] {\n color: var(--settings-focus);\n background: rgb(51 156 255 / 8%);\n border-radius: 6px;\n}\n\n.settings-connection-group-more[data-connection-drag-over="true"] {\n background: rgb(51 156 255 / 8%);\n}\n\n.settings-connection-group-hint {\n display: grid;\n gap: 3px;\n margin: 0 12px 12px;\n padding: 14px 16px;\n text-align: center;\n border: 1.5px dashed var(--settings-border);\n border-radius: 10px;\n}\n\n.settings-connection-group-more[data-connection-drag-over="true"] .settings-connection-group-hint {\n border-color: var(--settings-focus);\n}\n\n.settings-connection-group-hint strong {\n color: var(--settings-text);\n font-size: 12.5px;\n font-weight: 500;\n line-height: 18px;\n}\n\n.settings-connection-group-hint span {\n color: var(--settings-muted);\n font-size: 12px;\n line-height: 17px;\n}\n\n.settings-connection-group-reset {\n display: flex;\n width: 100%;\n align-items: center;\n gap: 6px;\n padding: 10px 12px;\n color: var(--settings-muted);\n font: inherit;\n font-size: 12px;\n text-align: left;\n background: transparent;\n border: 0;\n border-top: 1px solid var(--settings-divider);\n cursor: pointer;\n}\n\n.settings-connection-group-reset:hover {\n color: var(--settings-text);\n background: var(--settings-hover);\n}\n\n.settings-connection-install-link {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n padding: 0;\n color: var(--settings-focus);\n font: inherit;\n text-decoration: none;\n background: transparent;\n border: 1px solid transparent;\n border-radius: 7px;\n cursor: pointer;\n}\n\n.settings-connection-install-link:hover,\n.settings-connection-install-link:focus-visible {\n color: var(--settings-focus);\n background: var(--settings-active);\n border-color: var(--settings-border);\n}\n\n.settings-connection-view-error {\n padding: 4px 7px;\n color: var(--settings-danger);\n font: inherit;\n font-size: 11px;\n line-height: 18px;\n background: transparent;\n border: 0;\n border-radius: 6px;\n cursor: pointer;\n}\n\n.settings-connection-view-error:hover {\n color: var(--settings-danger);\n background: var(--settings-danger-bg);\n}\n\n.settings-connection-inspector {\n position: sticky;\n top: 18px;\n}\n\n.settings-connection-inspector__header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n min-width: 0;\n gap: 10px;\n padding: 12px;\n border-bottom: 1px solid var(--settings-divider);\n}\n\n.settings-connection-inspector__body {\n display: grid;\n min-width: 0;\n gap: 12px;\n padding: 12px;\n}\n\n.settings-connection-install-callout {\n display: grid;\n grid-template-columns: 28px minmax(0, 1fr);\n gap: 9px;\n padding: 11px;\n background: var(--settings-surface);\n border: 0;\n border-radius: 8px;\n}\n\n.settings-connection-install-callout__icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n color: var(--settings-focus);\n background: var(--settings-active);\n border-radius: 7px;\n}\n\n.settings-connection-install-callout strong,\n.settings-connection-error-summary strong,\n.settings-connection-state-summary strong {\n display: block;\n margin: 0 0 4px;\n color: var(--settings-text);\n font-size: 12px;\n font-weight: 500;\n line-height: 18px;\n}\n\n.settings-connection-install-callout p,\n.settings-connection-error-summary p,\n.settings-connection-state-summary p,\n.settings-connection-issue-note {\n margin: 0;\n color: var(--settings-muted);\n font-size: 11px;\n line-height: 16px;\n}\n\n.settings-connection-install-command {\n display: grid;\n gap: 4px;\n margin-top: 8px;\n}\n\n.settings-connection-install-command span {\n color: var(--settings-muted);\n font-size: 10px;\n font-weight: 600;\n line-height: 14px;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n}\n\n.settings-connection-install-command code {\n display: block;\n min-width: 0;\n overflow-wrap: anywhere;\n color: var(--settings-text);\n font-family: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace;\n font-size: 11px;\n line-height: 16px;\n white-space: pre-wrap;\n}\n\n.settings-connection-install-actions {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 8px;\n}\n\n.settings-connection-copy-prompt {\n position: relative;\n}\n\n.settings-connection-copy-prompt__tooltip {\n position: absolute;\n z-index: 4;\n bottom: calc(100% + 6px);\n left: 0;\n width: max-content;\n max-width: min(360px, 72vw);\n max-height: 180px;\n overflow: auto;\n padding: 8px 10px;\n color: var(--settings-text);\n font-size: 11px;\n line-height: 16px;\n white-space: pre-wrap;\n text-align: left;\n background: var(--settings-elevated);\n border: 1px solid var(--settings-border);\n border-radius: 8px;\n box-shadow: 0 10px 24px rgb(0 0 0 / 22%);\n opacity: 0;\n visibility: hidden;\n pointer-events: none;\n transition: opacity 120ms ease;\n}\n\n.settings-connection-copy-prompt:hover .settings-connection-copy-prompt__tooltip,\n.settings-connection-copy-prompt:focus-within .settings-connection-copy-prompt__tooltip {\n opacity: 1;\n visibility: visible;\n}\n\n.settings-connection-error-summary {\n padding: 13px 14px;\n color: var(--settings-danger);\n background: var(--settings-danger-bg);\n border: 1px solid var(--settings-danger-border);\n border-radius: 10px;\n}\n\n.settings-connection-error-metadata {\n display: grid;\n gap: 7px;\n padding: 12px;\n background: var(--settings-inset);\n border: 1px solid var(--settings-border);\n border-radius: 9px;\n}\n\n.settings-connection-detail-line {\n display: grid;\n grid-template-columns: 92px minmax(0, 1fr);\n gap: 10px;\n min-width: 0;\n color: var(--settings-muted);\n font-size: 10px;\n line-height: 16px;\n}\n\n.settings-connection-detail-line code {\n min-width: 0;\n overflow-wrap: anywhere;\n color: var(--settings-text);\n font-family: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace;\n white-space: pre-wrap;\n}\n\n.settings-connection-error-log-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 10px;\n}\n\n.settings-connection-error-log-header strong {\n color: var(--settings-text);\n font-size: 11px;\n font-weight: 600;\n}\n\n.settings-connection-error-log-header .settings-command-button {\n min-height: 30px;\n padding: 5px 9px;\n font-size: 11px;\n}\n\n.settings-connection-stderr {\n max-height: 220px;\n min-width: 0;\n margin: 0;\n padding: 11px;\n overflow: auto;\n color: var(--settings-text);\n font:\n 10px/16px ui-monospace,\n "SFMono-Regular",\n Consolas,\n "Liberation Mono",\n monospace;\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n background: var(--settings-inset);\n border: 1px solid var(--settings-border);\n border-radius: 9px;\n}\n\n.settings-connection-error-actions {\n display: grid;\n grid-template-columns: minmax(0, 1fr);\n gap: 8px;\n}\n\n.settings-connection-error-actions .settings-command-button {\n width: 100%;\n}\n\n.settings-connection-issue-note {\n margin-top: -4px;\n}\n\n.settings-connection-state-summary {\n padding: 14px;\n background: var(--settings-surface);\n border: 1px solid var(--settings-border);\n border-radius: 10px;\n}\n\n.settings-empty {\n display: flex;\n align-items: center;\n min-height: 72px;\n padding: 12px 16px;\n}\n\n.settings-empty > div {\n display: grid;\n min-width: 0;\n gap: 2px;\n}\n\n.settings-empty strong {\n color: var(--settings-text);\n font-size: 13px;\n font-weight: 500;\n line-height: 19px;\n}\n\n.settings-empty span {\n color: var(--settings-muted);\n font-size: 13px;\n line-height: 19px;\n}\n\n.settings-about-page {\n display: flex;\n flex-direction: column;\n gap: 18px;\n box-sizing: border-box;\n min-height: min(620px, calc(100vh - 200px));\n max-width: 720px;\n}\n\n.settings-about-page > .settings-section-label {\n padding-bottom: 10px;\n}\n\n.settings-about-panel {\n display: grid;\n gap: 18px;\n padding: 24px;\n background: var(--settings-panel);\n border: 1px solid var(--settings-border);\n border-radius: 12px;\n}\n\n.settings-about-product {\n color: var(--settings-text);\n font-size: 24px;\n font-weight: 700;\n line-height: 32px;\n}\n\n.settings-about-tagline {\n color: var(--settings-text);\n font-size: 16px;\n font-weight: 600;\n line-height: 24px;\n}\n\n.settings-about-copy {\n display: grid;\n max-width: 660px;\n gap: 12px;\n}\n\n.settings-about-lead,\n.settings-about-extension,\n.settings-about-closing p,\n.settings-about-copy p {\n margin: 0;\n color: var(--settings-muted);\n font-size: 13px;\n line-height: 21px;\n}\n\n.settings-about-lead {\n color: var(--settings-text);\n font-weight: 500;\n}\n\n.settings-about-agents {\n display: grid;\n gap: 10px;\n margin: 2px 0;\n padding: 0;\n list-style: none;\n}\n\n.settings-about-agent {\n display: grid;\n gap: 4px;\n padding-left: 2px;\n}\n\n.settings-about-agent-name {\n color: var(--settings-text);\n font-size: 13px;\n font-weight: 600;\n line-height: 18px;\n}\n\n.settings-about-agent-name::before {\n content: "\xB7 ";\n color: var(--settings-muted);\n font-weight: 600;\n}\n\n.settings-about-agent-description {\n display: block;\n padding-left: 0.85em;\n color: var(--settings-muted);\n font-size: 12px;\n font-weight: 400;\n line-height: 18px;\n}\n\n.settings-about-closing {\n display: grid;\n gap: 8px;\n}\n\n.settings-about-repository {\n gap: 10px;\n}\n\n.settings-about-open-source {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 0.35em;\n margin: 0;\n color: var(--settings-muted);\n font-size: 13px;\n line-height: 21px;\n}\n\n.settings-about-repository p {\n margin: 0;\n color: var(--settings-muted);\n font-size: 13px;\n line-height: 21px;\n}\n\n.settings-about-star-callout {\n margin: 4px 0 0;\n color: var(--settings-warning);\n font-size: 14px;\n font-weight: 600;\n line-height: 22px;\n}\n\n.settings-about-repository-link {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n color: #7cb8ff;\n font-weight: 600;\n line-height: 1;\n text-decoration: none;\n}\n\n.settings-about-repository-link .codexhost-settings-icon {\n display: block;\n flex: none;\n}\n\n.settings-about-repository-link:hover {\n text-decoration: underline;\n}\n\n.settings-about-brand {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 12px;\n margin-top: auto;\n padding-top: 12px;\n color: inherit;\n opacity: 0.9;\n text-decoration: none;\n transition: opacity 160ms ease;\n}\n\n.settings-about-brand:hover {\n opacity: 1;\n}\n\n.settings-about-brand-video {\n width: 40px;\n height: 40px;\n flex: none;\n overflow: hidden;\n object-fit: cover;\n border-radius: 999px;\n box-shadow: 0 1px 2px rgb(0 0 0 / 18%);\n}\n\n.settings-about-brand-copy {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 2px;\n}\n\n.settings-about-brand-name {\n color: var(--settings-text);\n font-size: 14px;\n font-weight: 800;\n letter-spacing: 0.18em;\n line-height: 18px;\n}\n\n.settings-about-brand-tagline {\n color: var(--settings-muted);\n font-size: 12px;\n font-weight: 500;\n letter-spacing: 0.18em;\n line-height: 16px;\n}\n\n.settings-page-error {\n padding: 16px;\n color: var(--settings-text);\n font-size: 13px;\n background: var(--settings-panel);\n border: 1px solid var(--settings-border);\n border-radius: 20px;\n}\n\n.settings-update-metadata {\n display: grid;\n grid-template-columns: repeat(3, minmax(0, 1fr));\n gap: 24px;\n margin-bottom: 24px;\n padding: 0 0 20px;\n border-bottom: 1px solid var(--settings-divider);\n}\n\n.settings-update-metadata__item {\n display: grid;\n min-width: 0;\n gap: 4px;\n}\n\n.settings-update-metadata__item span {\n color: var(--settings-muted);\n font-size: 12px;\n line-height: 18px;\n}\n\n.settings-update-metadata__item strong {\n min-width: 0;\n overflow-wrap: anywhere;\n color: var(--settings-text);\n font-size: 15px;\n font-weight: 500;\n line-height: 22px;\n}\n\n/* The only emphasis on this screen: a latest version newer than the installed one. */\n.settings-update-metadata__value--newer {\n color: var(--settings-focus);\n}\n\n.settings-update-panel {\n display: grid;\n gap: 12px;\n padding: 20px;\n color: var(--settings-text);\n background: var(--settings-panel);\n border: 1px solid var(--settings-border);\n border-radius: 8px;\n}\n\n/* Soft status copy and the Update action should not sit in a framed card. */\n.settings-update-panel[data-update-state="unavailable"],\n.settings-update-panel[data-update-state="failed"],\n.settings-update-panel[data-update-state="error"],\n.settings-update-panel[data-update-state="available"] {\n padding: 4px 0 0;\n border: 0;\n border-radius: 0;\n}\n\n.settings-update-panel__status-row {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 8px;\n min-width: 0;\n}\n\n.settings-update-panel__status-row .settings-update-actions {\n flex: none;\n}\n\n.settings-update-panel__status-row .settings-update-panel__head {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n.settings-update-panel__head {\n display: flex;\n align-items: center;\n min-width: 0;\n gap: 8px;\n}\n\n.settings-update-panel__head .codexhost-settings-icon {\n color: var(--settings-muted);\n}\n\n.settings-update-panel[data-update-state="available"]\n .settings-update-panel__head\n .codexhost-settings-icon,\n.settings-update-panel[data-update-state="downloading"]\n .settings-update-panel__head\n .codexhost-settings-icon,\n.settings-update-panel[data-update-state="installing"]\n .settings-update-panel__head\n .codexhost-settings-icon,\n.settings-update-panel[data-update-state="restarting"]\n .settings-update-panel__head\n .codexhost-settings-icon {\n color: var(--settings-focus);\n}\n\n.settings-update-panel[data-update-state="current"]\n .settings-update-panel__head\n .codexhost-settings-icon {\n color: var(--settings-success);\n}\n\n.settings-update-panel[data-update-state="failed"]\n .settings-update-panel__head\n .codexhost-settings-icon,\n.settings-update-panel[data-update-state="error"]\n .settings-update-panel__head\n .codexhost-settings-icon {\n color: var(--settings-danger);\n}\n\n.settings-update-panel[data-update-state="unavailable"]\n .settings-update-panel__head\n .codexhost-settings-icon {\n color: var(--settings-muted);\n}\n\n.settings-update-panel__title {\n min-width: 0;\n overflow-wrap: anywhere;\n color: var(--settings-text);\n font-size: 14px;\n font-weight: 600;\n line-height: 22px;\n}\n\n.settings-update-summary,\n.settings-update-error {\n margin: 0;\n overflow-wrap: anywhere;\n font-size: 13px;\n line-height: 20px;\n}\n\n.settings-update-summary {\n color: var(--settings-muted);\n}\n\n.settings-update-error {\n color: var(--settings-danger);\n}\n\n.settings-update-progress {\n width: 100%;\n height: 8px;\n accent-color: var(--settings-focus);\n}\n\n.settings-update-progress-detail {\n color: var(--settings-muted);\n font-size: 12px;\n line-height: 18px;\n}\n\n/* Release notes scroll with the page; a scroller inside a scroller traps the wheel. */\n.settings-update-notes-section {\n min-width: 0;\n margin-top: 24px;\n padding-top: 24px;\n border-top: 1px solid var(--settings-divider);\n}\n\n.settings-update-notes-section:empty {\n display: none;\n}\n\n.settings-update-notes {\n display: grid;\n min-width: 0;\n gap: 12px;\n color: var(--settings-muted);\n font-size: 14px;\n line-height: 22px;\n overflow-wrap: anywhere;\n}\n\n.settings-update-notes > :first-child {\n margin-top: 0;\n}\n\n.settings-update-notes > :last-child {\n margin-bottom: 0;\n}\n\n.settings-update-notes h1,\n.settings-update-notes h2,\n.settings-update-notes h3,\n.settings-update-notes h4,\n.settings-update-notes h5,\n.settings-update-notes h6 {\n margin: 6px 0 0;\n color: var(--settings-text);\n font-weight: 600;\n}\n\n.settings-update-notes h1 {\n font-size: 18px;\n line-height: 26px;\n}\n\n.settings-update-notes h2 {\n font-size: 17px;\n line-height: 24px;\n}\n\n.settings-update-notes h3,\n.settings-update-notes h4,\n.settings-update-notes h5,\n.settings-update-notes h6 {\n font-size: 14px;\n line-height: 22px;\n}\n\n.settings-update-notes p,\n.settings-update-notes ul,\n.settings-update-notes ol,\n.settings-update-notes pre,\n.settings-update-notes blockquote {\n margin: 0;\n}\n\n.settings-update-notes ul,\n.settings-update-notes ol {\n padding-left: 24px;\n}\n\n.settings-update-notes li {\n padding-left: 4px;\n}\n\n.settings-update-notes li::marker {\n color: var(--settings-muted);\n font-size: 0.85em;\n}\n\n.settings-update-notes li + li {\n margin-top: 14px;\n}\n\n.settings-update-notes .release-note-translation {\n display: block;\n margin-top: 3px;\n color: var(--settings-muted);\n font-size: 13px;\n line-height: 20px;\n}\n\n.settings-update-notes blockquote {\n padding: 8px 12px;\n color: var(--settings-muted);\n border-left: 3px solid var(--settings-focus);\n background: var(--settings-surface);\n}\n\n.settings-update-notes hr {\n width: 100%;\n margin: 2px 0;\n border: 0;\n border-top: 1px solid var(--settings-divider);\n}\n\n.settings-update-notes strong {\n color: var(--settings-text);\n font-weight: 600;\n}\n\n.settings-update-notes a {\n color: var(--settings-focus);\n text-decoration: none;\n}\n\n.settings-update-notes a:hover {\n text-decoration: underline;\n}\n\n.settings-update-notes code {\n font-family: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace;\n font-size: 12px;\n}\n\n.settings-update-notes :not(pre) > code {\n padding: 1px 5px;\n background: var(--settings-surface-strong);\n border-radius: 4px;\n}\n\n.settings-update-notes pre {\n min-width: 0;\n max-width: 100%;\n padding: 10px 12px;\n overflow-x: auto;\n overflow-y: hidden;\n background: var(--settings-inset);\n border-radius: 6px;\n}\n\n.settings-update-notes pre code {\n line-height: 18px;\n white-space: pre-wrap;\n}\n\n/* Manual update sits directly under the status panel, not behind a disclosure:\n automatic updates can fail for machine-local reasons and this is the way out. */\n.settings-update-controls {\n display: grid;\n min-width: 0;\n gap: 10px;\n margin-top: 24px;\n}\n\n.settings-update-manual-title {\n color: var(--settings-text);\n font-size: 15px;\n font-weight: 600;\n line-height: 22px;\n}\n\n.settings-update-manual {\n display: grid;\n min-width: 0;\n gap: 8px;\n}\n\n.settings-update-manual[hidden] {\n display: none;\n}\n\n.settings-update-manual-description {\n margin: 0;\n color: var(--settings-muted);\n font-size: 12px;\n line-height: 18px;\n}\n\n.settings-update-manual-description.is-fallback {\n color: var(--settings-danger);\n}\n\n.settings-update-command {\n display: flex;\n align-items: stretch;\n min-width: 0;\n overflow: hidden;\n border: 1px solid var(--settings-border);\n border-radius: 6px;\n}\n\n.settings-update-command code {\n min-width: 0;\n flex: 1;\n padding: 9px 12px;\n overflow-x: auto;\n color: var(--settings-text);\n font-family: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace;\n font-size: 12px;\n line-height: 20px;\n white-space: nowrap;\n}\n\n.settings-update-command__copy {\n display: inline-flex;\n align-items: center;\n flex: none;\n gap: 6px;\n padding: 0 12px;\n color: var(--settings-muted);\n font-size: 12px;\n background: transparent;\n border: 0;\n border-left: 1px solid var(--settings-border);\n cursor: pointer;\n}\n\n.settings-update-command__copy:hover {\n color: var(--settings-text);\n background: var(--settings-hover);\n}\n\n.settings-update-command__copy:focus-visible {\n outline: 2px solid var(--settings-focus);\n outline-offset: -2px;\n}\n\n.settings-update-actions {\n display: flex;\n align-items: center;\n min-width: 0;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.settings-command-button,\n.settings-update-link {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: none;\n width: max-content;\n max-width: 100%;\n min-height: 30px;\n gap: 6px;\n padding: 5px 10px;\n white-space: nowrap;\n color: var(--settings-primary-text);\n font: inherit;\n font-size: 12px;\n text-decoration: none;\n background: var(--settings-primary);\n border: 1px solid var(--settings-primary);\n border-radius: 7px;\n cursor: pointer;\n}\n\n.settings-command-button--secondary,\n.settings-update-link {\n color: var(--settings-muted);\n background: transparent;\n border-color: var(--settings-border);\n}\n\n.settings-command-button--secondary .codexhost-settings-icon,\n.settings-update-link .codexhost-settings-icon {\n color: var(--settings-muted);\n}\n\n.settings-command-button:hover:not(.settings-command-button--secondary) {\n filter: brightness(1.08);\n}\n\n.settings-command-button--danger {\n color: var(--settings-danger);\n}\n\n.settings-command-button--danger:hover:not(:disabled) {\n color: #fecaca;\n background: var(--settings-danger-bg);\n border-color: var(--settings-danger-border);\n}\n\n.settings-command-button--secondary:hover,\n.settings-update-link:hover {\n color: var(--settings-text);\n background: var(--settings-hover);\n}\n\n.settings-command-button--secondary:hover .codexhost-settings-icon,\n.settings-update-link:hover .codexhost-settings-icon {\n color: var(--settings-text);\n}\n\n.settings-command-button:disabled,\n.settings-command-button[aria-disabled="true"] {\n opacity: 0.55;\n cursor: not-allowed;\n filter: none;\n}\n\n.settings-command-button:focus-visible,\n.settings-update-link:focus-visible {\n outline: 2px solid var(--settings-focus);\n outline-offset: 2px;\n}\n\n.settings-visually-hidden {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n.settings-session-import-content {\n display: grid;\n min-width: 0;\n gap: 12px;\n margin-top: 16px;\n}\n\n.settings-session-import-list {\n display: grid;\n min-width: 0;\n overflow: hidden;\n background: var(--settings-surface);\n border: 1px solid var(--settings-border);\n border-radius: 12px;\n}\n\n.settings-session-import-row {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: center;\n min-width: 0;\n gap: 16px;\n padding: 14px 16px;\n border-bottom: 1px solid var(--settings-divider);\n}\n\n.settings-session-import-row:last-child {\n border-bottom: 0;\n}\n\n.settings-session-import-row__copy {\n display: grid;\n min-width: 0;\n gap: 4px;\n}\n\n.settings-session-import-row__copy strong {\n color: var(--settings-text);\n font-size: 14px;\n font-weight: 600;\n line-height: 20px;\n}\n\n.settings-session-import-row__copy span,\n.settings-session-import-row__cwd {\n min-width: 0;\n overflow-wrap: anywhere;\n color: var(--settings-muted);\n font-size: 12px;\n line-height: 18px;\n}\n\n.settings-session-import-row__cwd {\n font-family: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace;\n}\n\n.settings-session-import-row__action {\n display: flex;\n align-items: center;\n flex: none;\n gap: 8px;\n}\n\n.settings-session-import-running {\n color: #f5c542;\n font-size: 12px;\n font-weight: 500;\n line-height: 18px;\n white-space: nowrap;\n}\n\n.settings-session-import-recovery {\n display: grid;\n min-width: 0;\n gap: 12px;\n padding: 16px;\n background: var(--settings-surface);\n border: 1px solid var(--settings-border);\n border-radius: 12px;\n}\n\n.settings-session-import-recovery__copy {\n display: grid;\n gap: 6px;\n}\n\n.settings-session-import-recovery__copy strong {\n color: var(--settings-text);\n font-size: 15px;\n font-weight: 600;\n line-height: 22px;\n}\n\n.settings-session-import-recovery__copy p {\n margin: 0;\n color: var(--settings-muted);\n font-size: 13px;\n line-height: 20px;\n}\n\n.settings-session-import-recovery__path {\n display: flex;\n align-items: center;\n min-width: 0;\n gap: 8px;\n}\n\n.settings-session-import-recovery__path code {\n min-width: 0;\n flex: 1;\n overflow-wrap: anywhere;\n color: var(--settings-text);\n font-family: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace;\n font-size: 12px;\n line-height: 18px;\n}\n\n.codexhost-settings-icon {\n display: block;\n flex: none;\n stroke: currentColor;\n}\n\n@media (max-width: 720px) {\n .codexhost-settings-dialog {\n width: calc(100vw - 16px);\n height: calc(100vh - 16px);\n border-radius: 10px;\n }\n\n .settings-layout {\n grid-template-columns: minmax(0, 1fr);\n grid-template-rows: auto minmax(0, 1fr);\n }\n\n .settings-sidebar {\n border-right: 0;\n border-bottom: 1px solid var(--settings-border);\n }\n\n .settings-header {\n height: 56px;\n padding-inline: 14px;\n }\n\n .settings-sidebar {\n padding-top: 20px;\n }\n\n .settings-nav {\n flex: none;\n flex-direction: row;\n gap: 4px;\n padding: 7px 8px 8px;\n overflow-x: auto;\n overflow-y: hidden;\n }\n\n .settings-nav-section-label {\n display: none;\n }\n\n .settings-nav-button {\n width: auto;\n min-width: max-content;\n min-height: 34px;\n grid-template-columns: 16px auto;\n border-radius: 10px;\n }\n\n .settings-page__content {\n width: calc(100% - 40px);\n }\n\n .settings-page__content {\n padding-top: 32px;\n padding-bottom: 32px;\n }\n\n .settings-section-label {\n padding-bottom: 20px;\n font-size: 20px;\n line-height: 26px;\n }\n\n .settings-update-metadata {\n grid-template-columns: minmax(0, 1fr);\n gap: 16px;\n }\n\n .settings-status-row {\n grid-template-columns: minmax(0, 1fr) auto;\n gap: 16px;\n }\n\n .settings-account-header,\n .settings-connection-page-header {\n flex-direction: column;\n }\n\n .settings-account-header > .settings-command-button,\n .settings-connection-page-header > .settings-command-button {\n width: 100%;\n }\n\n .settings-session-import-row {\n grid-template-columns: minmax(0, 1fr);\n }\n\n .settings-session-import-row__action {\n justify-content: flex-start;\n flex-wrap: wrap;\n }\n\n .settings-status-row__detail {\n grid-column: 1 / -1;\n margin: -8px 0 0 58px;\n }\n}\n\n@media (forced-colors: active) {\n :host,\n :host([data-theme="light"]),\n :host([data-theme="dark"]) {\n --settings-bg: Canvas;\n --settings-sidebar: Canvas;\n --settings-panel: Canvas;\n --settings-surface: Canvas;\n --settings-surface-hover: Highlight;\n --settings-inset: Canvas;\n --settings-text: CanvasText;\n --settings-muted: GrayText;\n --settings-subtle: GrayText;\n --settings-border: ButtonBorder;\n --settings-divider: ButtonBorder;\n --settings-hover: Highlight;\n --settings-active: Highlight;\n --settings-focus: Highlight;\n --settings-elevated: Canvas;\n --settings-surface-strong: Canvas;\n --settings-mark: CanvasText;\n --settings-primary: ButtonFace;\n --settings-primary-hover: Highlight;\n --settings-primary-text: ButtonText;\n --settings-warning: CanvasText;\n --settings-warning-bg: Canvas;\n --settings-warning-border: ButtonBorder;\n --settings-danger: CanvasText;\n --settings-danger-bg: Canvas;\n --settings-danger-border: ButtonBorder;\n --settings-success: CanvasText;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n *,\n *::before,\n *::after {\n scroll-behavior: auto !important;\n transition-duration: 0s !important;\n }\n}\n';
26084
26357
 
26085
26358
  // src/settings/accounts.css
26086
- var accounts_default = '.settings-harness-accounts {\n margin-top: 32px;\n}\n\n.settings-harness-accounts__title {\n margin: 0 0 16px;\n font-size: 14px;\n font-weight: 500;\n}\n\n.settings-harness-account__identity {\n min-width: 0;\n}\n\n.settings-harness-account__identity > .settings-account-email {\n display: block;\n max-width: 24ch;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.settings-harness-account__logo {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n flex: none;\n}\n\n.settings-harness-account {\n display: grid;\n grid-template-columns: minmax(180px, 1fr) minmax(0, 2fr);\n align-items: center;\n gap: 24px;\n padding: 24px;\n}\n\n.settings-harness-account + .settings-harness-account {\n border-top: 1px solid var(--settings-border);\n}\n\n.settings-harness-account > div {\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n@media (max-width: 700px) {\n .settings-harness-account {\n grid-template-columns: minmax(0, 1fr);\n padding: 16px;\n }\n}\n\n.settings-account-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 20px;\n}\n\n.settings-account-header > :first-child {\n min-width: 0;\n flex: 1 1 auto;\n}\n\n.settings-account-header > .settings-command-button {\n flex: none;\n white-space: nowrap;\n min-height: 36px;\n padding: 8px 12px;\n border-radius: 7px;\n}\n\n.settings-account-header .settings-section-label {\n margin: 0;\n padding: 0;\n font-size: 27px;\n line-height: 1.4;\n font-weight: 650;\n letter-spacing: -0.035em;\n}\n.settings-account-header .settings-page-description {\n margin: 8px 0 0;\n font-size: 13px;\n}\n\n.settings-account-status {\n margin: 0;\n color: var(--settings-muted);\n font-size: 12px;\n}\n.settings-account-status:empty {\n display: none;\n}\n\n.settings-account-help-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n margin-top: 20px;\n flex-wrap: wrap;\n}\n.settings-account-task-hint {\n display: flex;\n align-items: flex-start;\n gap: 9px;\n margin: 0;\n color: var(--settings-muted);\n font-size: 12px;\n flex: 1 1 280px;\n}\n.settings-account-task-hint svg {\n flex: none;\n margin-top: 1px;\n}\n.settings-account-help-button {\n display: inline-flex;\n align-items: center;\n gap: 7px;\n padding: 8px 12px;\n color: var(--settings-muted);\n font-size: 12px;\n background: transparent;\n border: 0;\n border-radius: 7px;\n cursor: pointer;\n}\n.settings-account-help-button:hover {\n color: var(--settings-text);\n background: var(--settings-hover);\n}\n.settings-account-device-code-note {\n margin: 12px 0 0;\n font-size: 12px;\n padding: 10px 12px;\n color: var(--settings-warning);\n background: var(--settings-warning-bg);\n border: 1px solid var(--settings-warning-border);\n border-radius: 8px;\n}\n\n.settings-account-toolbar {\n margin-top: 27px;\n padding: 18px 0;\n border-top: 1px solid var(--settings-border);\n display: flex;\n align-items: center;\n gap: 14px;\n flex-wrap: wrap;\n}\n.settings-account-count {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n white-space: nowrap;\n}\n.settings-account-count > :last-child {\n color: var(--settings-muted);\n font-variant-numeric: tabular-nums;\n}\n.settings-account-search {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--settings-muted);\n margin-right: auto;\n min-width: 0;\n max-width: 100%;\n}\n.settings-account-search svg {\n flex: none;\n}\n.settings-account-toolbar input {\n min-width: 80px;\n width: 150px;\n max-width: 100%;\n padding: 5px 0;\n color: var(--settings-text);\n background: transparent;\n border: 0;\n font-size: 13px;\n}\n.settings-account-toolbar input::placeholder {\n color: var(--settings-muted);\n}\n.settings-account-display-controls {\n display: flex;\n padding: 3px;\n border: 1px solid var(--settings-border);\n border-radius: 7px;\n background: var(--settings-inset);\n}\n.settings-account-display-controls button {\n padding: 4px 10px;\n color: var(--settings-muted);\n background: transparent;\n border: 0;\n border-radius: 4px;\n font-size: 12px;\n cursor: pointer;\n}\n.settings-account-display-controls button:hover {\n color: var(--settings-text);\n}\n.settings-account-display-controls button[aria-pressed="true"] {\n color: var(--settings-text);\n background: var(--settings-active);\n}\n\n.settings-account-list {\n --account-border: light-dark(#e2e2e8, #36363b);\n --account-muted: light-dark(#676773, #a5a5af);\n border: 1px solid var(--account-border);\n border-radius: 11px;\n overflow: hidden;\n container-type: inline-size;\n}\n.settings-account-table {\n width: 100%;\n table-layout: fixed;\n border-collapse: collapse;\n font-size: 12px;\n}\n.settings-account-table th {\n padding: 13px 20px;\n color: var(--account-muted);\n background: light-dark(#f8f8fa, #202024);\n font-size: 11px;\n font-weight: 500;\n text-align: left;\n}\n.settings-account-table th:nth-child(1) {\n width: 32%;\n}\n.settings-account-table th:nth-child(2) {\n width: 38%;\n}\n.settings-account-table th:nth-child(3) {\n width: 12%;\n}\n.settings-account-table th:nth-child(4) {\n width: 18%;\n text-align: right;\n}\n.settings-account-table td {\n padding: 19px 20px;\n vertical-align: middle;\n border-top: 1px solid var(--settings-divider);\n}\n.settings-account-row {\n background: light-dark(#ffffff, #232326);\n}\n.settings-account-row:hover {\n background: light-dark(#f7f7fa, #26262a);\n}\n.settings-account-row__person {\n display: grid;\n grid-template-columns: 34px minmax(0, 1fr);\n align-items: center;\n gap: 11px;\n min-width: 0;\n}\n.settings-account-row__mark {\n display: grid;\n place-items: center;\n width: 34px;\n height: 34px;\n color: light-dark(#67558d, #c3baff);\n background: light-dark(#f0ecf7, #353044);\n border: 1px solid light-dark(#d9d0e6, #4d435f);\n border-radius: 10px;\n}\n.settings-account-row__identity {\n min-width: 0;\n}\n.settings-account-title {\n display: flex;\n align-items: center;\n gap: 6px;\n flex-wrap: wrap;\n}\n.settings-account-email {\n min-width: 0;\n overflow: hidden;\n font-size: 13px;\n font-weight: 550;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.settings-account-metadata {\n display: flex;\n align-items: center;\n min-width: 0;\n gap: 7px;\n margin-top: 4px;\n color: var(--settings-muted);\n}\n.settings-account-domain {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.settings-account-plan-separator {\n flex: none;\n}\n.settings-account-plan {\n flex: none;\n padding: 1px 6px;\n color: var(--settings-muted);\n border: 1px solid var(--settings-border);\n border-radius: 5px;\n font-size: 11px;\n white-space: nowrap;\n}\n.settings-account-plan--highlighted {\n color: light-dark(#654f91, #c8bfff);\n background: light-dark(#f2edf9, #a99bff18);\n border-color: light-dark(#d9ccea, #a99bff52);\n font-weight: 600;\n}\n.settings-account-active {\n flex: none;\n padding: 2px 7px;\n color: light-dark(#66548e, #bdb4ff);\n background: light-dark(#f4f0fb, #aca0ff12);\n border: 1px solid light-dark(#dfd5f1, #aca0ff24);\n border-radius: 5px;\n font-size: 11px;\n white-space: nowrap;\n}\n\n.settings-account-usage {\n display: grid;\n gap: 14px;\n max-width: 380px;\n}\n.settings-account-usage__meter {\n display: grid;\n grid-template-columns: 48px minmax(36px, 1fr) 96px;\n align-items: center;\n gap: 3px 10px;\n}\n:host([lang="zh-CN"]) .settings-account-usage__meter {\n grid-template-columns: 48px minmax(36px, 1fr) 72px;\n}\n.settings-account-usage__meter--balance {\n display: flex;\n grid-template-columns: none;\n justify-content: flex-start;\n gap: 6px;\n}\n.settings-account-usage__balance {\n display: inline-flex;\n align-items: baseline;\n gap: 4px;\n font-size: 14px;\n font-weight: 600;\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n}\n\n.settings-account-usage__title {\n color: light-dark(#5d5d68, #c3c3cd);\n font-size: 12px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.settings-account-usage__percent {\n display: flex;\n align-items: baseline;\n justify-content: flex-end;\n gap: 4px;\n font-size: 14px;\n font-weight: 600;\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n}\n.settings-account-usage__value-label {\n color: var(--settings-muted);\n font-size: 11px;\n font-weight: 400;\n}\n.settings-account-usage__percent--warn {\n color: var(--settings-warning);\n}\n.settings-account-usage__percent--hot {\n color: var(--settings-danger);\n}\n.settings-account-usage__bar {\n height: 4px;\n overflow: hidden;\n background: light-dark(#e3e1e8, #3c3c43);\n border-radius: 4px;\n}\n.settings-account-usage__bar > span {\n display: block;\n height: 100%;\n background: light-dark(#81769e, #9993b8);\n border-radius: inherit;\n}\n.settings-account-usage__bar--warn > span {\n background: var(--settings-warning);\n}\n.settings-account-usage__bar--hot > span {\n background: var(--settings-danger);\n}\n.settings-account-usage__sub {\n grid-column: 2 / -1;\n color: var(--account-muted);\n font-size: 11px;\n font-variant-numeric: tabular-nums;\n overflow-wrap: anywhere;\n}\n.settings-account-usage__message,\n.settings-account-unknown {\n color: var(--settings-muted);\n}\n.settings-account-usage > button {\n justify-self: start;\n}\n.settings-account-actions {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n}\n.settings-account-action {\n padding: 8px 10px;\n min-height: 36px;\n font-size: 12px;\n color: var(--settings-text);\n background: transparent;\n border: 1px solid transparent;\n border-radius: 7px;\n white-space: nowrap;\n cursor: pointer;\n}\n.settings-account-action:hover {\n background: var(--settings-hover);\n}\n.settings-account-action:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n.settings-account-actions .settings-account-delete {\n color: var(--settings-muted);\n}\n.settings-account-actions .settings-account-delete:hover,\n.settings-account-actions .settings-account-delete:focus-visible {\n color: var(--settings-danger);\n background: var(--settings-danger-bg);\n}\n.settings-account-mobile-label {\n display: none;\n}\n.settings-account-reset-summary {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n min-height: 32px;\n padding: 3px 0;\n font-size: 12px;\n white-space: nowrap;\n color: var(--settings-text);\n background: transparent;\n border: 0;\n border-radius: 5px;\n cursor: pointer;\n}\n.settings-account-reset-summary:hover {\n background: var(--settings-hover);\n}\n.settings-account-reset-summary[aria-expanded="true"] > svg:last-child {\n transform: rotate(90deg);\n}\n.settings-account-details-row > td {\n background: var(--settings-inset);\n}\n.settings-account-reset-details {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 16px;\n flex-wrap: wrap;\n}\n.settings-account-reset-details strong {\n font-size: 12px;\n}\n.settings-account-reset-expiry {\n margin: 6px 0;\n color: var(--settings-muted);\n font-size: 11px;\n}\n.settings-account-reset-expiry.is-warn {\n color: var(--settings-warning);\n}\n.settings-account-reset-expiry.is-hot {\n color: var(--settings-danger);\n}\n.settings-account-reset-list {\n margin: 8px 0 0;\n padding: 0;\n list-style: none;\n color: var(--settings-muted);\n font-size: 11px;\n}\n.settings-account-reset-list li + li {\n margin-top: 4px;\n}\n.settings-account-empty {\n text-align: center;\n color: var(--settings-muted);\n}\n.settings-account-verification {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n color: var(--settings-muted);\n}\n.settings-account-verification a {\n color: var(--settings-focus);\n overflow-wrap: anywhere;\n}\n.settings-account-verification code {\n padding: 5px 8px;\n color: var(--settings-text);\n font-size: 15px;\n font-weight: 600;\n letter-spacing: 0.08em;\n background: var(--settings-inset);\n border-radius: 6px;\n}\n.settings-account-list :focus-visible,\n.settings-account-toolbar :focus-visible,\n.settings-account-help-button:focus-visible {\n outline: 2px solid var(--settings-focus);\n outline-offset: -2px;\n}\n\n@container (min-width: 611px) and (max-width: 800px) {\n .settings-account-table th,\n .settings-account-table td {\n padding-left: 12px;\n padding-right: 12px;\n }\n .settings-account-table th:nth-child(1) {\n width: 30%;\n }\n .settings-account-table th:nth-child(2) {\n width: 37%;\n }\n .settings-account-table th:nth-child(4) {\n width: 21%;\n }\n}\n\n@container (max-width: 610px) {\n .settings-account-table,\n .settings-account-table tbody {\n display: block;\n }\n .settings-account-table thead {\n display: none;\n }\n .settings-account-row {\n display: grid;\n grid-template-columns: 1fr 1fr;\n padding: 16px;\n gap: 12px;\n border-bottom: 1px solid var(--settings-divider);\n }\n .settings-account-table .settings-account-row > td {\n padding: 0;\n border: 0;\n }\n .settings-account-row > td:nth-child(1),\n .settings-account-row > td:nth-child(2) {\n grid-column: 1 / -1;\n }\n .settings-account-row > td:nth-child(3) {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n .settings-account-mobile-label {\n display: inline;\n color: var(--settings-muted);\n font-size: 11px;\n }\n .settings-account-usage {\n max-width: none;\n }\n .settings-account-table tr:not(.settings-account-row),\n .settings-account-table tr:not(.settings-account-row) > td {\n display: block;\n }\n}\n\n@media (forced-colors: active) {\n .settings-account-usage__bar {\n border: 1px solid CanvasText;\n }\n .settings-account-usage__bar > span {\n background: Highlight;\n }\n}\n';
26359
+ var accounts_default = '.settings-harness-accounts {\n margin-top: 32px;\n}\n\n.settings-harness-accounts__title {\n margin: 0 0 16px;\n font-size: 14px;\n font-weight: 500;\n}\n\n.settings-harness-account__identity {\n min-width: 0;\n}\n\n.settings-harness-account__identity > .settings-account-email {\n display: block;\n max-width: 24ch;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.settings-harness-account__logo {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n flex: none;\n}\n\n.settings-harness-account {\n display: grid;\n grid-template-columns: minmax(180px, 1fr) minmax(0, 2fr);\n align-items: center;\n gap: 24px;\n padding: 24px;\n}\n\n.settings-harness-account + .settings-harness-account {\n border-top: 1px solid var(--settings-border);\n}\n\n.settings-harness-account > div {\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n@media (max-width: 700px) {\n .settings-harness-account {\n grid-template-columns: minmax(0, 1fr);\n padding: 16px;\n }\n}\n\n.settings-account-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 20px;\n}\n\n.settings-account-header > :first-child {\n min-width: 0;\n flex: 1 1 auto;\n}\n\n.settings-account-header > .settings-command-button {\n flex: none;\n white-space: nowrap;\n}\n\n.settings-account-header .settings-section-label {\n margin: 0;\n padding: 0;\n font-size: 27px;\n line-height: 1.4;\n font-weight: 650;\n letter-spacing: -0.035em;\n}\n.settings-account-header .settings-page-description {\n margin: 8px 0 0;\n font-size: 13px;\n}\n\n.settings-account-status {\n margin: 0;\n color: var(--settings-muted);\n font-size: 12px;\n}\n.settings-account-status:empty {\n display: none;\n}\n\n.settings-account-help-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n margin-top: 20px;\n flex-wrap: wrap;\n}\n.settings-account-task-hint {\n display: flex;\n align-items: flex-start;\n gap: 9px;\n margin: 0;\n color: var(--settings-muted);\n font-size: 12px;\n flex: 1 1 280px;\n}\n.settings-account-task-hint svg {\n flex: none;\n margin-top: 1px;\n}\n.settings-account-help-button {\n display: inline-flex;\n align-items: center;\n gap: 7px;\n padding: 8px 12px;\n color: var(--settings-muted);\n font-size: 12px;\n background: transparent;\n border: 0;\n border-radius: 7px;\n cursor: pointer;\n}\n.settings-account-help-button:hover {\n color: var(--settings-text);\n background: var(--settings-hover);\n}\n.settings-account-device-code-note {\n margin: 12px 0 0;\n font-size: 12px;\n padding: 10px 12px;\n color: var(--settings-warning);\n background: var(--settings-warning-bg);\n border: 1px solid var(--settings-warning-border);\n border-radius: 8px;\n}\n\n.settings-account-toolbar {\n margin-top: 27px;\n padding: 18px 0;\n border-top: 1px solid var(--settings-border);\n display: flex;\n align-items: center;\n gap: 14px;\n flex-wrap: wrap;\n}\n.settings-account-count {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n white-space: nowrap;\n}\n.settings-account-count > :last-child {\n color: var(--settings-muted);\n font-variant-numeric: tabular-nums;\n}\n.settings-account-search {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--settings-muted);\n margin-right: auto;\n min-width: 0;\n max-width: 100%;\n}\n.settings-account-search svg {\n flex: none;\n}\n.settings-account-toolbar input {\n min-width: 80px;\n width: 150px;\n max-width: 100%;\n padding: 5px 0;\n color: var(--settings-text);\n background: transparent;\n border: 0;\n font-size: 13px;\n}\n.settings-account-toolbar input::placeholder {\n color: var(--settings-muted);\n}\n.settings-account-display-controls {\n display: flex;\n padding: 3px;\n border: 1px solid var(--settings-border);\n border-radius: 7px;\n background: var(--settings-inset);\n}\n.settings-account-display-controls button {\n padding: 4px 10px;\n color: var(--settings-muted);\n background: transparent;\n border: 0;\n border-radius: 4px;\n font-size: 12px;\n cursor: pointer;\n}\n.settings-account-display-controls button:hover {\n color: var(--settings-text);\n}\n.settings-account-display-controls button[aria-pressed="true"] {\n color: var(--settings-text);\n background: var(--settings-active);\n}\n\n.settings-account-list {\n --account-border: light-dark(#e2e2e8, #36363b);\n --account-muted: light-dark(#676773, #a5a5af);\n border: 1px solid var(--account-border);\n border-radius: 11px;\n overflow: hidden;\n container-type: inline-size;\n}\n.settings-account-table {\n width: 100%;\n table-layout: fixed;\n border-collapse: collapse;\n font-size: 12px;\n}\n.settings-account-table th {\n padding: 13px 20px;\n color: var(--account-muted);\n background: light-dark(#f8f8fa, #202024);\n font-size: 11px;\n font-weight: 500;\n text-align: left;\n}\n.settings-account-table th:nth-child(1) {\n width: 32%;\n}\n.settings-account-table th:nth-child(2) {\n width: 38%;\n}\n.settings-account-table th:nth-child(3) {\n width: 12%;\n}\n.settings-account-table th:nth-child(4) {\n width: 18%;\n text-align: right;\n}\n.settings-account-table td {\n padding: 19px 20px;\n vertical-align: middle;\n border-top: 1px solid var(--settings-divider);\n}\n.settings-account-row {\n background: light-dark(#ffffff, #232326);\n}\n.settings-account-row:hover {\n background: light-dark(#f7f7fa, #26262a);\n}\n.settings-account-row__person {\n display: grid;\n grid-template-columns: 34px minmax(0, 1fr);\n align-items: center;\n gap: 11px;\n min-width: 0;\n}\n.settings-account-row__mark {\n display: grid;\n place-items: center;\n width: 34px;\n height: 34px;\n color: light-dark(#67558d, #c3baff);\n background: light-dark(#f0ecf7, #353044);\n border: 1px solid light-dark(#d9d0e6, #4d435f);\n border-radius: 10px;\n}\n.settings-account-row__identity {\n min-width: 0;\n}\n.settings-account-title {\n display: flex;\n align-items: center;\n gap: 6px;\n flex-wrap: wrap;\n}\n.settings-account-email {\n min-width: 0;\n overflow: hidden;\n font-size: 13px;\n font-weight: 550;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.settings-account-metadata {\n display: flex;\n align-items: center;\n min-width: 0;\n gap: 7px;\n margin-top: 4px;\n color: var(--settings-muted);\n}\n.settings-account-domain {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.settings-account-plan-separator {\n flex: none;\n}\n.settings-account-plan {\n flex: none;\n padding: 1px 6px;\n color: var(--settings-muted);\n border: 1px solid var(--settings-border);\n border-radius: 5px;\n font-size: 11px;\n white-space: nowrap;\n}\n.settings-account-plan--highlighted {\n color: light-dark(#654f91, #c8bfff);\n background: light-dark(#f2edf9, #a99bff18);\n border-color: light-dark(#d9ccea, #a99bff52);\n font-weight: 600;\n}\n.settings-account-active {\n flex: none;\n padding: 2px 7px;\n color: light-dark(#66548e, #bdb4ff);\n background: light-dark(#f4f0fb, #aca0ff12);\n border: 1px solid light-dark(#dfd5f1, #aca0ff24);\n border-radius: 5px;\n font-size: 11px;\n white-space: nowrap;\n}\n\n.settings-account-usage {\n display: grid;\n gap: 14px;\n max-width: 380px;\n}\n.settings-account-usage__meter {\n display: grid;\n grid-template-columns: 48px minmax(36px, 1fr) 96px;\n align-items: center;\n gap: 3px 10px;\n}\n:host([lang="zh-CN"]) .settings-account-usage__meter {\n grid-template-columns: 48px minmax(36px, 1fr) 72px;\n}\n.settings-account-usage__meter--balance {\n display: flex;\n grid-template-columns: none;\n justify-content: flex-start;\n gap: 6px;\n}\n.settings-account-usage__balance {\n display: inline-flex;\n align-items: baseline;\n gap: 4px;\n font-size: 14px;\n font-weight: 600;\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n}\n\n.settings-account-usage__title {\n color: light-dark(#5d5d68, #c3c3cd);\n font-size: 12px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.settings-account-usage__percent {\n display: flex;\n align-items: baseline;\n justify-content: flex-end;\n gap: 4px;\n font-size: 14px;\n font-weight: 600;\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n}\n.settings-account-usage__value-label {\n color: var(--settings-muted);\n font-size: 11px;\n font-weight: 400;\n}\n.settings-account-usage__percent--warn {\n color: var(--settings-warning);\n}\n.settings-account-usage__percent--hot {\n color: var(--settings-danger);\n}\n.settings-account-usage__bar {\n height: 4px;\n overflow: hidden;\n background: light-dark(#e3e1e8, #3c3c43);\n border-radius: 4px;\n}\n.settings-account-usage__bar > span {\n display: block;\n height: 100%;\n background: light-dark(#81769e, #9993b8);\n border-radius: inherit;\n}\n.settings-account-usage__bar--warn > span {\n background: var(--settings-warning);\n}\n.settings-account-usage__bar--hot > span {\n background: var(--settings-danger);\n}\n.settings-account-usage__sub {\n grid-column: 2 / -1;\n color: var(--account-muted);\n font-size: 11px;\n font-variant-numeric: tabular-nums;\n overflow-wrap: anywhere;\n}\n.settings-account-usage__message,\n.settings-account-unknown {\n color: var(--settings-muted);\n}\n.settings-account-usage > button {\n justify-self: start;\n}\n.settings-account-actions {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n}\n.settings-account-action {\n padding: 8px 10px;\n min-height: 36px;\n font-size: 12px;\n color: var(--settings-text);\n background: transparent;\n border: 1px solid transparent;\n border-radius: 7px;\n white-space: nowrap;\n cursor: pointer;\n}\n.settings-account-action:hover {\n background: var(--settings-hover);\n}\n.settings-account-action:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n.settings-account-actions .settings-account-delete {\n color: var(--settings-muted);\n}\n.settings-account-actions .settings-account-delete:hover,\n.settings-account-actions .settings-account-delete:focus-visible {\n color: var(--settings-danger);\n background: var(--settings-danger-bg);\n}\n.settings-account-mobile-label {\n display: none;\n}\n.settings-account-reset-summary {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n min-height: 32px;\n padding: 3px 0;\n font-size: 12px;\n white-space: nowrap;\n color: var(--settings-text);\n background: transparent;\n border: 0;\n border-radius: 5px;\n cursor: pointer;\n}\n.settings-account-reset-summary:hover {\n background: var(--settings-hover);\n}\n.settings-account-reset-summary[aria-expanded="true"] > svg:last-child {\n transform: rotate(90deg);\n}\n.settings-account-details-row > td {\n background: var(--settings-inset);\n}\n.settings-account-reset-details {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 16px;\n flex-wrap: wrap;\n}\n.settings-account-reset-details strong {\n font-size: 12px;\n}\n.settings-account-reset-expiry {\n margin: 6px 0;\n color: var(--settings-muted);\n font-size: 11px;\n}\n.settings-account-reset-expiry.is-warn {\n color: var(--settings-warning);\n}\n.settings-account-reset-expiry.is-hot {\n color: var(--settings-danger);\n}\n.settings-account-reset-list {\n margin: 8px 0 0;\n padding: 0;\n list-style: none;\n color: var(--settings-muted);\n font-size: 11px;\n}\n.settings-account-reset-list li + li {\n margin-top: 4px;\n}\n.settings-account-empty {\n text-align: center;\n color: var(--settings-muted);\n}\n.settings-account-verification {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n color: var(--settings-muted);\n}\n.settings-account-verification a {\n color: var(--settings-focus);\n overflow-wrap: anywhere;\n}\n.settings-account-verification code {\n padding: 5px 8px;\n color: var(--settings-text);\n font-size: 15px;\n font-weight: 600;\n letter-spacing: 0.08em;\n background: var(--settings-inset);\n border-radius: 6px;\n}\n.settings-account-list :focus-visible,\n.settings-account-toolbar :focus-visible,\n.settings-account-help-button:focus-visible {\n outline: 2px solid var(--settings-focus);\n outline-offset: -2px;\n}\n\n@container (min-width: 611px) and (max-width: 800px) {\n .settings-account-table th,\n .settings-account-table td {\n padding-left: 12px;\n padding-right: 12px;\n }\n .settings-account-table th:nth-child(1) {\n width: 30%;\n }\n .settings-account-table th:nth-child(2) {\n width: 37%;\n }\n .settings-account-table th:nth-child(4) {\n width: 21%;\n }\n}\n\n@container (max-width: 610px) {\n .settings-account-table,\n .settings-account-table tbody {\n display: block;\n }\n .settings-account-table thead {\n display: none;\n }\n .settings-account-row {\n display: grid;\n grid-template-columns: 1fr 1fr;\n padding: 16px;\n gap: 12px;\n border-bottom: 1px solid var(--settings-divider);\n }\n .settings-account-table .settings-account-row > td {\n padding: 0;\n border: 0;\n }\n .settings-account-row > td:nth-child(1),\n .settings-account-row > td:nth-child(2) {\n grid-column: 1 / -1;\n }\n .settings-account-row > td:nth-child(3) {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n .settings-account-mobile-label {\n display: inline;\n color: var(--settings-muted);\n font-size: 11px;\n }\n .settings-account-usage {\n max-width: none;\n }\n .settings-account-table tr:not(.settings-account-row),\n .settings-account-table tr:not(.settings-account-row) > td {\n display: block;\n }\n}\n\n@media (forced-colors: active) {\n .settings-account-usage__bar {\n border: 1px solid CanvasText;\n }\n .settings-account-usage__bar > span {\n background: Highlight;\n }\n}\n';
26087
26360
 
26088
26361
  // src/settings/shell.ts
26089
26362
  var SETTINGS_SHELL_ATTRIBUTE = "data-codexhost-settings-shell";
@@ -26676,11 +26949,11 @@ ${accounts_default}`;
26676
26949
  options.getConnectionDiagnostics ?? (() => null),
26677
26950
  options.getAccountClient ?? (() => null),
26678
26951
  options.getSessionImportClient ?? (() => null),
26679
- async (threadId, signal) => {
26952
+ async (threadId, signal, hostId) => {
26680
26953
  if (!options.openImportedThread) {
26681
26954
  throw new Error("Imported Thread navigation is unavailable");
26682
26955
  }
26683
- await options.openImportedThread(threadId, signal);
26956
+ await options.openImportedThread(threadId, signal, hostId);
26684
26957
  if (!disposed && !signal.aborted) shell?.close();
26685
26958
  }
26686
26959
  );
@@ -26835,7 +27108,10 @@ ${accounts_default}`;
26835
27108
  opencode: harnessIdSchema.parse("opencode"),
26836
27109
  grok: harnessIdSchema.parse("grok"),
26837
27110
  omp: harnessIdSchema.parse("omp"),
26838
- antigravity: harnessIdSchema.parse("antigravity")
27111
+ antigravity: harnessIdSchema.parse("antigravity"),
27112
+ hermes: harnessIdSchema.parse("hermes"),
27113
+ muse: harnessIdSchema.parse("muse"),
27114
+ "kiro-cli": harnessIdSchema.parse("kiro-cli")
26839
27115
  };
26840
27116
  var externalAgents = [
26841
27117
  "pi",
@@ -26844,7 +27120,10 @@ ${accounts_default}`;
26844
27120
  "opencode",
26845
27121
  "grok",
26846
27122
  "omp",
26847
- "antigravity"
27123
+ "antigravity",
27124
+ "hermes",
27125
+ "muse",
27126
+ "kiro-cli"
26848
27127
  ];
26849
27128
  function isRetryableHarnessAvailability(availability, error51) {
26850
27129
  return availability !== void 0 && availability !== "ready" && availability !== "notInstalled" && error51?.retryable === true;
@@ -27014,7 +27293,42 @@ ${accounts_default}`;
27014
27293
  ...permissionModeId ? { permissionModeId } : {}
27015
27294
  };
27016
27295
  }
27017
- throw new Error("Thread owner is not a Renderer Agent");
27296
+ if (inspection.harnessId === "hermes") {
27297
+ return {
27298
+ agent: "hermes",
27299
+ ...inspection.effectiveModel ? { model: inspection.effectiveModel } : {},
27300
+ ...inspection.effectivePermissionModeId ? { permissionModeId: inspection.effectivePermissionModeId } : {}
27301
+ };
27302
+ }
27303
+ return restoredPluginRouteOwnership(inspection);
27304
+ }
27305
+ function isKnownExternalRendererAgent(value) {
27306
+ return KNOWN_RENDERER_AGENTS.includes(value) && value !== "codex";
27307
+ }
27308
+ function restoredPluginRouteOwnership(inspection) {
27309
+ if (inspection.owner !== "external") {
27310
+ throw new Error("Thread owner is not a Renderer Agent");
27311
+ }
27312
+ const agent = inspection.harnessId;
27313
+ if (!isKnownExternalRendererAgent(agent)) {
27314
+ throw new Error("Thread owner is not a Renderer Agent");
27315
+ }
27316
+ const transportSelection = decodeHarnessPluginRoute(inspection.transportModelId);
27317
+ if (transportSelection && transportSelection.harnessId !== agent) {
27318
+ throw new Error(`${agent} Thread reported an incompatible transport Model`);
27319
+ }
27320
+ if (!transportSelection && !inspection.effectiveModel && !inspection.effectivePermissionModeId && !selectableThinkingOptionId(inspection)) {
27321
+ throw new Error(`${agent} Thread reported an incompatible transport Model`);
27322
+ }
27323
+ const model = inspection.effectiveModel ?? transportSelection?.model;
27324
+ const thinkingOptionId = selectableThinkingOptionId(inspection) ?? transportSelection?.thinkingOptionId;
27325
+ const permissionModeId = inspection.effectivePermissionModeId ?? transportSelection?.permissionModeId;
27326
+ return {
27327
+ agent,
27328
+ ...model ? { model } : {},
27329
+ ...thinkingOptionId ? { thinkingOptionId } : {},
27330
+ ...permissionModeId ? { permissionModeId } : {}
27331
+ };
27018
27332
  }
27019
27333
  function isOwnershipSubmissionBlocked(status) {
27020
27334
  return status === "loading" || status === "error";
@@ -27078,6 +27392,7 @@ ${accounts_default}`;
27078
27392
  function installRendererBindingProbe(options = {}) {
27079
27393
  const existing = window.__codexhostRendererBindingProbeV1;
27080
27394
  if (existing) return existing;
27395
+ const disposeApprovalStyle = installRendererApprovalStyle(document);
27081
27396
  const enabledAgents = [...new Set(options.enabledAgents ?? DEFAULT_RENDERER_AGENTS)];
27082
27397
  const enabledAgentSet = new Set(enabledAgents);
27083
27398
  const controller = new DraftAgentController({
@@ -27131,18 +27446,20 @@ ${accounts_default}`;
27131
27446
  getAccountClient: () => modelControl,
27132
27447
  getConnectionDiagnostics: () => connectionDiagnostics,
27133
27448
  getSessionImportClient: () => {
27134
- const client = modelClientForHost("local");
27449
+ const hostId = activeModelHostId() ?? "local";
27450
+ const client = modelClientForHost(hostId);
27135
27451
  const sources = client?.listSessionImportSources;
27136
27452
  const list = client?.listHarnessSessions;
27137
27453
  const importSession = client?.importHarnessSession;
27138
27454
  if (!sources || !list || !importSession) return null;
27139
27455
  return {
27456
+ hostId,
27140
27457
  listSessionImportSources: () => sources(),
27141
27458
  listHarnessSessions: (input) => list(input),
27142
27459
  importHarnessSession: (input) => importSession(input)
27143
27460
  };
27144
27461
  },
27145
- openImportedThread: (threadId, signal) => openRendererThread(threadId, { hostId: "local", signal }),
27462
+ openImportedThread: (threadId, signal, hostId) => openRendererThread(threadId, { hostId: hostId ?? "local", signal }),
27146
27463
  onLocaleChange() {
27147
27464
  for (const mounted of mountedByComposer.values()) renderMounted(mounted);
27148
27465
  }
@@ -27165,7 +27482,10 @@ ${accounts_default}`;
27165
27482
  opencode: void 0,
27166
27483
  grok: void 0,
27167
27484
  omp: void 0,
27168
- antigravity: void 0
27485
+ antigravity: void 0,
27486
+ hermes: void 0,
27487
+ muse: void 0,
27488
+ "kiro-cli": void 0
27169
27489
  },
27170
27490
  webUi: Object.fromEntries(
27171
27491
  externalAgents.map((agent) => [agent, false])
@@ -27648,7 +27968,22 @@ ${accounts_default}`;
27648
27968
  return;
27649
27969
  }
27650
27970
  if (current.phase === "locked" && previousModel && !previousModelAvailable) {
27651
- throw new Error("Existing Thread Model is absent from the current Catalog");
27971
+ mounted.modelView = {
27972
+ status: "error",
27973
+ catalog: inspection.catalog,
27974
+ selected: previousModel,
27975
+ thinkingSelectionSupported: inspection.capabilities.configuration.selectThinkingOption,
27976
+ error: "Existing Thread Model is absent from the current Catalog"
27977
+ };
27978
+ if (selectedPermissionModeId && mounted.permissionModeView.catalog) {
27979
+ mounted.permissionModeView = {
27980
+ status: "ready",
27981
+ catalog: mounted.permissionModeView.catalog,
27982
+ selected: selectedPermissionModeId,
27983
+ ...permissionModeLock
27984
+ };
27985
+ }
27986
+ return;
27652
27987
  }
27653
27988
  const selected = previousModelAvailable ? previousModel : preferredConfiguration?.model ?? inspection.catalog.defaultModel;
27654
27989
  if (!selected) throw new Error("External Harness did not report its default Model");
@@ -28891,6 +29226,7 @@ ${accounts_default}`;
28891
29226
  dispose() {
28892
29227
  if (disposed) return;
28893
29228
  disposed = true;
29229
+ disposeApprovalStyle();
28894
29230
  usageNotificationDispose?.();
28895
29231
  usageNotificationDispose = null;
28896
29232
  adapterDispose?.();
@@ -28982,6 +29318,7 @@ lucide/dist/esm/icons/circle-off.mjs:
28982
29318
  lucide/dist/esm/icons/copy.mjs:
28983
29319
  lucide/dist/esm/icons/ellipsis.mjs:
28984
29320
  lucide/dist/esm/icons/download.mjs:
29321
+ lucide/dist/esm/icons/hard-drive-download.mjs:
28985
29322
  lucide/dist/esm/icons/external-link.mjs:
28986
29323
  lucide/dist/esm/icons/folder-input.mjs:
28987
29324
  lucide/dist/esm/icons/grip-vertical.mjs: