@codexhost/cli-darwin-x64 0.15.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -7,7 +7,7 @@ Run Pi and Claude Code as first-class external harnesses inside Codex Desktop.
7
7
  ## Install
8
8
 
9
9
  ```bash
10
- npm install -g @codexhost/cli@0.15.0
10
+ npm install -g @codexhost/cli@0.16.0
11
11
  ```
12
12
 
13
13
  Do not install this package directly. npm selects it through the optional dependencies of `@codexhost/cli`.
@@ -1 +1 @@
1
- {"schemaVersion":1,"version":"0.15.0","distribution":"npm","target":"macos-x64"}
1
+ {"schemaVersion":1,"version":"0.16.0","distribution":"npm","target":"macos-x64"}
@@ -826,7 +826,8 @@ function createBackgroundUpdateManager(dependencies = {}) {
826
826
  kind: "npm",
827
827
  node_path: await requireRegularFile(options.nodePath, "npm Node.js executable"),
828
828
  npm_cli_path: await requireRegularFile(options.npmCliPath, "npm CLI"),
829
- npm_launcher_path: await requireRegularFile(options.npmLauncherPath, "npm codexhost launcher")
829
+ npm_launcher_path: await requireRegularFile(options.npmLauncherPath, "npm codexhost launcher"),
830
+ npm_package_root: requireAbsolutePath(options.packageRoot, "npm platform package root")
830
831
  });
831
832
  } catch (error51) {
832
833
  await writeFailedStatus(common.statusPath, common.version, "npm", error51);
@@ -15568,6 +15569,8 @@ var usageStatisticsTotalsSchema = external_exports.strictObject({
15568
15569
  cachedInputTokens: count,
15569
15570
  cacheWriteInputTokens: count,
15570
15571
  cacheKnownInputTokens: count,
15572
+ cacheHitCachedInputTokens: count,
15573
+ cacheHitInputTokens: count,
15571
15574
  outputTokens: count,
15572
15575
  reasoningOutputTokens: count,
15573
15576
  /** USD at the public price, summed over the priced requests only. */
@@ -14789,6 +14789,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
14789
14789
  cachedInputTokens: count,
14790
14790
  cacheWriteInputTokens: count,
14791
14791
  cacheKnownInputTokens: count,
14792
+ cacheHitCachedInputTokens: count,
14793
+ cacheHitInputTokens: count,
14792
14794
  outputTokens: count,
14793
14795
  reasoningOutputTokens: count,
14794
14796
  /** USD at the public price, summed over the priced requests only. */
@@ -16185,6 +16187,16 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
16185
16187
  ["path", { d: "M12 13.5V8" }]
16186
16188
  ];
16187
16189
 
16190
+ // ../../node_modules/lucide/dist/esm/icons/calendar-clock.mjs
16191
+ var CalendarClock = [
16192
+ ["path", { d: "M16 14v2.2l1.6 1" }],
16193
+ ["path", { d: "M16 2v3" }],
16194
+ ["path", { d: "M21 7.338V5a2 2 0 00-2-2H5a2 2 0 00-2 2v14a2 2 0 002 2h2.338" }],
16195
+ ["path", { d: "M3 9h5.859" }],
16196
+ ["path", { d: "M8 2v3" }],
16197
+ ["circle", { cx: "16", cy: "16", r: "6" }]
16198
+ ];
16199
+
16188
16200
  // ../../node_modules/lucide/dist/esm/icons/circle-check.mjs
16189
16201
  var CircleCheck = [
16190
16202
  ["circle", { cx: "12", cy: "12", r: "10" }],
@@ -16505,6 +16517,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
16505
16517
  routes: Route,
16506
16518
  gateway: Network,
16507
16519
  updates: CircleArrowUp,
16520
+ schedules: CalendarClock,
16508
16521
  about: Info,
16509
16522
  info: Info,
16510
16523
  "external-link": ExternalLink,
@@ -21010,7 +21023,6 @@ th[aria-sort] .console-usage-sort__mark {
21010
21023
  updateLatestVersion: "Latest version",
21011
21024
  updateUpToDate: "You are up to date.",
21012
21025
  updateAvailable: "A new version is available.",
21013
- updateWindowsManualRequired: "Automatic updates are unavailable on Windows. Update manually below.",
21014
21026
  updateAndRestart: "Update",
21015
21027
  updateChecking: "Checking for updates...",
21016
21028
  updateDownloading: "Downloading update...",
@@ -21025,8 +21037,7 @@ th[aria-sort] .console-usage-sort__mark {
21025
21037
  updateFailed: "Update failed.",
21026
21038
  updateRetry: "Retry",
21027
21039
  updateManualNpmDescription: "To update manually, quit codexhost and run this command:",
21028
- updateWindowsNpmDescription: "Automatic updates are unavailable on Windows. Quit codexhost and run this command in a terminal:",
21029
- updateWindowsInstallerDescription: "Automatic updates are unavailable on Windows. Download and run the installer for this system.",
21040
+ updateWindowsInstallerDescription: "To update manually, download and run the installer for this system.",
21030
21041
  updateManualTitle: "Manual update",
21031
21042
  updateManualFallbackDescription: "The automatic update did not complete. Run this command in a terminal instead, then quit Codex and relaunch it with codexhost.",
21032
21043
  updateCopyCommand: "Copy",
@@ -21291,7 +21302,6 @@ th[aria-sort] .console-usage-sort__mark {
21291
21302
  updateLatestVersion: "\u6700\u65B0\u7248\u672C",
21292
21303
  updateUpToDate: "\u5F53\u524D\u5DF2\u662F\u6700\u65B0\u7248\u672C\u3002",
21293
21304
  updateAvailable: "\u6709\u65B0\u7248\u672C\u53EF\u7528\u3002",
21294
- updateWindowsManualRequired: "Windows \u6682\u4E0D\u652F\u6301\u81EA\u52A8\u66F4\u65B0\uFF0C\u8BF7\u5728\u4E0B\u65B9\u624B\u52A8\u66F4\u65B0\u3002",
21295
21305
  updateAndRestart: "\u66F4\u65B0",
21296
21306
  updateChecking: "\u6B63\u5728\u68C0\u67E5\u66F4\u65B0...",
21297
21307
  updateDownloading: "\u6B63\u5728\u4E0B\u8F7D\u66F4\u65B0...",
@@ -21306,8 +21316,7 @@ th[aria-sort] .console-usage-sort__mark {
21306
21316
  updateFailed: "\u66F4\u65B0\u5931\u8D25\u3002",
21307
21317
  updateRetry: "\u91CD\u8BD5",
21308
21318
  updateManualNpmDescription: "\u5982\u9700\u624B\u52A8\u66F4\u65B0\uFF0C\u8BF7\u5728\u7EC8\u7AEF\u8FD0\u884C\u4EE5\u4E0B\u547D\u4EE4\u3002\u66F4\u65B0\u5B8C\u6210\u540E\uFF0C\u8BF7\u9000\u51FA Codex \u5E76\u901A\u8FC7 codexhost \u91CD\u65B0\u542F\u52A8\u3002",
21309
- updateWindowsNpmDescription: "Windows \u6682\u4E0D\u652F\u6301\u81EA\u52A8\u66F4\u65B0\u3002\u8BF7\u9000\u51FA codexhost\uFF0C\u5728\u7EC8\u7AEF\u8FD0\u884C\u4EE5\u4E0B\u547D\u4EE4\u5B8C\u6210\u66F4\u65B0\u3002",
21310
- updateWindowsInstallerDescription: "Windows \u6682\u4E0D\u652F\u6301\u81EA\u52A8\u66F4\u65B0\u3002\u8BF7\u4E0B\u8F7D\u5E76\u8FD0\u884C\u9002\u7528\u4E8E\u5F53\u524D\u7CFB\u7EDF\u7684\u5B89\u88C5\u5305\u3002",
21319
+ updateWindowsInstallerDescription: "\u5982\u9700\u624B\u52A8\u66F4\u65B0\uFF0C\u8BF7\u4E0B\u8F7D\u5E76\u8FD0\u884C\u9002\u7528\u4E8E\u5F53\u524D\u7CFB\u7EDF\u7684\u5B89\u88C5\u5305\u3002",
21311
21320
  updateManualTitle: "\u624B\u52A8\u66F4\u65B0",
21312
21321
  updateManualFallbackDescription: "\u81EA\u52A8\u66F4\u65B0\u672A\u80FD\u5B8C\u6210\uFF0C\u8BF7\u6539\u7528\u4E0B\u5217\u547D\u4EE4\u5728\u7EC8\u7AEF\u624B\u52A8\u66F4\u65B0\u3002\u5B8C\u6210\u540E\u8BF7\u9000\u51FA Codex \u5E76\u901A\u8FC7 codexhost \u91CD\u65B0\u542F\u52A8\u3002",
21313
21322
  updateCopyCommand: "\u590D\u5236",
@@ -21484,6 +21493,8 @@ th[aria-sort] .console-usage-sort__mark {
21484
21493
  cachedInputTokens: 0,
21485
21494
  cacheWriteInputTokens: 0,
21486
21495
  cacheKnownInputTokens: 0,
21496
+ cacheHitCachedInputTokens: 0,
21497
+ cacheHitInputTokens: 0,
21487
21498
  outputTokens: 0,
21488
21499
  reasoningOutputTokens: 0,
21489
21500
  costUsd: 0,
@@ -21497,6 +21508,8 @@ th[aria-sort] .console-usage-sort__mark {
21497
21508
  target.cachedInputTokens += source.cachedInputTokens;
21498
21509
  target.cacheWriteInputTokens += source.cacheWriteInputTokens;
21499
21510
  target.cacheKnownInputTokens += source.cacheKnownInputTokens;
21511
+ target.cacheHitCachedInputTokens += source.cacheHitCachedInputTokens;
21512
+ target.cacheHitInputTokens += source.cacheHitInputTokens;
21500
21513
  target.outputTokens += source.outputTokens;
21501
21514
  target.reasoningOutputTokens += source.reasoningOutputTokens;
21502
21515
  target.costUsd += source.costUsd;
@@ -21551,7 +21564,9 @@ th[aria-sort] .console-usage-sort__mark {
21551
21564
  };
21552
21565
  }
21553
21566
  function cacheHitRate(totals2) {
21554
- return totals2.cacheKnownInputTokens > 0 ? formatRendererCacheHitRate(totals2.cachedInputTokens / totals2.cacheKnownInputTokens * 100) : "\u2014";
21567
+ return totals2.cacheHitInputTokens > 0 ? formatRendererCacheHitRate(
21568
+ totals2.cacheHitCachedInputTokens / totals2.cacheHitInputTokens * 100
21569
+ ) : "\u2014";
21555
21570
  }
21556
21571
  function formatMeasure(measure, value, locale = "en") {
21557
21572
  return measure === "cost" ? money(value) : count2(value, locale);
@@ -23418,7 +23433,7 @@ ${messages.creditsCoverage}: ${value.reportedRequests} / ${row.requests}` : void
23418
23433
  {
23419
23434
  key: "hit",
23420
23435
  label: messages.cacheHit,
23421
- sort: (row) => row.cacheKnownInputTokens > 0 ? row.cachedInputTokens / row.cacheKnownInputTokens : -1,
23436
+ sort: (row) => row.cacheHitInputTokens > 0 ? row.cacheHitCachedInputTokens / row.cacheHitInputTokens : -1,
23422
23437
  cell: (row) => cacheHitRate(row)
23423
23438
  },
23424
23439
  {
@@ -29032,6 +29047,43 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
29032
29047
  });
29033
29048
  }
29034
29049
 
29050
+ // src/settings/harness-schedules-page.ts
29051
+ function createHarnessSchedulesPage(messages, options) {
29052
+ const t = (zh, en) => messages.locale === "zh-CN" ? zh : en;
29053
+ return {
29054
+ id: "harness-schedules",
29055
+ label: t("\u5B9A\u65F6\u4EFB\u52A1", "Schedules"),
29056
+ icon: "schedules",
29057
+ mount(context) {
29058
+ const navigate = () => {
29059
+ context.content.replaceChildren();
29060
+ void context.runLatest((signal) => options.openSchedules(signal), {
29061
+ success() {
29062
+ },
29063
+ failure() {
29064
+ const document2 = context.content.ownerDocument;
29065
+ const status = document2.createElement("p");
29066
+ status.setAttribute("role", "status");
29067
+ status.className = "text-sm text-settings-muted";
29068
+ status.textContent = t(
29069
+ "\u65E0\u6CD5\u6253\u5F00\u5B98\u65B9\u5B9A\u65F6\u4EFB\u52A1\u9875\uFF0C\u8BF7\u91CD\u8BD5\u6216\u4ECE\u5B98\u65B9\u4FA7\u680F\u8FDB\u5165\u3002",
29070
+ "Could not open the official schedules page. Retry or use the Desktop sidebar."
29071
+ );
29072
+ const retry = document2.createElement("button");
29073
+ retry.type = "button";
29074
+ retry.className = "rounded-lg px-3 py-2 text-sm text-settings-text hover:bg-settings-hover focus-visible:outline-2 focus-visible:outline-settings-focus";
29075
+ retry.textContent = t("\u91CD\u8BD5", "Retry");
29076
+ retry.addEventListener("click", navigate);
29077
+ context.content.replaceChildren(status, retry);
29078
+ }
29079
+ });
29080
+ };
29081
+ navigate();
29082
+ return void 0;
29083
+ }
29084
+ };
29085
+ }
29086
+
29035
29087
  // src/settings/update-request.ts
29036
29088
  var RENDERER_UPDATE_REQUEST_TIMEOUT_MS = 15e3;
29037
29089
  var RendererUpdateRequestTimeoutError = class extends Error {
@@ -29359,8 +29411,8 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
29359
29411
  const starBanner = updateStarBanner(document2, messages);
29360
29412
  context.content.append(heading, metadata, panel, controls, starBanner, notes);
29361
29413
  const setManualFallback = (fallback) => {
29362
- controls.className = !fallback && !windows ? "settings-update-controls is-quiet" : "settings-update-controls";
29363
- manualNpmDescription.textContent = windows ? messages.updateWindowsNpmDescription : fallback ? messages.updateManualFallbackDescription : messages.updateManualNpmDescription;
29414
+ controls.className = fallback ? "settings-update-controls" : "settings-update-controls is-quiet";
29415
+ manualNpmDescription.textContent = fallback ? messages.updateManualFallbackDescription : messages.updateManualNpmDescription;
29364
29416
  manualNpmDescription.className = fallback ? "settings-update-manual-description is-fallback" : "settings-update-manual-description";
29365
29417
  };
29366
29418
  let pollTimer;
@@ -29510,14 +29562,14 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
29510
29562
  panel.dataset.updateState = view;
29511
29563
  panel.replaceChildren();
29512
29564
  setManualFallback(Boolean(result.error) || actionableStatus !== null);
29513
- const inlineUpdate = !result.error && !windows && !actionableStatus && result.updateAvailable;
29565
+ const inlineUpdate = !result.error && !actionableStatus && result.updateAvailable;
29514
29566
  if (inlineUpdate) panel.dataset.inline = "";
29515
29567
  else delete panel.dataset.inline;
29516
29568
  panel.append(
29517
29569
  createPanelHead(
29518
29570
  document2,
29519
29571
  view,
29520
- actionableStatus ? statusMessage(actionableStatus, messages) ?? messages.updateFailed : result.error ? messages.updateFailed : result.updateAvailable ? windows ? messages.updateWindowsManualRequired : messages.updateAvailable : messages.updateUpToDate
29572
+ actionableStatus ? statusMessage(actionableStatus, messages) ?? messages.updateFailed : result.error ? messages.updateFailed : result.updateAvailable ? messages.updateAvailable : messages.updateUpToDate
29521
29573
  )
29522
29574
  );
29523
29575
  if (actionableStatus?.error) {
@@ -29533,7 +29585,7 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
29533
29585
  panel.append(error51);
29534
29586
  }
29535
29587
  const buttons = [];
29536
- if (!windows && result.updateAvailable && result.installationAvailable) {
29588
+ if (result.updateAvailable && result.installationAvailable) {
29537
29589
  const update = document2.createElement("button");
29538
29590
  update.type = "button";
29539
29591
  update.className = "settings-command-button";
@@ -29582,11 +29634,12 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
29582
29634
  }
29583
29635
  });
29584
29636
  }
29585
- function createDefaultRendererSettingsPages(messages = DEFAULT_RENDERER_SETTINGS_MESSAGES, getUpdateClient = () => null, getDiagnostics = () => null, getAccountClient = () => null, getSessionImportClient = () => null, openImportedThread = () => Promise.reject(new Error("Imported Thread navigation is unavailable")), getLoadedSessionsClient = () => null, getRemoteConnections = () => null, requestUsageStatistics = () => Promise.reject(new Error("Local Host connection is unavailable")), usageStatisticsHosts) {
29637
+ function createDefaultRendererSettingsPages(messages = DEFAULT_RENDERER_SETTINGS_MESSAGES, getUpdateClient = () => null, getDiagnostics = () => null, getAccountClient = () => null, getSessionImportClient = () => null, openImportedThread = () => Promise.reject(new Error("Imported Thread navigation is unavailable")), getLoadedSessionsClient = () => null, getRemoteConnections = () => null, requestUsageStatistics = () => Promise.reject(new Error("Local Host connection is unavailable")), usageStatisticsHosts, harnessSchedules) {
29586
29638
  return Object.freeze([
29587
29639
  createConnectionsSettingsPage(messages, getDiagnostics, void 0, getRemoteConnections),
29588
29640
  createRemoteConnectionsPage(messages, getRemoteConnections),
29589
29641
  createAccountsSettingsPage(messages, getAccountClient),
29642
+ ...harnessSchedules ? [createHarnessSchedulesPage(messages, harnessSchedules)] : [],
29590
29643
  createSessionImportSettingsPage(
29591
29644
  messages,
29592
29645
  getSessionImportClient,
@@ -32226,7 +32279,7 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
32226
32279
  `;
32227
32280
 
32228
32281
  // src/settings/tailwind.css
32229
- var tailwind_default = '@layer properties, theme, base, components, utilities;\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-content:"";--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}@layer theme{:root,:host{--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.top-full{top:100%}.left-0{left:0}.z-20{z-index:20}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:0}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-7{margin-top:calc(var(--spacing) * 7)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-16{margin-top:calc(var(--spacing) * 16)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.ml-1{margin-left:var(--spacing)}.ml-\\[45px\\]{margin-left:45px}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.list-item{display:list-item}.table{display:table}.size-1\\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-8{height:calc(var(--spacing) * 8)}.min-h-6{min-height:calc(var(--spacing) * 6)}.min-h-\\[60px\\]{min-height:60px}.w-9{width:calc(var(--spacing) * 9)}.w-14{width:calc(var(--spacing) * 14)}.w-80{width:calc(var(--spacing) * 80)}.w-full{width:100%}.w-px{width:1px}.max-w-64{max-width:calc(var(--spacing) * 64)}.min-w-0{min-width:0}.flex-shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-help{cursor:help}.cursor-pointer{cursor:pointer}.resize{resize:both}.list-disc{list-style-type:disc}.appearance-none{appearance:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.overflow-x-auto{overflow-x:auto}.rounded-\\[10px\\]{border-radius:10px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-settings-border{border-color:var(--settings-border)}.border-settings-divider{border-color:var(--settings-divider)}.bg-settings-panel{background-color:var(--settings-panel)}.bg-settings-subtle{background-color:var(--settings-subtle)}.bg-settings-surface{background-color:var(--settings-surface)}.bg-settings-surface-hover{background-color:var(--settings-surface-hover)}.bg-transparent{background-color:#0000}.p-0{padding:0}.p-4{padding:calc(var(--spacing) * 4)}.\\!px-0{padding-inline:0!important}.px-1{padding-inline:var(--spacing)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pl-4{padding-left:calc(var(--spacing) * 4)}.\\!text-right{text-align:right!important}.text-left{text-align:left}.text-right{text-align:right}.align-top{vertical-align:top}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[11px\\]{font-size:11px}.text-\\[13px\\]{font-size:13px}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-7{--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.leading-\\[18px\\]{--tw-leading:18px;line-height:18px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.text-wrap{text-wrap:wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-pre-wrap{white-space:pre-wrap}.text-settings-muted{color:var(--settings-muted)}.text-settings-subtle{color:var(--settings-subtle)}.text-settings-text{color:var(--settings-text)}.lowercase{text-transform:lowercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.opacity-0{opacity:0}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\\[0_10px_30px_rgb\\(0_0_0\\/0\\.22\\)\\]{--tw-shadow:0 10px 30px var(--tw-shadow-color,#00000038);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring,.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-settings-border{--tw-ring-color:var(--settings-border)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.outline-none{--tw-outline-style:none;outline-style:none}.ring-inset{--tw-ring-inset:inset}.group-focus-within\\:visible:is(:where(.group):focus-within *){visibility:visible}.group-focus-within\\:opacity-100:is(:where(.group):focus-within *){opacity:1}@media (hover:hover){.group-hover\\:visible:is(:where(.group):hover *){visibility:visible}.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}}.group-data-\\[state\\=failed\\]\\/status\\:bg-settings-danger:is(:where(.group\\/status)[data-state=failed] *){background-color:var(--settings-danger)}.group-data-\\[state\\=unavailable\\]\\/status\\:bg-settings-warning:is(:where(.group\\/status)[data-state=unavailable] *){background-color:var(--settings-warning)}.marker\\:text-settings-subtle ::marker{color:var(--settings-subtle)}.marker\\:text-settings-subtle::marker{color:var(--settings-subtle)}.marker\\:text-settings-subtle ::-webkit-details-marker{color:var(--settings-subtle)}.marker\\:text-settings-subtle::-webkit-details-marker{color:var(--settings-subtle)}.before\\:absolute:before{content:var(--tw-content);position:absolute}.before\\:top-0\\.5:before{content:var(--tw-content);top:calc(var(--spacing) * .5)}.before\\:left-0\\.5:before{content:var(--tw-content);left:calc(var(--spacing) * .5)}.before\\:size-4:before{content:var(--tw-content);width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.before\\:rounded-full:before{content:var(--tw-content);border-radius:3.40282e38px}.before\\:bg-white:before{content:var(--tw-content);background-color:#fff}.before\\:shadow-\\[0_1px_2px_rgb\\(0_0_0\\/0\\.3\\)\\]:before{content:var(--tw-content);--tw-shadow:0 1px 2px var(--tw-shadow-color,#0000004d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.before\\:transition-transform:before{content:var(--tw-content);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.first\\:border-t-0:first-child{border-top-style:var(--tw-border-style);border-top-width:0}.first-of-type\\:mt-0:first-of-type{margin-top:0}.checked\\:bg-settings-focus:checked{background-color:var(--settings-focus)}.checked\\:ring-transparent:checked{--tw-ring-color:transparent}.checked\\:before\\:translate-x-4:checked:before{content:var(--tw-content);--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.focus-within\\:border-settings-focus:focus-within{border-color:var(--settings-focus)}@media (hover:hover){.hover\\:text-settings-text:hover{color:var(--settings-text)}}.focus-visible\\:text-settings-text:focus-visible{color:var(--settings-text)}.focus-visible\\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\\:outline-settings-focus:focus-visible{outline-color:var(--settings-focus)}.data-\\[invalid\\=true\\]\\:border-settings-danger[data-invalid=true]{border-color:var(--settings-danger)}.data-\\[invalid\\=true\\]\\:text-settings-danger[data-invalid=true],.data-\\[state\\=failed\\]\\:text-settings-danger[data-state=failed]{color:var(--settings-danger)}.data-\\[state\\=unavailable\\]\\:text-settings-warning[data-state=unavailable]{color:var(--settings-warning)}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@layer properties{\n *, ::before, ::after, ::backdrop{--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-alpha:100%;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-offset-width:0;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-drop-shadow-alpha:100%;--tw-content:"";--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}\n';
32282
+ var tailwind_default = '@layer properties, theme, base, components, utilities;\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-content:"";--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}@layer theme{:root,:host{--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.top-full{top:100%}.left-0{left:0}.z-20{z-index:20}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:0}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-7{margin-top:calc(var(--spacing) * 7)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-16{margin-top:calc(var(--spacing) * 16)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.ml-1{margin-left:var(--spacing)}.ml-\\[45px\\]{margin-left:45px}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.list-item{display:list-item}.table{display:table}.size-1\\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-8{height:calc(var(--spacing) * 8)}.min-h-6{min-height:calc(var(--spacing) * 6)}.min-h-\\[60px\\]{min-height:60px}.w-9{width:calc(var(--spacing) * 9)}.w-14{width:calc(var(--spacing) * 14)}.w-80{width:calc(var(--spacing) * 80)}.w-full{width:100%}.w-px{width:1px}.max-w-64{max-width:calc(var(--spacing) * 64)}.min-w-0{min-width:0}.flex-shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-help{cursor:help}.cursor-pointer{cursor:pointer}.resize{resize:both}.list-disc{list-style-type:disc}.appearance-none{appearance:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.overflow-x-auto{overflow-x:auto}.rounded-\\[10px\\]{border-radius:10px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-settings-border{border-color:var(--settings-border)}.border-settings-divider{border-color:var(--settings-divider)}.bg-settings-panel{background-color:var(--settings-panel)}.bg-settings-subtle{background-color:var(--settings-subtle)}.bg-settings-surface{background-color:var(--settings-surface)}.bg-settings-surface-hover{background-color:var(--settings-surface-hover)}.bg-transparent{background-color:#0000}.p-0{padding:0}.p-4{padding:calc(var(--spacing) * 4)}.\\!px-0{padding-inline:0!important}.px-1{padding-inline:var(--spacing)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pl-4{padding-left:calc(var(--spacing) * 4)}.\\!text-right{text-align:right!important}.text-left{text-align:left}.text-right{text-align:right}.align-top{vertical-align:top}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[11px\\]{font-size:11px}.text-\\[13px\\]{font-size:13px}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-7{--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.leading-\\[18px\\]{--tw-leading:18px;line-height:18px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.text-wrap{text-wrap:wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-pre-wrap{white-space:pre-wrap}.text-settings-muted{color:var(--settings-muted)}.text-settings-subtle{color:var(--settings-subtle)}.text-settings-text{color:var(--settings-text)}.lowercase{text-transform:lowercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.opacity-0{opacity:0}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\\[0_10px_30px_rgb\\(0_0_0\\/0\\.22\\)\\]{--tw-shadow:0 10px 30px var(--tw-shadow-color,#00000038);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring,.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-settings-border{--tw-ring-color:var(--settings-border)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.outline-none{--tw-outline-style:none;outline-style:none}.ring-inset{--tw-ring-inset:inset}.group-focus-within\\:visible:is(:where(.group):focus-within *){visibility:visible}.group-focus-within\\:opacity-100:is(:where(.group):focus-within *){opacity:1}@media (hover:hover){.group-hover\\:visible:is(:where(.group):hover *){visibility:visible}.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}}.group-data-\\[state\\=failed\\]\\/status\\:bg-settings-danger:is(:where(.group\\/status)[data-state=failed] *){background-color:var(--settings-danger)}.group-data-\\[state\\=unavailable\\]\\/status\\:bg-settings-warning:is(:where(.group\\/status)[data-state=unavailable] *){background-color:var(--settings-warning)}.marker\\:text-settings-subtle ::marker{color:var(--settings-subtle)}.marker\\:text-settings-subtle::marker{color:var(--settings-subtle)}.marker\\:text-settings-subtle ::-webkit-details-marker{color:var(--settings-subtle)}.marker\\:text-settings-subtle::-webkit-details-marker{color:var(--settings-subtle)}.before\\:absolute:before{content:var(--tw-content);position:absolute}.before\\:top-0\\.5:before{content:var(--tw-content);top:calc(var(--spacing) * .5)}.before\\:left-0\\.5:before{content:var(--tw-content);left:calc(var(--spacing) * .5)}.before\\:size-4:before{content:var(--tw-content);width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.before\\:rounded-full:before{content:var(--tw-content);border-radius:3.40282e38px}.before\\:bg-white:before{content:var(--tw-content);background-color:#fff}.before\\:shadow-\\[0_1px_2px_rgb\\(0_0_0\\/0\\.3\\)\\]:before{content:var(--tw-content);--tw-shadow:0 1px 2px var(--tw-shadow-color,#0000004d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.before\\:transition-transform:before{content:var(--tw-content);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.first\\:border-t-0:first-child{border-top-style:var(--tw-border-style);border-top-width:0}.first-of-type\\:mt-0:first-of-type{margin-top:0}.checked\\:bg-settings-focus:checked{background-color:var(--settings-focus)}.checked\\:ring-transparent:checked{--tw-ring-color:transparent}.checked\\:before\\:translate-x-4:checked:before{content:var(--tw-content);--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.focus-within\\:border-settings-focus:focus-within{border-color:var(--settings-focus)}@media (hover:hover){.hover\\:bg-settings-hover:hover{background-color:var(--settings-hover)}.hover\\:text-settings-text:hover{color:var(--settings-text)}}.focus-visible\\:text-settings-text:focus-visible{color:var(--settings-text)}.focus-visible\\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\\:outline-settings-focus:focus-visible{outline-color:var(--settings-focus)}.data-\\[invalid\\=true\\]\\:border-settings-danger[data-invalid=true]{border-color:var(--settings-danger)}.data-\\[invalid\\=true\\]\\:text-settings-danger[data-invalid=true],.data-\\[state\\=failed\\]\\:text-settings-danger[data-state=failed]{color:var(--settings-danger)}.data-\\[state\\=unavailable\\]\\:text-settings-warning[data-state=unavailable]{color:var(--settings-warning)}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@layer properties{\n *, ::before, ::after, ::backdrop{--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-alpha:100%;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-offset-width:0;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-drop-shadow-alpha:100%;--tw-content:"";--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}\n';
32230
32283
 
32231
32284
  // src/console/app.ts
32232
32285
  function required2(pages, id) {
@@ -32494,6 +32547,7 @@ ${console_default}`
32494
32547
  lucide/dist/esm/defaultAttributes.mjs:
32495
32548
  lucide/dist/esm/createElement.mjs:
32496
32549
  lucide/dist/esm/icons/boxes.mjs:
32550
+ lucide/dist/esm/icons/calendar-clock.mjs:
32497
32551
  lucide/dist/esm/icons/circle-check.mjs:
32498
32552
  lucide/dist/esm/icons/chevron-down.mjs:
32499
32553
  lucide/dist/esm/icons/chevron-left.mjs:
@@ -14952,6 +14952,8 @@ var usageStatisticsTotalsSchema = external_exports.strictObject({
14952
14952
  cachedInputTokens: count,
14953
14953
  cacheWriteInputTokens: count,
14954
14954
  cacheKnownInputTokens: count,
14955
+ cacheHitCachedInputTokens: count,
14956
+ cacheHitInputTokens: count,
14955
14957
  outputTokens: count,
14956
14958
  reasoningOutputTokens: count,
14957
14959
  /** USD at the public price, summed over the priced requests only. */
@@ -16702,8 +16704,99 @@ function retainRendererHostResponses(client, hostId2, target) {
16702
16704
  };
16703
16705
  }
16704
16706
 
16707
+ // packages/desktop-control/src/renderer-prewarm-consumption.ts
16708
+ function isolateRendererPrewarmConsumption(manager, discardExternal) {
16709
+ const record2 = (value) => value !== null && typeof value === "object";
16710
+ if (!record2(manager) || !record2(manager.threadCreation)) return null;
16711
+ const creation = manager.threadCreation;
16712
+ const originalStart = manager.startConversation;
16713
+ const original = creation.createConversation;
16714
+ const params = creation.params;
16715
+ if (typeof originalStart !== "function" || typeof original !== "function" || !record2(params))
16716
+ return null;
16717
+ const prototype = Object.getPrototypeOf(creation);
16718
+ if (!record2(prototype) || typeof prototype.constructor !== "function") return null;
16719
+ if (Object.keys(creation).some((key) => key !== "params" && typeof creation[key] !== "function") || /#[A-Za-z_$]/u.test(Function.prototype.toString.call(prototype.constructor)))
16720
+ return null;
16721
+ const pool = params.prewarmedThreadManager;
16722
+ if (!record2(pool) || typeof pool.hasPrewarmedThread !== "function" || typeof pool.consumePrewarmedThread !== "function" || typeof pool.deletePrewarmedThread !== "function")
16723
+ return null;
16724
+ const consume = pool.consumePrewarmedThread;
16725
+ const hasPrewarm = pool.hasPrewarmedThread;
16726
+ const draftModels = /* @__PURE__ */ new Map();
16727
+ const draftIdentity = /* @__PURE__ */ Symbol("codexhost draft creation");
16728
+ const external = (model2) => typeof model2 === "string" && model2.startsWith("codexhost/");
16729
+ const routedStart = function(input, options, ...args) {
16730
+ const draftId = record2(options) ? options.clientThreadId : null;
16731
+ const mode = record2(input) && record2(input.collaborationMode) ? input.collaborationMode : null;
16732
+ const origin = mode ? Reflect.get(mode, draftIdentity) : void 0;
16733
+ if (mode && record2(mode.settings) && external(mode.settings.model))
16734
+ return originalStart.call(this, input, options, ...args);
16735
+ const model2 = (typeof draftId === "string" ? draftModels.get(draftId) : void 0) ?? (typeof origin === "string" ? draftModels.get(origin) : void 0);
16736
+ if (!model2) return originalStart.call(this, input, options, ...args);
16737
+ if (!record2(input) || !record2(input.collaborationMode) || !record2(input.collaborationMode.settings))
16738
+ throw new Error("External draft creation is missing its native Model settings");
16739
+ const routed = {
16740
+ ...input,
16741
+ collaborationMode: {
16742
+ ...input.collaborationMode,
16743
+ settings: { ...input.collaborationMode.settings, model: model2 }
16744
+ }
16745
+ };
16746
+ return originalStart.call(this, routed, options, ...args);
16747
+ };
16748
+ const wrapped = function(input, ...args) {
16749
+ const mode = record2(input) && record2(input.collaborationMode) ? input.collaborationMode : null;
16750
+ const expected = mode && record2(mode.settings) ? mode.settings.model : null;
16751
+ const scopedPool = Object.create(pool);
16752
+ scopedPool.hasPrewarmedThread = (...parameters) => hasPrewarm.apply(pool, parameters);
16753
+ scopedPool.consumePrewarmedThread = async (...consumeArgs) => {
16754
+ const warmed = await consume.apply(pool, consumeArgs);
16755
+ if (!record2(warmed) || !record2(warmed.response)) return warmed;
16756
+ const response = warmed.response;
16757
+ if (!external(expected) && !external(response.model)) return warmed;
16758
+ if (external(expected) && expected === response.model) return warmed;
16759
+ if (record2(response.thread) && typeof response.thread.id === "string") {
16760
+ const threadId = response.thread.id;
16761
+ if (external(response.model)) discardExternal(threadId);
16762
+ else
16763
+ void Promise.resolve().then(() => pool.deletePrewarmedThread(threadId)).catch(() => void 0);
16764
+ }
16765
+ return null;
16766
+ };
16767
+ const invocation = Object.create(creation);
16768
+ invocation.params = { ...params, prewarmedThreadManager: scopedPool };
16769
+ return original.call(invocation, input, ...args);
16770
+ };
16771
+ creation.createConversation = wrapped;
16772
+ manager.startConversation = routedStart;
16773
+ return {
16774
+ selectDraft(draftId, model2, creationModes = []) {
16775
+ if (draftId === void 0) {
16776
+ if (model2 === null) draftModels.clear();
16777
+ } else if (model2 === null) draftModels.delete(draftId);
16778
+ else {
16779
+ if (!draftId.startsWith("client-new-thread:") || !external(model2))
16780
+ throw new Error("External draft route is missing its client Thread identity");
16781
+ draftModels.set(draftId, model2);
16782
+ for (const mode of creationModes)
16783
+ Object.defineProperty(mode, draftIdentity, {
16784
+ configurable: true,
16785
+ enumerable: true,
16786
+ value: draftId
16787
+ });
16788
+ }
16789
+ },
16790
+ dispose() {
16791
+ draftModels.clear();
16792
+ if (manager.startConversation === routedStart) manager.startConversation = originalStart;
16793
+ if (creation.createConversation === wrapped) creation.createConversation = original;
16794
+ }
16795
+ };
16796
+ }
16797
+
16705
16798
  // packages/desktop-control/src/renderer-draft-prewarm-runtime.ts
16706
- function createDraftPrewarmPolicyBridge(manager, bridge, hostId2, target, prewarmedThreadManager, isCurrentManager, retainResponses = retainRendererHostResponses) {
16799
+ function createDraftPrewarmPolicyBridge(manager, bridge, hostId2, target, prewarmedThreadManager, isCurrentManager, retainResponses = retainRendererHostResponses, isolateConsumption = isolateRendererPrewarmConsumption) {
16707
16800
  let disposed = false;
16708
16801
  const originalSend = bridge.sendRequest;
16709
16802
  const originalPrewarm = bridge.prewarmThreadStart;
@@ -17084,26 +17177,16 @@ function createDraftPrewarmPolicyBridge(manager, bridge, hostId2, target, prewar
17084
17177
  if (threadId && knownOfficialThreadIds.has(threadId)) return false;
17085
17178
  return selectedModel !== null && (method.startsWith("thread/") || method.startsWith("turn/") || method.startsWith("review/"));
17086
17179
  };
17087
- const routeThreadStart = (parameters) => {
17088
- if (!isRecord3(parameters) || parameters.ephemeral === true) {
17089
- return parameters;
17090
- }
17091
- return {
17092
- ...parameters,
17093
- ...selectedModel === null ? {} : { model: selectedModel }
17094
- };
17095
- };
17096
17180
  const routedSend = (method, parameters, options) => {
17097
17181
  if (method === "turn/start" || method === "thread/resume" || method === "codexhost/thread/command/execute") {
17098
17182
  const threadId = threadIdFromParameters(parameters);
17099
17183
  if (threadId) externalPrewarms.delete(threadId);
17100
17184
  }
17101
- const routedParameters = method === "thread/start" ? routeThreadStart(parameters) : parameters;
17102
17185
  const sendBridged = () => initializeBridge().then(
17103
- () => enqueueBridgeRequest(method, routedParameters, options)
17186
+ () => enqueueBridgeRequest(method, parameters, options)
17104
17187
  );
17105
- const sendDirect = () => options === void 0 ? originalSend.call(bridge, method, routedParameters) : originalSend.call(bridge, method, routedParameters, options);
17106
- const unresolvedThreadId = shouldResolveThreadOwnership(method, routedParameters);
17188
+ const sendDirect = () => options === void 0 ? originalSend.call(bridge, method, parameters) : originalSend.call(bridge, method, parameters, options);
17189
+ const unresolvedThreadId = shouldResolveThreadOwnership(method, parameters);
17107
17190
  if (unresolvedThreadId) {
17108
17191
  return resolveThreadOwnership(unresolvedThreadId).then(
17109
17192
  (owner) => owner === "external" ? sendBridged() : sendDirect(),
@@ -17119,7 +17202,7 @@ function createDraftPrewarmPolicyBridge(manager, bridge, hostId2, target, prewar
17119
17202
  }
17120
17203
  );
17121
17204
  }
17122
- return shouldUseBridge(method, routedParameters) ? sendBridged() : sendDirect();
17205
+ return shouldUseBridge(method, parameters) ? sendBridged() : sendDirect();
17123
17206
  };
17124
17207
  const publishDraftWorkspace = (parameters) => {
17125
17208
  if (!isRecord3(parameters) || parameters.ephemeral === true) return;
@@ -17149,10 +17232,10 @@ function createDraftPrewarmPolicyBridge(manager, bridge, hostId2, target, prewar
17149
17232
  const discardExternalPrewarms = () => {
17150
17233
  for (const threadId of externalPrewarms) discardExternalPrewarm(threadId);
17151
17234
  };
17235
+ const restoreConsumption = isolateConsumption(manager, discardExternalPrewarm);
17152
17236
  const routedPrewarm = (parameters, options) => {
17153
- const routed = routeThreadStart(parameters);
17154
- const external = isRecord3(routed) && routed.ephemeral !== true && typeof routed.model === "string" && routed.model.startsWith("codexhost/");
17155
- const routedParameters = external ? { ...routed, codexhostPrewarm: true } : routed;
17237
+ const external = isRecord3(parameters) && parameters.ephemeral !== true && typeof parameters.model === "string" && parameters.model.startsWith("codexhost/");
17238
+ const routedParameters = external ? { ...parameters, codexhostPrewarm: true } : parameters;
17156
17239
  const generation = prewarmGeneration;
17157
17240
  publishDraftWorkspace(routedParameters);
17158
17241
  const pending = shouldUseBridge("thread/start", routedParameters) ? routedSend("thread/start", routedParameters, options) : options === void 0 ? originalPrewarm.call(bridge, routedParameters) : originalPrewarm.call(bridge, routedParameters, options);
@@ -17205,6 +17288,7 @@ function createDraftPrewarmPolicyBridge(manager, bridge, hostId2, target, prewar
17205
17288
  const policy = Object.freeze({
17206
17289
  state: "ready",
17207
17290
  hostId: hostId2,
17291
+ scopedCreation: restoreConsumption !== null,
17208
17292
  owns(candidateManager, candidate, candidateHostId, candidatePrewarmedThreadManager, requiresCurrentManager) {
17209
17293
  return !disposed && candidateManager === manager && candidate === bridge && candidateHostId === hostId2 && candidatePrewarmedThreadManager === prewarmedThreadManager && requiresCurrentManager === !!isCurrentManager;
17210
17294
  },
@@ -17213,12 +17297,13 @@ function createDraftPrewarmPolicyBridge(manager, bridge, hostId2, target, prewar
17213
17297
  throw new Error("Renderer request manager is retired");
17214
17298
  return manager;
17215
17299
  },
17216
- select(model2) {
17300
+ select(model2, draftId, creationModes) {
17217
17301
  if (disposed || isCurrentManager && !isCurrentManager())
17218
17302
  throw new Error("Renderer request manager is retired");
17219
17303
  if (model2 !== null && (typeof model2 !== "string" || !model2.startsWith("codexhost/"))) {
17220
17304
  throw new Error("Draft route Model must be a codexhost transport carrier");
17221
17305
  }
17306
+ restoreConsumption?.selectDraft(draftId, model2, creationModes);
17222
17307
  if (selectedModel === model2) return false;
17223
17308
  selectedModel = model2;
17224
17309
  prewarmGeneration += 1;
@@ -17239,6 +17324,7 @@ function createDraftPrewarmPolicyBridge(manager, bridge, hostId2, target, prewar
17239
17324
  disposed = true;
17240
17325
  prewarmGeneration += 1;
17241
17326
  retireResponses();
17327
+ restoreConsumption?.dispose();
17242
17328
  if (bridge.sendRequest === routedSend) bridge.sendRequest = originalSend;
17243
17329
  if (bridge.prewarmThreadStart === routedPrewarm) {
17244
17330
  bridge.prewarmThreadStart = originalPrewarm;
@@ -17503,12 +17589,14 @@ function directRendererInstaller() {
17503
17589
  const resolveRendererHostManager = ${resolveRendererHostManager.toString()};
17504
17590
  const retainRendererHostResponses = ${retainRendererHostResponses.toString()};
17505
17591
  const createDraftPrewarmPolicyBridge = ${createDraftPrewarmPolicyBridge.toString()};
17592
+ const isolateRendererPrewarmConsumption = ${isolateRendererPrewarmConsumption.toString()};
17506
17593
  const routing = (${installRendererHostRouting.toString()})(
17507
17594
  document, window,
17508
17595
  (root) => discoverRendererHosts(root, committedReactAncestors, requestManagerFromHookState),
17509
17596
  (discovery, hostId) => resolveRendererHostManager(discovery, hostId, requestManagerFromHookState),
17510
17597
  (manager, bridge, hostId, target, prewarmed, isCurrent) => createDraftPrewarmPolicyBridge(
17511
17598
  manager, bridge, hostId, target, prewarmed, isCurrent, retainRendererHostResponses,
17599
+ isolateRendererPrewarmConsumption,
17512
17600
  ),
17513
17601
  );
17514
17602
  // Publish a default draft policy only when its Host is unambiguous. Host