@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 +1 -1
- package/app/codexhost-distribution.json +1 -1
- package/app/console-server.mjs +4 -1
- package/app/console-web.js +69 -15
- package/app/desktop-controller.mjs +107 -19
- package/app/host-runtime.mjs +195 -74
- package/app/plugins/antigravity/plugin.mjs +2 -0
- package/app/plugins/claude-code/plugin.mjs +20 -30
- package/app/plugins/codebuddy/plugin.mjs +40 -3
- package/app/plugins/codex-usage/plugin.mjs +2 -0
- package/app/plugins/copilot/plugin.mjs +2 -0
- package/app/plugins/cursor-cli/plugin.mjs +2 -0
- package/app/plugins/deepseek-harness/plugin.mjs +26 -4
- package/app/plugins/grok/plugin.mjs +2 -0
- package/app/plugins/hermes/plugin.mjs +2 -0
- package/app/plugins/kimi-code/plugin.mjs +2 -0
- package/app/plugins/kiro-cli/plugin.mjs +2 -0
- package/app/plugins/omp/plugin.mjs +2 -0
- package/app/plugins/opencode/plugin.mjs +2 -0
- package/app/plugins/pi/plugin.mjs +21 -7
- package/app/plugins/qoder/plugin.mjs +2 -0
- package/app/plugins/qoder-cn/plugin.mjs +2 -0
- package/app/plugins/workbuddy/plugin.mjs +40 -3
- package/app/plugins/zcode/plugin.mjs +2 -0
- package/app/renderer-extension.js +1409 -95
- package/bin/codexhost +0 -0
- package/libexec/codexhost-shim +0 -0
- package/libexec/codexhost-updater +0 -0
- package/package.json +1 -1
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.
|
|
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.
|
|
1
|
+
{"schemaVersion":1,"version":"0.16.0","distribution":"npm","target":"macos-x64"}
|
package/app/console-server.mjs
CHANGED
|
@@ -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. */
|
package/app/console-web.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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 =
|
|
29363
|
-
manualNpmDescription.textContent =
|
|
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 && !
|
|
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 ?
|
|
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 (
|
|
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,
|
|
17186
|
+
() => enqueueBridgeRequest(method, parameters, options)
|
|
17104
17187
|
);
|
|
17105
|
-
const sendDirect = () => options === void 0 ? originalSend.call(bridge, method,
|
|
17106
|
-
const unresolvedThreadId = shouldResolveThreadOwnership(method,
|
|
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,
|
|
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
|
|
17154
|
-
const
|
|
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
|