@codexhost/cli-win32-arm64 0.14.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.
@@ -3105,10 +3105,10 @@
3105
3105
  const shape = def.shape;
3106
3106
  const propValues = {};
3107
3107
  for (const key in shape) {
3108
- const field = shape[key]._zod;
3109
- if (field.values) {
3108
+ const field2 = shape[key]._zod;
3109
+ if (field2.values) {
3110
3110
  propValues[key] ?? (propValues[key] = /* @__PURE__ */ new Set());
3111
- for (const v of field.values)
3111
+ for (const v of field2.values)
3112
3112
  propValues[key].add(v);
3113
3113
  }
3114
3114
  }
@@ -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. */
@@ -14896,6 +14898,51 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
14896
14898
  var threadPrewarmDiscardParamsSchema = external_exports.object({ threadId: hostThreadIdSchema });
14897
14899
  var threadPrewarmDiscardResultSchema = external_exports.object({ discarded: external_exports.boolean() });
14898
14900
 
14901
+ // ../shared-contracts/dist/thread-questions.js
14902
+ var field = external_exports.discriminatedUnion("type", [
14903
+ external_exports.object({
14904
+ id: external_exports.string().min(1),
14905
+ type: external_exports.literal("choice"),
14906
+ prompt: external_exports.string(),
14907
+ options: external_exports.array(external_exports.object({
14908
+ value: external_exports.string().min(1),
14909
+ label: external_exports.string(),
14910
+ description: external_exports.string().optional()
14911
+ })).min(1),
14912
+ multiple: external_exports.boolean(),
14913
+ allowOther: external_exports.boolean(),
14914
+ optional: external_exports.boolean()
14915
+ }),
14916
+ external_exports.object({
14917
+ id: external_exports.string().min(1),
14918
+ type: external_exports.literal("text"),
14919
+ prompt: external_exports.string(),
14920
+ multiline: external_exports.boolean(),
14921
+ secret: external_exports.literal(false),
14922
+ optional: external_exports.boolean(),
14923
+ placeholder: external_exports.string().optional(),
14924
+ prefill: external_exports.string().optional()
14925
+ })
14926
+ ]);
14927
+ var threadQuestionSchema = external_exports.object({
14928
+ interactionId: external_exports.string().min(1),
14929
+ turnId: external_exports.string().min(1),
14930
+ title: external_exports.string().optional(),
14931
+ questions: external_exports.array(field).min(1)
14932
+ }).refine(({ questions }) => questions.some((q) => q.type === "choice" && q.multiple), {
14933
+ message: "Shared cards require at least one multi-select question"
14934
+ });
14935
+ var threadQuestionsListParamsSchema = external_exports.strictObject({ threadId: external_exports.string().min(1) });
14936
+ var threadQuestionsResultSchema = external_exports.object({ questions: external_exports.array(threadQuestionSchema) });
14937
+ var threadQuestionRespondParamsSchema = external_exports.strictObject({
14938
+ threadId: external_exports.string().min(1),
14939
+ turnId: external_exports.string().min(1),
14940
+ interactionId: external_exports.string().min(1),
14941
+ answers: external_exports.record(external_exports.string(), external_exports.array(external_exports.string())),
14942
+ cancelled: external_exports.boolean().default(false)
14943
+ });
14944
+ var threadQuestionRespondResultSchema = external_exports.object({ accepted: external_exports.literal(true) });
14945
+
14899
14946
  // ../shared-contracts/dist/console.js
14900
14947
  var consoleAnnouncementSchema = external_exports.strictObject({
14901
14948
  title: external_exports.string().trim().min(1).max(200),
@@ -16140,6 +16187,16 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
16140
16187
  ["path", { d: "M12 13.5V8" }]
16141
16188
  ];
16142
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
+
16143
16200
  // ../../node_modules/lucide/dist/esm/icons/circle-check.mjs
16144
16201
  var CircleCheck = [
16145
16202
  ["circle", { cx: "12", cy: "12", r: "10" }],
@@ -16460,6 +16517,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
16460
16517
  routes: Route,
16461
16518
  gateway: Network,
16462
16519
  updates: CircleArrowUp,
16520
+ schedules: CalendarClock,
16463
16521
  about: Info,
16464
16522
  info: Info,
16465
16523
  "external-link": ExternalLink,
@@ -20795,12 +20853,13 @@ th[aria-sort] .console-usage-sort__mark {
20795
20853
  notAvailable: "Not available",
20796
20854
  runtimeCapabilityNotInstalled: "This runtime capability is not installed yet.",
20797
20855
  sessionImportHarness: "Harness",
20856
+ sessionImportSelectHost: "Select the Host to import sessions from",
20798
20857
  sessionImportDescription: "Sessions keep their original project path. If a folder is not in the Codex sidebar, add it as a project first. Original history remains managed by the Harness.",
20799
- sessionImportAvailabilityNote: "Available Harnesses come from the local Host. If activity is unknown, close the session in its native client before importing to avoid concurrent writes.",
20858
+ sessionImportAvailabilityNote: "Available Harnesses come from the selected Host. If activity is unknown, close the session in its native client before importing to avoid concurrent writes.",
20800
20859
  sessionImportRefresh: "Refresh",
20801
- sessionImportRefreshing: "Loading local sessions...",
20802
- sessionImportUnavailable: "Session import is unavailable for this local Harness or its current protocol. Update the Host/plugin or choose another Harness.",
20803
- sessionImportEmpty: "No local sessions are available to import.",
20860
+ sessionImportRefreshing: "Loading sessions from the selected Host...",
20861
+ sessionImportUnavailable: "Session import is unavailable for this Harness or the selected Host protocol. Update the Host/plugin or choose another Harness.",
20862
+ sessionImportEmpty: "No sessions are available to import on the selected Host.",
20804
20863
  sessionImportSearch: "Search",
20805
20864
  sessionImportSearchPlaceholder: "Search titles, session IDs or project paths",
20806
20865
  sessionImportNoMatches: "No sessions match your search.",
@@ -20808,7 +20867,7 @@ th[aria-sort] .console-usage-sort__mark {
20808
20867
  sessionImportPrevious: "Previous",
20809
20868
  sessionImportNext: "Next",
20810
20869
  sessionImportPageSummary: "Page {page} of {pages} \xB7 {total} sessions",
20811
- sessionImportLoadFailed: "Local sessions could not be loaded. Check directory access or duplicate session IDs, then retry.",
20870
+ sessionImportLoadFailed: "Sessions could not be loaded from the selected Host. Check directory access or duplicate session IDs, then retry.",
20812
20871
  sessionImportFailed: "The session could not be imported.",
20813
20872
  sessionImportUntitled: "Untitled session",
20814
20873
  sessionImportUpdatedAt: "Updated",
@@ -20964,7 +21023,6 @@ th[aria-sort] .console-usage-sort__mark {
20964
21023
  updateLatestVersion: "Latest version",
20965
21024
  updateUpToDate: "You are up to date.",
20966
21025
  updateAvailable: "A new version is available.",
20967
- updateWindowsManualRequired: "Automatic updates are unavailable on Windows. Update manually below.",
20968
21026
  updateAndRestart: "Update",
20969
21027
  updateChecking: "Checking for updates...",
20970
21028
  updateDownloading: "Downloading update...",
@@ -20979,8 +21037,7 @@ th[aria-sort] .console-usage-sort__mark {
20979
21037
  updateFailed: "Update failed.",
20980
21038
  updateRetry: "Retry",
20981
21039
  updateManualNpmDescription: "To update manually, quit codexhost and run this command:",
20982
- updateWindowsNpmDescription: "Automatic updates are unavailable on Windows. Quit codexhost and run this command in a terminal:",
20983
- 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.",
20984
21041
  updateManualTitle: "Manual update",
20985
21042
  updateManualFallbackDescription: "The automatic update did not complete. Run this command in a terminal instead, then quit Codex and relaunch it with codexhost.",
20986
21043
  updateCopyCommand: "Copy",
@@ -21075,12 +21132,13 @@ th[aria-sort] .console-usage-sort__mark {
21075
21132
  notAvailable: "\u6682\u4E0D\u53EF\u7528",
21076
21133
  runtimeCapabilityNotInstalled: "\u8FD0\u884C\u65F6\u5C1A\u672A\u5B89\u88C5\u8BE5\u9879\u80FD\u529B\uFF0C\u56E0\u6B64\u6682\u4E0D\u53EF\u7528\u3002",
21077
21134
  sessionImportHarness: "Harness",
21135
+ sessionImportSelectHost: "\u8BF7\u9009\u62E9\u8981\u5BFC\u5165\u4F1A\u8BDD\u7684 Host",
21078
21136
  sessionImportDescription: "\u4F1A\u8BDD\u5C06\u4FDD\u7559\u539F\u59CB\u9879\u76EE\u8DEF\u5F84\uFF1B\u82E5\u8BE5\u6587\u4EF6\u5939\u5C1A\u672A\u51FA\u73B0\u5728 Codex \u4FA7\u680F\uFF0C\u8BF7\u5148\u5C06\u5176\u6DFB\u52A0\u4E3A\u9879\u76EE\u3002\u539F\u59CB\u5386\u53F2\u4ECD\u7531 Harness \u7BA1\u7406\u3002",
21079
- sessionImportAvailabilityNote: "\u53EF\u9009 Harness \u6765\u81EA\u672C\u5730 Host\u3002\u8FD0\u884C\u72B6\u6001\u672A\u77E5\u65F6\uFF0C\u8BF7\u5148\u5728\u539F\u751F\u5BA2\u6237\u7AEF\u5173\u95ED\u8BE5\u4F1A\u8BDD\u518D\u5BFC\u5165\uFF0C\u907F\u514D\u540C\u65F6\u5199\u5165\u3002",
21137
+ sessionImportAvailabilityNote: "\u53EF\u9009 Harness \u6765\u81EA\u5F53\u524D Host\u3002\u8FD0\u884C\u72B6\u6001\u672A\u77E5\u65F6\uFF0C\u8BF7\u5148\u5728\u539F\u751F\u5BA2\u6237\u7AEF\u5173\u95ED\u8BE5\u4F1A\u8BDD\u518D\u5BFC\u5165\uFF0C\u907F\u514D\u540C\u65F6\u5199\u5165\u3002",
21080
21138
  sessionImportRefresh: "\u5237\u65B0",
21081
- sessionImportRefreshing: "\u6B63\u5728\u8BFB\u53D6\u672C\u5730\u4F1A\u8BDD\u2026\u2026",
21082
- sessionImportUnavailable: "\u672C\u5730 Harness \u6216\u5F53\u524D\u534F\u8BAE\u6682\u4E0D\u652F\u6301\u4F1A\u8BDD\u5BFC\u5165\uFF0C\u8BF7\u66F4\u65B0 Host/\u63D2\u4EF6\u6216\u9009\u62E9\u5176\u4ED6 Harness\u3002",
21083
- sessionImportEmpty: "\u6CA1\u6709\u53EF\u5BFC\u5165\u7684\u672C\u5730\u4F1A\u8BDD\u3002",
21139
+ sessionImportRefreshing: "\u6B63\u5728\u8BFB\u53D6\u5F53\u524D Host \u4E0A\u7684\u4F1A\u8BDD\u2026\u2026",
21140
+ sessionImportUnavailable: "\u8BE5 Harness \u6216\u5F53\u524D Host \u534F\u8BAE\u6682\u4E0D\u652F\u6301\u4F1A\u8BDD\u5BFC\u5165\uFF0C\u8BF7\u66F4\u65B0 Host/\u63D2\u4EF6\u6216\u9009\u62E9\u5176\u4ED6 Harness\u3002",
21141
+ sessionImportEmpty: "\u5F53\u524D Host \u4E0A\u6CA1\u6709\u53EF\u5BFC\u5165\u7684\u4F1A\u8BDD\u3002",
21084
21142
  sessionImportSearch: "\u641C\u7D22",
21085
21143
  sessionImportSearchPlaceholder: "\u641C\u7D22\u6807\u9898\u3001\u4F1A\u8BDD ID \u6216\u9879\u76EE\u8DEF\u5F84",
21086
21144
  sessionImportNoMatches: "\u6CA1\u6709\u5339\u914D\u7684\u4F1A\u8BDD\u3002",
@@ -21088,7 +21146,7 @@ th[aria-sort] .console-usage-sort__mark {
21088
21146
  sessionImportPrevious: "\u4E0A\u4E00\u9875",
21089
21147
  sessionImportNext: "\u4E0B\u4E00\u9875",
21090
21148
  sessionImportPageSummary: "\u7B2C {page} / {pages} \u9875 \xB7 \u5171 {total} \u6761",
21091
- sessionImportLoadFailed: "\u65E0\u6CD5\u8BFB\u53D6\u672C\u5730\u4F1A\u8BDD\uFF0C\u8BF7\u68C0\u67E5\u76EE\u5F55\u8BBF\u95EE\u6743\u9650\u6216\u91CD\u590D\u7684\u4F1A\u8BDD ID \u540E\u91CD\u8BD5\u3002",
21149
+ sessionImportLoadFailed: "\u65E0\u6CD5\u8BFB\u53D6\u5F53\u524D Host \u4E0A\u7684\u4F1A\u8BDD\uFF0C\u8BF7\u68C0\u67E5\u76EE\u5F55\u8BBF\u95EE\u6743\u9650\u6216\u91CD\u590D\u7684\u4F1A\u8BDD ID \u540E\u91CD\u8BD5\u3002",
21092
21150
  sessionImportFailed: "\u65E0\u6CD5\u5BFC\u5165\u8BE5\u4F1A\u8BDD\u3002",
21093
21151
  sessionImportUntitled: "\u672A\u547D\u540D\u4F1A\u8BDD",
21094
21152
  sessionImportUpdatedAt: "\u66F4\u65B0\u65F6\u95F4",
@@ -21244,7 +21302,6 @@ th[aria-sort] .console-usage-sort__mark {
21244
21302
  updateLatestVersion: "\u6700\u65B0\u7248\u672C",
21245
21303
  updateUpToDate: "\u5F53\u524D\u5DF2\u662F\u6700\u65B0\u7248\u672C\u3002",
21246
21304
  updateAvailable: "\u6709\u65B0\u7248\u672C\u53EF\u7528\u3002",
21247
- updateWindowsManualRequired: "Windows \u6682\u4E0D\u652F\u6301\u81EA\u52A8\u66F4\u65B0\uFF0C\u8BF7\u5728\u4E0B\u65B9\u624B\u52A8\u66F4\u65B0\u3002",
21248
21305
  updateAndRestart: "\u66F4\u65B0",
21249
21306
  updateChecking: "\u6B63\u5728\u68C0\u67E5\u66F4\u65B0...",
21250
21307
  updateDownloading: "\u6B63\u5728\u4E0B\u8F7D\u66F4\u65B0...",
@@ -21259,8 +21316,7 @@ th[aria-sort] .console-usage-sort__mark {
21259
21316
  updateFailed: "\u66F4\u65B0\u5931\u8D25\u3002",
21260
21317
  updateRetry: "\u91CD\u8BD5",
21261
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",
21262
- 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",
21263
- 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",
21264
21320
  updateManualTitle: "\u624B\u52A8\u66F4\u65B0",
21265
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",
21266
21322
  updateCopyCommand: "\u590D\u5236",
@@ -21437,6 +21493,8 @@ th[aria-sort] .console-usage-sort__mark {
21437
21493
  cachedInputTokens: 0,
21438
21494
  cacheWriteInputTokens: 0,
21439
21495
  cacheKnownInputTokens: 0,
21496
+ cacheHitCachedInputTokens: 0,
21497
+ cacheHitInputTokens: 0,
21440
21498
  outputTokens: 0,
21441
21499
  reasoningOutputTokens: 0,
21442
21500
  costUsd: 0,
@@ -21450,6 +21508,8 @@ th[aria-sort] .console-usage-sort__mark {
21450
21508
  target.cachedInputTokens += source.cachedInputTokens;
21451
21509
  target.cacheWriteInputTokens += source.cacheWriteInputTokens;
21452
21510
  target.cacheKnownInputTokens += source.cacheKnownInputTokens;
21511
+ target.cacheHitCachedInputTokens += source.cacheHitCachedInputTokens;
21512
+ target.cacheHitInputTokens += source.cacheHitInputTokens;
21453
21513
  target.outputTokens += source.outputTokens;
21454
21514
  target.reasoningOutputTokens += source.reasoningOutputTokens;
21455
21515
  target.costUsd += source.costUsd;
@@ -21504,7 +21564,9 @@ th[aria-sort] .console-usage-sort__mark {
21504
21564
  };
21505
21565
  }
21506
21566
  function cacheHitRate(totals2) {
21507
- 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";
21508
21570
  }
21509
21571
  function formatMeasure(measure, value, locale = "en") {
21510
21572
  return measure === "cost" ? money(value) : count2(value, locale);
@@ -21668,7 +21730,7 @@ th[aria-sort] .console-usage-sort__mark {
21668
21730
  var DECIMAL = /^(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/iu;
21669
21731
  function modelPriceDraft(key, price) {
21670
21732
  const prices = Object.fromEntries(
21671
- MODEL_PRICE_FIELDS.map((field) => [field, price?.[field]?.toString() ?? ""])
21733
+ MODEL_PRICE_FIELDS.map((field2) => [field2, price?.[field2]?.toString() ?? ""])
21672
21734
  );
21673
21735
  return { model: key, prices };
21674
21736
  }
@@ -21679,18 +21741,18 @@ th[aria-sort] .console-usage-sort__mark {
21679
21741
  return { error: { kind: "duplicate", key } };
21680
21742
  }
21681
21743
  const price = {};
21682
- for (const field of MODEL_PRICE_FIELDS) {
21683
- const text = draft.prices[field].trim();
21744
+ for (const field2 of MODEL_PRICE_FIELDS) {
21745
+ const text = draft.prices[field2].trim();
21684
21746
  if (text === "") {
21685
- if (field === "input" || field === "output")
21686
- return { error: { kind: "priceRequired", field } };
21747
+ if (field2 === "input" || field2 === "output")
21748
+ return { error: { kind: "priceRequired", field: field2 } };
21687
21749
  continue;
21688
21750
  }
21689
21751
  const value = Number(text);
21690
21752
  if (!DECIMAL.test(text) || !Number.isFinite(value)) {
21691
- return { error: { kind: "priceInvalid", field } };
21753
+ return { error: { kind: "priceInvalid", field: field2 } };
21692
21754
  }
21693
- price[field] = value;
21755
+ price[field2] = value;
21694
21756
  }
21695
21757
  return {
21696
21758
  change: {
@@ -21710,7 +21772,7 @@ th[aria-sort] .console-usage-sort__mark {
21710
21772
  }
21711
21773
  function formatPrice(messages, price) {
21712
21774
  return MODEL_PRICE_FIELDS.map(
21713
- (field) => `${messages.fields[field]} ${price[field] ?? messages.unset}`
21775
+ (field2) => `${messages.fields[field2]} ${price[field2] ?? messages.unset}`
21714
21776
  ).join(" \xB7 ");
21715
21777
  }
21716
21778
  function draftErrorText(messages, error51) {
@@ -21778,18 +21840,18 @@ th[aria-sort] .console-usage-sort__mark {
21778
21840
  function renderEditor(modelId, view, isCurrent) {
21779
21841
  const existing = view.entries.find((entry) => entry.key === modelId);
21780
21842
  const draft = modelPriceDraft(modelId, existing?.price ?? null);
21781
- const field = (label, value, placeholder = "") => h(document2, "input", {
21843
+ const field2 = (label, value, placeholder = "") => h(document2, "input", {
21782
21844
  type: "text",
21783
21845
  className: "console-input",
21784
21846
  value,
21785
21847
  placeholder,
21786
21848
  "aria-label": label
21787
21849
  });
21788
- const model2 = field(messages.model, modelId);
21850
+ const model2 = field2(messages.model, modelId);
21789
21851
  model2.readOnly = true;
21790
21852
  const prices = Object.fromEntries(
21791
21853
  MODEL_PRICE_FIELDS.map((name) => {
21792
- const input = field(
21854
+ const input = field2(
21793
21855
  messages.fields[name],
21794
21856
  draft.prices[name],
21795
21857
  name === "input" || name === "output" ? messages.required : messages.notSet
@@ -22601,8 +22663,8 @@ th[aria-sort] .console-usage-sort__mark {
22601
22663
  for (const cell of options.cells) {
22602
22664
  const key = options.singleDay ? cell.hour : cell.weekday * 24 + cell.hour;
22603
22665
  const totals2 = byHour.get(key) ?? emptyTotals();
22604
- for (const field of Object.keys(totals2))
22605
- totals2[field] += cell.totals[field];
22666
+ for (const field2 of Object.keys(totals2))
22667
+ totals2[field2] += cell.totals[field2];
22606
22668
  byHour.set(key, totals2);
22607
22669
  }
22608
22670
  const max = Math.max(0, ...[...byHour.values()].map((totals2) => measured(totals2, measure)));
@@ -22965,8 +23027,8 @@ th[aria-sort] .console-usage-sort__mark {
22965
23027
  save();
22966
23028
  load();
22967
23029
  }
22968
- function toggleFilter(field, key) {
22969
- view[field] = view[field] === key ? "" : key;
23030
+ function toggleFilter(field2, key) {
23031
+ view[field2] = view[field2] === key ? "" : key;
22970
23032
  changed();
22971
23033
  }
22972
23034
  function selectDate(next) {
@@ -23371,7 +23433,7 @@ ${messages.creditsCoverage}: ${value.reportedRequests} / ${row.requests}` : void
23371
23433
  {
23372
23434
  key: "hit",
23373
23435
  label: messages.cacheHit,
23374
- sort: (row) => row.cacheKnownInputTokens > 0 ? row.cachedInputTokens / row.cacheKnownInputTokens : -1,
23436
+ sort: (row) => row.cacheHitInputTokens > 0 ? row.cacheHitCachedInputTokens / row.cacheHitInputTokens : -1,
23375
23437
  cell: (row) => cacheHitRate(row)
23376
23438
  },
23377
23439
  {
@@ -23382,8 +23444,8 @@ ${messages.creditsCoverage}: ${value.reportedRequests} / ${row.requests}` : void
23382
23444
  }
23383
23445
  ];
23384
23446
  }
23385
- function rowFilter(field, key, label, detail) {
23386
- const selected = view[field] === key;
23447
+ function rowFilter(field2, key, label, detail) {
23448
+ const selected = view[field2] === key;
23387
23449
  const button2 = focusKey(
23388
23450
  h(
23389
23451
  document2,
@@ -23397,9 +23459,9 @@ ${detail}` : ""}`
23397
23459
  },
23398
23460
  label
23399
23461
  ),
23400
- `${field}:row:${key}`
23462
+ `${field2}:row:${key}`
23401
23463
  );
23402
- button2.addEventListener("click", () => toggleFilter(field, key));
23464
+ button2.addEventListener("click", () => toggleFilter(field2, key));
23403
23465
  return button2;
23404
23466
  }
23405
23467
  function panel(title, content, extra = null, wide = false) {
@@ -24238,8 +24300,8 @@ ${detail}` : ""}`
24238
24300
  return input;
24239
24301
  }
24240
24302
  function createNumberField(document2, input) {
24241
- const field = document2.createElement("div");
24242
- field.className = "flex h-8 shrink-0 items-center gap-1.5 rounded-md border border-settings-border bg-settings-surface px-2.5 transition-colors focus-within:border-settings-focus data-[invalid=true]:border-settings-danger";
24303
+ const field2 = document2.createElement("div");
24304
+ field2.className = "flex h-8 shrink-0 items-center gap-1.5 rounded-md border border-settings-border bg-settings-surface px-2.5 transition-colors focus-within:border-settings-focus data-[invalid=true]:border-settings-danger";
24243
24305
  const control = document2.createElement("input");
24244
24306
  control.type = "number";
24245
24307
  control.id = input.id;
@@ -24252,8 +24314,8 @@ ${detail}` : ""}`
24252
24314
  unit.className = "text-xs text-settings-muted";
24253
24315
  unit.setAttribute("aria-hidden", "true");
24254
24316
  unit.textContent = input.unit;
24255
- field.append(control, unit);
24256
- return { field, control };
24317
+ field2.append(control, unit);
24318
+ return { field: field2, control };
24257
24319
  }
24258
24320
 
24259
24321
  // src/settings/remote-connections-dialogs.ts
@@ -24337,7 +24399,7 @@ ${detail}` : ""}`
24337
24399
  );
24338
24400
  if (!dialog) return;
24339
24401
  const document2 = options.container.ownerDocument;
24340
- const field = (label, value, placeholder = "", hint = "") => {
24402
+ const field2 = (label, value, placeholder = "", hint = "") => {
24341
24403
  const wrapper = remoteElement(document2, "div", "settings-credential-dialog__field");
24342
24404
  const input = remoteElement(document2, "input");
24343
24405
  input.id = preferenceId("remote-field");
@@ -24357,13 +24419,13 @@ ${detail}` : ""}`
24357
24419
  dialog.body.append(wrapper);
24358
24420
  return input;
24359
24421
  };
24360
- const name = field(t("\u540D\u79F0", "Name"), previous?.displayName ?? "");
24422
+ const name = field2(t("\u540D\u79F0", "Name"), previous?.displayName ?? "");
24361
24423
  name.required = true;
24362
24424
  const addressHint = t(
24363
24425
  "user@hostname\uFF0C\u6216 ~/.ssh/config \u4E2D\u7684\u4E3B\u673A\u522B\u540D",
24364
24426
  "user@hostname, or a host alias from ~/.ssh/config"
24365
24427
  );
24366
- const hostname3 = field(
24428
+ const hostname3 = field2(
24367
24429
  t("SSH \u5730\u5740", "SSH address"),
24368
24430
  previous?.sshHost ?? "",
24369
24431
  "user@hostname",
@@ -24372,7 +24434,7 @@ ${detail}` : ""}`
24372
24434
  hostname3.required = true;
24373
24435
  hostname3.pattern = "[^\\s\\-]\\S*";
24374
24436
  hostname3.title = addressHint;
24375
- const port = field(
24437
+ const port = field2(
24376
24438
  t("\u7AEF\u53E3\uFF08\u53EF\u9009\uFF09", "Port (optional)"),
24377
24439
  previous?.sshPort?.toString() ?? "",
24378
24440
  "22"
@@ -24381,7 +24443,7 @@ ${detail}` : ""}`
24381
24443
  port.min = "1";
24382
24444
  port.max = "65535";
24383
24445
  port.step = "1";
24384
- const identity = field(
24446
+ const identity = field2(
24385
24447
  t("\u79C1\u94A5\u8DEF\u5F84\uFF08\u53EF\u9009\uFF09", "Identity file (optional)"),
24386
24448
  previous?.identity ?? "",
24387
24449
  "~/.ssh/id_ed25519"
@@ -26626,6 +26688,50 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
26626
26688
  };
26627
26689
  setRefreshLabel(false);
26628
26690
  header.append(heading, refresh);
26691
+ let selectedHostId;
26692
+ let availableHostIds = [];
26693
+ let displayedHostId = "";
26694
+ let hostsLocked = false;
26695
+ const hostButtons = [];
26696
+ const hostLabel = document2.createElement("div");
26697
+ hostLabel.className = "settings-session-import-host";
26698
+ const hostCaption = document2.createElement("span");
26699
+ hostCaption.textContent = "Host";
26700
+ const hostOptions = document2.createElement("div");
26701
+ hostOptions.className = "settings-connection-host-tabs";
26702
+ hostOptions.setAttribute("role", "group");
26703
+ hostOptions.setAttribute("aria-label", "Host");
26704
+ hostLabel.append(hostCaption, hostOptions);
26705
+ const lockHosts = (locked) => {
26706
+ hostsLocked = locked;
26707
+ for (const button2 of hostButtons) button2.disabled = locked;
26708
+ };
26709
+ const renderHosts = (client) => {
26710
+ const current = selectedHostId ?? (client ? client.hostId ?? "local" : "");
26711
+ availableHostIds = [
26712
+ .../* @__PURE__ */ new Set([
26713
+ ...getDiagnostics()?.snapshot().hosts.map(({ hostId: hostId2 }) => hostId2) ?? [],
26714
+ ...current ? [current] : []
26715
+ ])
26716
+ ];
26717
+ displayedHostId = current;
26718
+ const scrollLeft = hostOptions.scrollLeft;
26719
+ hostOptions.replaceChildren();
26720
+ hostButtons.length = 0;
26721
+ for (const hostId2 of availableHostIds) {
26722
+ const button2 = document2.createElement("button");
26723
+ button2.type = "button";
26724
+ button2.className = "settings-connection-host-tab";
26725
+ button2.dataset.sessionImportHost = hostId2;
26726
+ button2.textContent = connectionHostName(hostId2, messages);
26727
+ button2.setAttribute("aria-pressed", String(hostId2 === current));
26728
+ button2.disabled = hostsLocked;
26729
+ button2.addEventListener("click", () => selectHost(hostId2));
26730
+ hostButtons.push(button2);
26731
+ hostOptions.append(button2);
26732
+ }
26733
+ hostOptions.scrollLeft = scrollLeft;
26734
+ };
26629
26735
  const harness2 = document2.createElement("div");
26630
26736
  harness2.className = "settings-session-import-harness";
26631
26737
  const harnessLabel = document2.createElement("span");
@@ -26686,6 +26792,7 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
26686
26792
  const listControls = createSessionImportListControls(document2, messages, () => load());
26687
26793
  context.content.append(
26688
26794
  header,
26795
+ hostLabel,
26689
26796
  harness2,
26690
26797
  description,
26691
26798
  availabilityNote,
@@ -26695,9 +26802,11 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
26695
26802
  listControls.pagination
26696
26803
  );
26697
26804
  let candidates = [];
26805
+ let loadedClient = null;
26698
26806
  let importingId = null;
26699
26807
  let actions = [];
26700
26808
  const updateImportActions = () => {
26809
+ lockHosts(importingId !== null);
26701
26810
  listControls.setBusy(importingId !== null, importingId !== null);
26702
26811
  for (const button2 of sourceButtons) button2.disabled = importingId !== null;
26703
26812
  for (const { button: button2, candidate } of actions) {
@@ -26718,7 +26827,10 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
26718
26827
  listControls.setTotal(0);
26719
26828
  candidates = [];
26720
26829
  actions = [];
26721
- const status = createStatus(document2, messages.sessionImportUnavailable);
26830
+ const status = createStatus(
26831
+ document2,
26832
+ !displayedHostId && availableHostIds.length > 1 ? messages.sessionImportSelectHost : messages.sessionImportUnavailable
26833
+ );
26722
26834
  content.replaceChildren(status);
26723
26835
  if (focus) {
26724
26836
  status.tabIndex = -1;
@@ -26743,7 +26855,7 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
26743
26855
  status.focus();
26744
26856
  }
26745
26857
  };
26746
- const renderOpenRecovery = (candidate, threadId) => {
26858
+ const renderOpenRecovery = (candidate, threadId, hostId2) => {
26747
26859
  if (!openImportedThread) return;
26748
26860
  actions = [];
26749
26861
  refresh.disabled = false;
@@ -26796,6 +26908,7 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
26796
26908
  retry.className = "settings-command-button";
26797
26909
  retry.dataset.sessionImportAction = "retry-open";
26798
26910
  const setRetrying = (pending) => {
26911
+ lockHosts(pending);
26799
26912
  listControls.setBusy(pending, pending);
26800
26913
  for (const button2 of sourceButtons) button2.disabled = pending;
26801
26914
  retry.disabled = pending;
@@ -26810,12 +26923,12 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
26810
26923
  retry.addEventListener("click", () => {
26811
26924
  if (retry.disabled) return;
26812
26925
  setRetrying(true);
26813
- void context.runLatest((signal) => openImportedThread(threadId, signal), {
26926
+ void context.runLatest((signal) => openImportedThread(threadId, signal, hostId2), {
26814
26927
  success() {
26815
26928
  setRetrying(false);
26816
26929
  },
26817
26930
  failure() {
26818
- renderOpenRecovery(candidate, threadId);
26931
+ renderOpenRecovery(candidate, threadId, hostId2);
26819
26932
  }
26820
26933
  });
26821
26934
  });
@@ -26892,7 +27005,7 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
26892
27005
  if (candidate.running === true || importingId !== null || selectedHarness === null)
26893
27006
  return;
26894
27007
  const harnessId = selectedHarness;
26895
- const client = getClient();
27008
+ const client = loadedClient;
26896
27009
  if (!client) {
26897
27010
  renderUnavailable(true);
26898
27011
  return;
@@ -26910,7 +27023,7 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
26910
27023
  });
26911
27024
  committedThreadId = result.threadId;
26912
27025
  if (!signal.aborted && openImportedThread)
26913
- await openImportedThread(result.threadId, signal);
27026
+ await openImportedThread(result.threadId, signal, client.hostId);
26914
27027
  },
26915
27028
  {
26916
27029
  success() {
@@ -26928,7 +27041,7 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
26928
27041
  updateImportActions();
26929
27042
  refresh.disabled = false;
26930
27043
  if (committedThreadId) {
26931
- renderOpenRecovery(candidate, committedThreadId);
27044
+ renderOpenRecovery(candidate, committedThreadId, client.hostId);
26932
27045
  } else {
26933
27046
  renderFailure(error51, "import");
26934
27047
  }
@@ -26946,23 +27059,22 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
26946
27059
  };
26947
27060
  const load = () => {
26948
27061
  if (importingId !== null || context.signal.aborted) return;
26949
- const client = getClient();
26950
- if (!client) {
26951
- refresh.disabled = false;
26952
- setRefreshLabel(false);
26953
- renderUnavailable();
26954
- return;
26955
- }
26956
- listControls.setBusy(true);
26957
- refresh.disabled = true;
26958
- setRefreshLabel(true);
26959
- content.replaceChildren(createStatus(document2, messages.sessionImportRefreshing));
27062
+ loadedClient = null;
27063
+ const client = getClient(selectedHostId);
27064
+ renderHosts(client);
27065
+ listControls.setBusy(client !== null);
27066
+ refresh.disabled = client !== null;
27067
+ setRefreshLabel(client !== null);
27068
+ if (client)
27069
+ content.replaceChildren(createStatus(document2, messages.sessionImportRefreshing));
27070
+ else renderUnavailable();
26960
27071
  const requestedHarness = selectedHarness;
26961
27072
  const pageParams = listControls.params();
26962
27073
  void context.runLatest(
26963
27074
  async (signal) => {
27075
+ if (!client) throw new RendererSessionImportUnavailableError();
26964
27076
  const missing = new Set(
26965
- getDiagnostics()?.snapshot().hosts.find(({ hostId: hostId2 }) => hostId2 === "local")?.agents.filter(({ availability }) => availability === "notInstalled").map(({ agent }) => agent)
27077
+ getDiagnostics()?.snapshot().hosts.find(({ hostId: hostId2 }) => hostId2 === (client.hostId ?? "local"))?.agents.filter(({ availability }) => availability === "notInstalled").map(({ agent }) => agent)
26966
27078
  );
26967
27079
  const harnesses = (await client.listSessionImportSources()).harnesses.filter(
26968
27080
  ({ harnessId }) => !missing.has(harnessId)
@@ -26980,6 +27092,7 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
26980
27092
  },
26981
27093
  {
26982
27094
  success(result) {
27095
+ loadedClient = client;
26983
27096
  listControls.setBusy(false);
26984
27097
  if (listControls.setTotal(result.total)) {
26985
27098
  load();
@@ -26992,6 +27105,7 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
26992
27105
  else renderCandidates();
26993
27106
  },
26994
27107
  failure(error51) {
27108
+ loadedClient = null;
26995
27109
  listControls.setBusy(false);
26996
27110
  candidates = [];
26997
27111
  refresh.disabled = false;
@@ -27001,6 +27115,19 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
27001
27115
  }
27002
27116
  );
27003
27117
  };
27118
+ const selectHost = (hostId2) => {
27119
+ if (hostsLocked || !availableHostIds.includes(hostId2) || hostId2 === selectedHostId) return;
27120
+ selectedHostId = hostId2;
27121
+ selectedHarness = null;
27122
+ sources = [];
27123
+ candidates = [];
27124
+ actions = [];
27125
+ importStatus.replaceChildren();
27126
+ listControls.reset();
27127
+ renderHarnessOptions();
27128
+ load();
27129
+ hostButtons.find((button2) => button2.dataset.sessionImportHost === hostId2)?.focus();
27130
+ };
27004
27131
  refresh.addEventListener("click", load);
27005
27132
  load();
27006
27133
  return void 0;
@@ -27177,14 +27304,14 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
27177
27304
  description: messages.idleReleaseTimeoutDescription,
27178
27305
  controlId: minutesId
27179
27306
  });
27180
- const { field, control: minutes } = createNumberField(document2, {
27307
+ const { field: field2, control: minutes } = createNumberField(document2, {
27181
27308
  id: minutesId,
27182
27309
  describedBy: timeout.description.id,
27183
27310
  unit: messages.idleReleaseMinutes,
27184
27311
  min: IDLE_RELEASE_TIMEOUT_MINUTES_MIN,
27185
27312
  max: IDLE_RELEASE_TIMEOUT_MINUTES_MAX
27186
27313
  });
27187
- timeout.item.append(field);
27314
+ timeout.item.append(field2);
27188
27315
  timeout.item.id = preferenceId("idle-release-timeout");
27189
27316
  enabled.setAttribute("aria-controls", timeout.item.id);
27190
27317
  card.append(toggle.item, timeout.item);
@@ -27205,7 +27332,7 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
27205
27332
  statusText.textContent = value === "applied" ? "" : statusMessages[value];
27206
27333
  };
27207
27334
  const setInvalid = (invalid) => {
27208
- field.dataset.invalid = String(invalid);
27335
+ field2.dataset.invalid = String(invalid);
27209
27336
  timeout.description.dataset.invalid = String(invalid);
27210
27337
  timeout.description.textContent = invalid ? messages.idleReleaseInvalid : messages.idleReleaseTimeoutDescription;
27211
27338
  minutes.setAttribute("aria-invalid", String(invalid));
@@ -28920,6 +29047,43 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
28920
29047
  });
28921
29048
  }
28922
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
+
28923
29087
  // src/settings/update-request.ts
28924
29088
  var RENDERER_UPDATE_REQUEST_TIMEOUT_MS = 15e3;
28925
29089
  var RendererUpdateRequestTimeoutError = class extends Error {
@@ -29247,8 +29411,8 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
29247
29411
  const starBanner = updateStarBanner(document2, messages);
29248
29412
  context.content.append(heading, metadata, panel, controls, starBanner, notes);
29249
29413
  const setManualFallback = (fallback) => {
29250
- controls.className = !fallback && !windows ? "settings-update-controls is-quiet" : "settings-update-controls";
29251
- 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;
29252
29416
  manualNpmDescription.className = fallback ? "settings-update-manual-description is-fallback" : "settings-update-manual-description";
29253
29417
  };
29254
29418
  let pollTimer;
@@ -29398,14 +29562,14 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
29398
29562
  panel.dataset.updateState = view;
29399
29563
  panel.replaceChildren();
29400
29564
  setManualFallback(Boolean(result.error) || actionableStatus !== null);
29401
- const inlineUpdate = !result.error && !windows && !actionableStatus && result.updateAvailable;
29565
+ const inlineUpdate = !result.error && !actionableStatus && result.updateAvailable;
29402
29566
  if (inlineUpdate) panel.dataset.inline = "";
29403
29567
  else delete panel.dataset.inline;
29404
29568
  panel.append(
29405
29569
  createPanelHead(
29406
29570
  document2,
29407
29571
  view,
29408
- 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
29409
29573
  )
29410
29574
  );
29411
29575
  if (actionableStatus?.error) {
@@ -29421,7 +29585,7 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
29421
29585
  panel.append(error51);
29422
29586
  }
29423
29587
  const buttons = [];
29424
- if (!windows && result.updateAvailable && result.installationAvailable) {
29588
+ if (result.updateAvailable && result.installationAvailable) {
29425
29589
  const update = document2.createElement("button");
29426
29590
  update.type = "button";
29427
29591
  update.className = "settings-command-button";
@@ -29470,11 +29634,12 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
29470
29634
  }
29471
29635
  });
29472
29636
  }
29473
- 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) {
29474
29638
  return Object.freeze([
29475
29639
  createConnectionsSettingsPage(messages, getDiagnostics, void 0, getRemoteConnections),
29476
29640
  createRemoteConnectionsPage(messages, getRemoteConnections),
29477
29641
  createAccountsSettingsPage(messages, getAccountClient),
29642
+ ...harnessSchedules ? [createHarnessSchedulesPage(messages, harnessSchedules)] : [],
29478
29643
  createSessionImportSettingsPage(
29479
29644
  messages,
29480
29645
  getSessionImportClient,
@@ -30044,6 +30209,41 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
30044
30209
  margin-top: 0;
30045
30210
  }
30046
30211
 
30212
+ .settings-session-import-host {
30213
+ display: flex;
30214
+ align-items: center;
30215
+ min-width: 0;
30216
+ gap: 12px;
30217
+ margin: -12px 0 12px;
30218
+ color: var(--settings-muted);
30219
+ font-size: 13px;
30220
+ }
30221
+
30222
+ .settings-session-import-host > span,
30223
+ .settings-session-import-host + .settings-session-import-harness > span {
30224
+ flex: none;
30225
+ min-width: 60px;
30226
+ }
30227
+
30228
+ .settings-session-import-host > .settings-connection-host-tabs {
30229
+ flex: 1;
30230
+ }
30231
+
30232
+ .settings-session-import-host .settings-connection-host-tab {
30233
+ height: 34px;
30234
+ padding: 0 12px;
30235
+ font-size: 13px;
30236
+ }
30237
+
30238
+ .settings-session-import-host .settings-connection-host-tab:disabled {
30239
+ opacity: 0.38;
30240
+ cursor: not-allowed;
30241
+ }
30242
+
30243
+ .settings-session-import-host + .settings-session-import-harness {
30244
+ margin-top: 0;
30245
+ }
30246
+
30047
30247
  .settings-session-import-search,
30048
30248
  .settings-session-import-pagination {
30049
30249
  display: flex;
@@ -30400,7 +30600,8 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
30400
30600
  background: var(--settings-hover);
30401
30601
  }
30402
30602
 
30403
- .settings-connection-host-tab[aria-selected="true"] {
30603
+ .settings-connection-host-tab[aria-selected="true"],
30604
+ .settings-connection-host-tab[aria-pressed="true"] {
30404
30605
  color: var(--settings-text);
30405
30606
  font-weight: 600;
30406
30607
  background: var(--settings-active);
@@ -32078,7 +32279,7 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
32078
32279
  `;
32079
32280
 
32080
32281
  // src/settings/tailwind.css
32081
- 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';
32082
32283
 
32083
32284
  // src/console/app.ts
32084
32285
  function required2(pages, id) {
@@ -32346,6 +32547,7 @@ ${console_default}`
32346
32547
  lucide/dist/esm/defaultAttributes.mjs:
32347
32548
  lucide/dist/esm/createElement.mjs:
32348
32549
  lucide/dist/esm/icons/boxes.mjs:
32550
+ lucide/dist/esm/icons/calendar-clock.mjs:
32349
32551
  lucide/dist/esm/icons/circle-check.mjs:
32350
32552
  lucide/dist/esm/icons/chevron-down.mjs:
32351
32553
  lucide/dist/esm/icons/chevron-left.mjs: