local-operator-ui 0.34.49 → 0.34.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/out/main/index.js +167 -75
  2. package/out/preload/index.js +46 -1
  3. package/out/renderer/assets/{_basePickBy-Coq1U1Is.js → _basePickBy-CSwEaqGH.js} +1 -1
  4. package/out/renderer/assets/{_baseUniq-CN5nbj15.js → _baseUniq-ClgJBEui.js} +1 -1
  5. package/out/renderer/assets/{agent-details-page-BOHG1UL8.js → agent-details-page-v9g-0tfN.js} +1 -1
  6. package/out/renderer/assets/{agent-hub-page-lDe6m3U_.js → agent-hub-page-i9l6Uv6w.js} +2 -2
  7. package/out/renderer/assets/agents-page-BEY9jzic.js +7 -0
  8. package/out/renderer/assets/{arc-CyEksofH.js → arc-Bp2vhvT8.js} +1 -1
  9. package/out/renderer/assets/{architectureDiagram-IEHRJDOE-o2ZHU4e3.js → architectureDiagram-IEHRJDOE-mnxRnj85.js} +1 -1
  10. package/out/renderer/assets/{blockDiagram-JOT3LUYC-B0Yyp4_C.js → blockDiagram-JOT3LUYC-Cy0bUbS1.js} +1 -1
  11. package/out/renderer/assets/{book-open-CEakesEi.js → book-open-CwvcZLaU.js} +1 -1
  12. package/out/renderer/assets/browser-page-ffFPxvmW.js +1 -0
  13. package/out/renderer/assets/{browser-webauthn-prompt-Dq82YVua.js → browser-webauthn-prompt-CVfiiYOR.js} +1 -1
  14. package/out/renderer/assets/{c4Diagram-VJAJSXHY-DLUNsMlf.js → c4Diagram-VJAJSXHY-BLgwrX8R.js} +1 -1
  15. package/out/renderer/assets/channel-H9kkayno.js +1 -0
  16. package/out/renderer/assets/{chunk-4BMEZGHF-TEJuQZ1Y.js → chunk-4BMEZGHF-BKbXn5lz.js} +1 -1
  17. package/out/renderer/assets/{chunk-A2AXSNBT-B_dFl8CN.js → chunk-A2AXSNBT-huAEN9rv.js} +1 -1
  18. package/out/renderer/assets/{chunk-AEK57VVT-BZoQ5TO6.js → chunk-AEK57VVT-CLlndZHa.js} +1 -1
  19. package/out/renderer/assets/{chunk-D6G4REZN-D1bYNZJL.js → chunk-D6G4REZN-BQoQzkpH.js} +1 -1
  20. package/out/renderer/assets/{chunk-RZ5BOZE2-DbkFvpUt.js → chunk-RZ5BOZE2-BS-67Htk.js} +1 -1
  21. package/out/renderer/assets/{chunk-XZIHB7SX-C0c85hT-.js → chunk-XZIHB7SX-B413LPHS.js} +1 -1
  22. package/out/renderer/assets/classDiagram-GIVACNV2-CBQ7Tucl.js +1 -0
  23. package/out/renderer/assets/classDiagram-v2-COTLJTTW-CBQ7Tucl.js +1 -0
  24. package/out/renderer/assets/clone-D41kSeCw.js +1 -0
  25. package/out/renderer/assets/{console-mirror-DDhXu5hQ.js → console-mirror-atIrzrKQ.js} +1 -1
  26. package/out/renderer/assets/{consoleCapture-DomsRGWw.js → consoleCapture-qbkQDsbk.js} +1 -1
  27. package/out/renderer/assets/{conversation-input-sync-B3FVv0Mq.js → conversation-input-sync-B0j1FBwv.js} +253 -253
  28. package/out/renderer/assets/{dagre-OKDRZEBW-CAb1XIuS.js → dagre-OKDRZEBW-fZfOS2dk.js} +1 -1
  29. package/out/renderer/assets/{diagram-SSKATNLV-CAh7vH7L.js → diagram-SSKATNLV-alPaSAsa.js} +1 -1
  30. package/out/renderer/assets/{diagram-VNBRO52H-CU4FF4Qr.js → diagram-VNBRO52H-12nwGS_H.js} +1 -1
  31. package/out/renderer/assets/{erDiagram-Q7BY3M3F-CbnNz_kj.js → erDiagram-Q7BY3M3F-C0VQmN1m.js} +1 -1
  32. package/out/renderer/assets/{error-boundary-etstfCzN.js → error-boundary-C0P2AR1t.js} +1 -1
  33. package/out/renderer/assets/{flowDiagram-4HSFHLVR-BB6aJVKV.js → flowDiagram-4HSFHLVR-yAA_68VC.js} +1 -1
  34. package/out/renderer/assets/{ganttDiagram-APWFNJXF-CtOJM4d7.js → ganttDiagram-APWFNJXF-Cbk4f_uq.js} +1 -1
  35. package/out/renderer/assets/{gitGraphDiagram-7IBYFJ6S-DvrevAjH.js → gitGraphDiagram-7IBYFJ6S-C9o_Zz5H.js} +1 -1
  36. package/out/renderer/assets/{graph-DOR9Sgwh.js → graph-DUT-8BVr.js} +1 -1
  37. package/out/renderer/assets/{index-5vl5RXGq.js → index-B0uYixKz.js} +1 -1
  38. package/out/renderer/assets/index-CNvQ9FNg.js +57 -0
  39. package/out/renderer/assets/{index-CZ5usiad.js → index-Cun5ZiJ8.js} +1 -1
  40. package/out/renderer/assets/index-D-RvJY1X.css +1 -0
  41. package/out/renderer/assets/{index-9_-S4Njy.js → index-lYsxfVy0.js} +184 -184
  42. package/out/renderer/assets/{infoDiagram-PH2N3AL5-CTd32x3B.js → infoDiagram-PH2N3AL5-C4KvWN4_.js} +1 -1
  43. package/out/renderer/assets/{installer-CjbOLDvI.js → installer-CraQMM0S.js} +1 -1
  44. package/out/renderer/assets/{journeyDiagram-U35MCT3I-2BsbTilL.js → journeyDiagram-U35MCT3I-ClDn4ZZ_.js} +1 -1
  45. package/out/renderer/assets/{kanban-definition-NDS4AKOZ-DoYAcNl0.js → kanban-definition-NDS4AKOZ-DkZ2IqSy.js} +1 -1
  46. package/out/renderer/assets/{layout-DSk91znb.js → layout-B2ULRxc7.js} +1 -1
  47. package/out/renderer/assets/{legacy-agents-page-BGSPncrN.js → legacy-agents-page-BHmNHE9c.js} +5 -5
  48. package/out/renderer/assets/{mermaid.core-BqK7XNWH.js → mermaid.core-DwfN45qZ.js} +5 -5
  49. package/out/renderer/assets/{mesh-page-BxEA5Aan.js → mesh-page-BTaA4LA9.js} +1 -1
  50. package/out/renderer/assets/{mindmap-definition-ALO5MXBD-HV-ovM7g.js → mindmap-definition-ALO5MXBD-BaruaCsh.js} +1 -1
  51. package/out/renderer/assets/{mini-Bco2ITLo.js → mini-y-vZHWd4.js} +1 -1
  52. package/out/renderer/assets/{notebook-pen-DsGb6zKu.js → notebook-pen-Bufwjei-.js} +1 -1
  53. package/out/renderer/assets/{org-access-B_xqEqnd.js → org-access-BHVNNfiF.js} +1 -1
  54. package/out/renderer/assets/{org-surface-gate-D4SilXIt.js → org-surface-gate-Bu2ppyy0.js} +1 -1
  55. package/out/renderer/assets/{page-header-DZ04Whs5.js → page-header-CzdhP1vT.js} +1 -1
  56. package/out/renderer/assets/{pieDiagram-IB7DONF6-BArx4Jik.js → pieDiagram-IB7DONF6-D6b-IA5_.js} +1 -1
  57. package/out/renderer/assets/{projects-page-DABVK4s_.js → projects-page-B2p6409_.js} +1 -1
  58. package/out/renderer/assets/{publication-validation-BmkCCv-H.js → publication-validation-DV7MFEnt.js} +1 -1
  59. package/out/renderer/assets/{quadrantDiagram-7GDLP6J5-Dmmo_urD.js → quadrantDiagram-7GDLP6J5-BohSnqJt.js} +1 -1
  60. package/out/renderer/assets/{radar-MK3ICKWK-D8Sc1Ajv.js → radar-MK3ICKWK-B8IyfRFK.js} +1 -1
  61. package/out/renderer/assets/{radient-auth-buttons-BmQt2D1Y.js → radient-auth-buttons-CeAmJxoU.js} +1 -1
  62. package/out/renderer/assets/{requirementDiagram-KVF5MWMF-BU04-wPA.js → requirementDiagram-KVF5MWMF-CjxwfVmm.js} +1 -1
  63. package/out/renderer/assets/{sankeyDiagram-QLVOVGJD-CIQO7kso.js → sankeyDiagram-QLVOVGJD-Dmb58RjS.js} +1 -1
  64. package/out/renderer/assets/{schedules-page-DllGJFS2.js → schedules-page-Dujbkmf1.js} +1 -1
  65. package/out/renderer/assets/{sequenceDiagram-X6HHIX6F-BN2soxj_.js → sequenceDiagram-X6HHIX6F-H7CVraeF.js} +1 -1
  66. package/out/renderer/assets/{settings-page-DKzDa5P5.js → settings-page-tA2lkM1h.js} +1 -1
  67. package/out/renderer/assets/{stateDiagram-DGXRK772-bGNaZvy4.js → stateDiagram-DGXRK772-DJN0Rf3F.js} +1 -1
  68. package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-DTfdA0h1.js +1 -0
  69. package/out/renderer/assets/{timeline-definition-BDJGKUSR-DmM_eb2d.js → timeline-definition-BDJGKUSR-0g8a7xFr.js} +1 -1
  70. package/out/renderer/assets/ui-preferences-store-B92Xh3eA.js +1 -0
  71. package/out/renderer/assets/{use-download-agent-mutation-CXv_tRQE.js → use-download-agent-mutation-Doz1TzJr.js} +4 -4
  72. package/out/renderer/assets/{use-memberships-query-C4IVeIBl.js → use-memberships-query-CjMpjmh2.js} +1 -1
  73. package/out/renderer/assets/{use-session-snapshot-CrOrWGgL.js → use-session-snapshot-CoJrqYcV.js} +1 -1
  74. package/out/renderer/assets/{xychartDiagram-VJFVF3MP-CbbQZrKE.js → xychartDiagram-VJFVF3MP-Cn4PWpai.js} +1 -1
  75. package/out/renderer/console-capture.html +5 -5
  76. package/out/renderer/index.html +7 -7
  77. package/out/renderer/installer.html +4 -4
  78. package/out/renderer/mini.html +7 -7
  79. package/package.json +2 -2
  80. package/out/renderer/assets/agents-page-CS2ctxLL.js +0 -7
  81. package/out/renderer/assets/browser-page-CjbkyuiR.js +0 -1
  82. package/out/renderer/assets/channel-BrqzOdfK.js +0 -1
  83. package/out/renderer/assets/classDiagram-GIVACNV2-C4Q7B2pX.js +0 -1
  84. package/out/renderer/assets/classDiagram-v2-COTLJTTW-C4Q7B2pX.js +0 -1
  85. package/out/renderer/assets/clone-T21nSsyt.js +0 -1
  86. package/out/renderer/assets/index-CftawgM9.js +0 -57
  87. package/out/renderer/assets/index-VwZaZzVv.css +0 -1
  88. package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-CNVQhmQM.js +0 -1
  89. package/out/renderer/assets/ui-preferences-store-Byw1dJtt.js +0 -1
package/out/main/index.js CHANGED
@@ -108,6 +108,16 @@ const THREAD_FIND_MAX_CHARS = 256;
108
108
  const THREAD_FIND_DEFAULT_LIMIT = 100;
109
109
  const THREAD_FIND_MAX_LIMIT = 200;
110
110
  const DESKTOP_SYSTEM_PROMPT_MAX_CHARS = 1e6;
111
+ const memberEffort = zod.z.enum([
112
+ "auto",
113
+ "none",
114
+ "minimal",
115
+ "low",
116
+ "medium",
117
+ "high",
118
+ "xhigh",
119
+ "max"
120
+ ]);
111
121
  const profileName = zod.z.string().min(1).max(128).refine(
112
122
  (name) => name !== "." && name !== ".." && !name.includes("/") && !name.includes("\\") && [...name].every(
113
123
  (character) => character.charCodeAt(0) >= 32 && character.charCodeAt(0) !== 127
@@ -145,7 +155,23 @@ const teamFields = zod.z.object({
145
155
  zod.z.object({
146
156
  role: profileName,
147
157
  count: zod.z.number().int().min(1).max(16),
148
- kind: zod.z.enum(["agent", "team"])
158
+ kind: zod.z.enum(["agent", "team"]),
159
+ /*
160
+ * THE SLOT'S MODEL OVERRIDES (team member tiers, P3). `null` and
161
+ * absent mean the same thing on this wire - no override, fall
162
+ * through to the next layer - and the pair is spelled with the SAME
163
+ * words the backend's `TeamMember` accepts (`CANONICAL_EFFORT_TIERS`
164
+ * and `TIER_EFFORTS`), so a value this client can send cannot be one
165
+ * the server refuses. `null` is accepted rather than omitted alone
166
+ * because a cleared field is what a form has in hand.
167
+ *
168
+ * Enumerated rather than free text for the reason the tier list is:
169
+ * this client is not the only writer (the team tool, a hand-edited
170
+ * `team.yml`), and a membership gate here is what keeps a typo out of
171
+ * a roster that would otherwise be silently written and ignored.
172
+ */
173
+ tier: zod.z.enum(["lo", "med", "hi"]).nullable().optional(),
174
+ effort: memberEffort.nullable().optional()
149
175
  }).strict()
150
176
  ).max(128).optional(),
151
177
  instructions: zod.z.string().max(8e3).optional(),
@@ -474,6 +500,19 @@ const desktopRequestUnion = zod.z.discriminatedUnion("op", [
474
500
  }).strict(),
475
501
  zod.z.object({ op: zod.z.literal("teams.list") }).strict(),
476
502
  zod.z.object({ op: zod.z.literal("teams.get"), name: profileName }).strict(),
503
+ /*
504
+ * THE RESOLVED READING of every slot's model and reasoning effort, with the
505
+ * layer each came from - the team editor's answer to "why is this member on
506
+ * that model". A READ: it resolves the same precedence a launch does without
507
+ * launching anything and writes nothing.
508
+ *
509
+ * ADDITIVE, and its absence is a capability signal rather than an error: a
510
+ * backend older than the route answers 404, which is how the editor learns to
511
+ * hide its override controls (the same status `backendErrorKind` classifies as
512
+ * `outdated`). Such a server also ignores the member keys above, which is why
513
+ * the hidden editor is the honest reading rather than a lost edit.
514
+ */
515
+ zod.z.object({ op: zod.z.literal("teams.effective"), name: profileName }).strict(),
477
516
  /*
478
517
  * Team CAS is the same optional opaque echo as the profile arm: absent/null is
479
518
  * the legacy unconditional write, a supplied stale/malformed value is refused
@@ -2583,6 +2622,12 @@ const DESKTOP_REFUSAL_CODE = {
2583
2622
  */
2584
2623
  transportFailed: "transport.failed"
2585
2624
  };
2625
+ zod.z.object({
2626
+ data: zod.z.object({
2627
+ aside_id: zod.z.string().optional(),
2628
+ status: zod.z.union([zod.z.enum(["adopted", "queued"]), zod.z.string()]).optional()
2629
+ }).passthrough()
2630
+ }).passthrough();
2586
2631
  const DESKTOP_MACHINE_DETAIL = {
2587
2632
  /*
2588
2633
  * NOTE for whoever greps for the ownership instruction this change removed:
@@ -2801,6 +2846,7 @@ const READ_ONLY_OPS = /* @__PURE__ */ new Set([
2801
2846
  "sessions.variables.list",
2802
2847
  "skills.list",
2803
2848
  "subagents.transcript",
2849
+ "teams.effective",
2804
2850
  "teams.get",
2805
2851
  "teams.list",
2806
2852
  // The two phone-setup observations change nothing on the server; `tunnel.setup.run`
@@ -3180,6 +3226,11 @@ function desktopEndpoint(request) {
3180
3226
  path: `/v1/desktop/teams/${encodeURIComponent(request.name)}`,
3181
3227
  method: "GET"
3182
3228
  };
3229
+ case "teams.effective":
3230
+ return {
3231
+ path: `/v1/desktop/teams/${encodeURIComponent(request.name)}/effective`,
3232
+ method: "GET"
3233
+ };
3183
3234
  case "teams.create":
3184
3235
  return {
3185
3236
  path: "/v1/desktop/teams",
@@ -31690,6 +31741,46 @@ const enUiAgentsDialogs = {
31690
31741
  "ui.agents.dialogs.import.invalid_zip": "Only ZIP files are supported"
31691
31742
  };
31692
31743
  const enUiAgents = {};
31744
+ const enUiAgentsModels = {
31745
+ "ui.agents.models.reading.title": "Model and effort",
31746
+ "ui.agents.models.reading.description": "What each member runs on, and which layer set it.",
31747
+ "ui.agents.models.reading.member_col": "Member",
31748
+ "ui.agents.models.reading.model_col": "Model",
31749
+ "ui.agents.models.reading.effort_col": "Effort",
31750
+ "ui.agents.models.reading.session_model": "the launching session's model",
31751
+ "ui.agents.models.reading.not_resolved": "not resolved",
31752
+ "ui.agents.models.reading.tier_layer": "tier {tier} ({source})",
31753
+ "ui.agents.models.reading.effort_auto": "auto",
31754
+ "ui.agents.models.reading.effort_clamped": "{requested} → {value}",
31755
+ "ui.agents.models.reading.effort_default": "model default",
31756
+ "ui.agents.models.reading.unavailable": "{member} cannot start: {reason}",
31757
+ "ui.agents.models.reading.unavailable_editor": "Saved setting — {member} cannot start: {reason}",
31758
+ "ui.agents.models.reading.unavailable_hint": "Add the tier in Settings.",
31759
+ "ui.agents.models.reading.read_failed": "The effective models could not be read, so overrides cannot be edited.",
31760
+ "ui.agents.models.reading.try_again": "Try again",
31761
+ "ui.agents.models.reading.refreshing": "Updating…",
31762
+ "ui.agents.models.reading.no_probe_hint": "Save the team to set per-member model overrides.",
31763
+ "ui.agents.models.reading.saved_label": "Saved",
31764
+ "ui.agents.models.reading.model_cell": "Model: {value}",
31765
+ "ui.agents.models.reading.model_cell_layer": "Model: {value} ({layer})",
31766
+ "ui.agents.models.reading.effort_cell": "Effort: {value}",
31767
+ "ui.agents.models.reading.effort_cell_layer": "Effort: {value} ({layer})",
31768
+ "ui.agents.models.source.team": "from this team",
31769
+ "ui.agents.models.source.row": "from the agent",
31770
+ "ui.agents.models.source.none": "no override",
31771
+ "ui.agents.models.source.tier": "the tier map",
31772
+ "ui.agents.models.source.session": "the session",
31773
+ "ui.agents.models.source.model_default": "the model's default",
31774
+ "ui.agents.models.override.scope_hint": "A member's override here applies to this team only, and takes priority over the agent's own tier and effort.",
31775
+ "ui.agents.models.override.tier_label": "Effort tier for {member}",
31776
+ "ui.agents.models.override.tier_field": "Effort tier",
31777
+ "ui.agents.models.override.effort_label": "Reasoning effort for {member}",
31778
+ "ui.agents.models.override.effort_field": "Reasoning effort",
31779
+ "ui.agents.models.override.inherit_tier": "Inherit (agent's tier)",
31780
+ "ui.agents.models.override.inherit_effort": "Inherit (agent's effort)",
31781
+ "ui.agents.models.override.auto": "Auto (model default)",
31782
+ "ui.agents.models.pin_reach": "This effort tier is used by {count, plural, one {{count, number, ::group-off} team} other {{count, number, ::group-off} teams}}: {teams}"
31783
+ };
31693
31784
  const enUiAgentsNavigation = {
31694
31785
  "ui.agents.navigation.updates.preview.empty": "No differences to show: the hub's version matches yours.",
31695
31786
  "ui.agents.navigation.updates.preview.local": "Yours",
@@ -32108,7 +32199,7 @@ const enUiCanvas = {
32108
32199
  "ui.canvas.files.error": "Could not load session files",
32109
32200
  "ui.canvas.files.remote": "Remote files are unavailable here",
32110
32201
  "ui.canvas.files.inSession": "In session",
32111
- "ui.canvas.files.count": "{count, plural, one {# file} other {# files}}",
32202
+ "ui.canvas.files.count": "{count, plural, one {{count, number, ::group-off} file} other {{count, number, ::group-off} files}}",
32112
32203
  "ui.canvas.files.narrowCount": "{shown} of {total} files",
32113
32204
  "ui.canvas.files.gone": "No longer in the session",
32114
32205
  "ui.canvas.files.earlier": "Search earlier messages",
@@ -32150,7 +32241,7 @@ const enUiChatSidebarView = {
32150
32241
  "ui.chat.sidebar_view.clock_hint": "Dates and ordering follow the selected clock.",
32151
32242
  "ui.chat.sidebar_view.move_up": "Move {section} up",
32152
32243
  "ui.chat.sidebar_view.move_down": "Move {section} down",
32153
- "ui.chat.sidebar_view.hidden": "{count, plural, one {# section hidden} other {# sections hidden}}",
32244
+ "ui.chat.sidebar_view.hidden": "{count, plural, one {{count, number, ::group-off} section hidden} other {{count, number, ::group-off} sections hidden}}",
32154
32245
  "ui.chat.sidebar_view.section.pinned": "Pinned",
32155
32246
  "ui.chat.sidebar_view.section.running": "Running",
32156
32247
  "ui.chat.sidebar_view.section.today": "Today",
@@ -32547,21 +32638,21 @@ const enUiCommonUpdates = {
32547
32638
  "ui.common.updates.update_quiet_indicator.application_update": "Application update",
32548
32639
  "ui.common.updates.update_quiet_indicator.dismiss_update_notice": "Dismiss update notice",
32549
32640
  "ui.common.updates.update_quiet_indicator.server_update": "Server update",
32550
- "ui.common.updates.wait.minutes": "Waiting {minutes, plural, one {# minute} other {# minutes}} so far",
32551
- "ui.common.updates.wait.minutes_seconds": "Waiting {minutes, plural, one {# minute} other {# minutes}} {seconds, plural, one {# second} other {# seconds}} so far",
32552
- "ui.common.updates.wait.seconds": "Waiting {seconds, plural, one {# second} other {# seconds}} so far"
32641
+ "ui.common.updates.wait.minutes": "Waiting {minutes, plural, one {{minutes, number, ::group-off} minute} other {{minutes, number, ::group-off} minutes}} so far",
32642
+ "ui.common.updates.wait.minutes_seconds": "Waiting {minutes, plural, one {{minutes, number, ::group-off} minute} other {{minutes, number, ::group-off} minutes}} {seconds, plural, one {{seconds, number, ::group-off} second} other {{seconds, number, ::group-off} seconds}} so far",
32643
+ "ui.common.updates.wait.seconds": "Waiting {seconds, plural, one {{seconds, number, ::group-off} second} other {{seconds, number, ::group-off} seconds}} so far"
32553
32644
  };
32554
32645
  const enUiConsole = {
32555
- "ui.console.capacity.summary": "{live, number} live of {limit, number} in the app",
32556
- "ui.console.capacity.summary_compact": "{live, number}/{limit, number} · {archived, number} kept",
32557
- "ui.console.capacity.summary_compact_bare": "{live, number}/{limit, number}",
32558
- "ui.console.capacity.archived": " · {archived, number} kept",
32646
+ "ui.console.capacity.summary": "{live, number, ::group-off} live of {limit, number, ::group-off} in the app",
32647
+ "ui.console.capacity.summary_compact": "{live, number, ::group-off}/{limit, number, ::group-off} · {archived, number, ::group-off} kept",
32648
+ "ui.console.capacity.summary_compact_bare": "{live, number, ::group-off}/{limit, number, ::group-off}",
32649
+ "ui.console.capacity.archived": " · {archived, number, ::group-off} kept",
32559
32650
  "ui.console.capacity.full": " · full",
32560
32651
  "ui.console.capacity.help": "App-wide counts, across every conversation. Kept history does not use a process slot.",
32561
- "ui.console.capacity.resources": "Modeled managed storage: {memory, number} MiB. Logs: {logs, number} MiB. Pending output: {pending, number} MiB. Terminal cells: {cells, number}. Protected terminals: {protected, number}. This excludes child-process memory.",
32652
+ "ui.console.capacity.resources": "Modeled managed storage: {memory, number, ::group-off} MiB. Logs: {logs, number, ::group-off} MiB. Pending output: {pending, number, ::group-off} MiB. Terminal cells: {cells, number, ::group-off}. Protected terminals: {protected, number, ::group-off}. This excludes child-process memory.",
32562
32653
  "ui.console.cleanup.label": "Clear finished agent terminals",
32563
32654
  "ui.console.cleanup.help": "Clears finished agent terminals in this conversation. Finished ones the agent asked to keep stay on disk; the rest are closed and their output is not kept. Terminals you opened, and any in use, are left alone.",
32564
- "ui.console.cleanup.result": "Cleared {released, plural, one {# finished agent terminal} other {# finished agent terminals}}. {protected, plural, =0 {} one {# is still in use and was left open.} other {# are still in use and were left open.}}",
32655
+ "ui.console.cleanup.result": "Cleared {released, plural, one {{released, number, ::group-off} finished agent terminal} other {{released, number, ::group-off} finished agent terminals}}. {protected, plural, =0 {} one {{protected, number, ::group-off} is still in use and was left open.} other {{protected, number, ::group-off} are still in use and were left open.}}",
32565
32656
  "ui.console.cleanup.result_none": "Nothing to clear — no finished agent terminals in this conversation.",
32566
32657
  "ui.console.dismiss_history": "Clear terminal and delete retained output",
32567
32658
  "ui.console.dismiss.body": "Clearing this terminal deletes its retained output from disk, so a relaunch cannot restore it.",
@@ -32600,9 +32691,9 @@ const enUiConsole = {
32600
32691
  "ui.console.tab.ended": "ended",
32601
32692
  "ui.console.tab.agent_opened": "An agent opened this console",
32602
32693
  "ui.console.tab.agent_typed": "An agent has typed into this console",
32603
- "ui.console.tab.close_label": "Close {title}, tab {index, number} of {total, number}",
32604
- "ui.console.tab.clear_label": "Clear {title}, tab {index, number} of {total, number}",
32605
- "ui.console.tab.clear_label_retained": "Clear {title}, tab {index, number} of {total, number} — deletes retained output",
32694
+ "ui.console.tab.close_label": "Close {title}, tab {index, number, ::group-off} of {total, number, ::group-off}",
32695
+ "ui.console.tab.clear_label": "Clear {title}, tab {index, number, ::group-off} of {total, number, ::group-off}",
32696
+ "ui.console.tab.clear_label_retained": "Clear {title}, tab {index, number, ::group-off} of {total, number, ::group-off} — deletes retained output",
32606
32697
  "ui.console.secure_toggle.stop": "Stop secure input",
32607
32698
  "ui.console.secure_toggle.start": "Secure input",
32608
32699
  "ui.console.secure_toggle.start_tooltip": "Secure input: stop recording this terminal",
@@ -32718,7 +32809,7 @@ const enUiHub = {
32718
32809
  "ui.hub.skills.publish_title": "Publish a skill",
32719
32810
  "ui.hub.skills.select_authored": "Authored skill",
32720
32811
  "ui.hub.skills.revision": "Remote revision: {revision}",
32721
- "ui.hub.skills.file_count": "{count, plural, one {# file included} other {# files included}}",
32812
+ "ui.hub.skills.file_count": "{count, plural, one {{count, number, ::group-off} file included} other {{count, number, ::group-off} files included}}",
32722
32813
  "ui.hub.skills.files": "Files included",
32723
32814
  "ui.hub.skills.text_limits": "Skills support up to 64 UTF-8 text files, 200 KiB per file and 1 MiB in total. Scripts are never run when publishing or pulling.",
32724
32815
  "ui.hub.skills.local_exists": "That local alias is already used. Choose another.",
@@ -32737,7 +32828,7 @@ const enUiHub = {
32737
32828
  "ui.hub.status.unknown": "Status unavailable.",
32738
32829
  "ui.hub.status.next_retry": "Next retry: {time}",
32739
32830
  "ui.hub.status.last_checked": "Last checked: {time}",
32740
- "ui.hub.status.attempts": "{count, plural, one {# attempt} other {# attempts}}",
32831
+ "ui.hub.status.attempts": "{count, plural, one {{count, number, ::group-off} attempt} other {{count, number, ::group-off} attempts}}",
32741
32832
  "ui.hub.status.receipt": "Operation receipt: {operation}",
32742
32833
  "ui.hub.status.core_update_required": "Update the Local Operator backend to a published release {minimum} or newer to change Hub settings. Browsing is still available.",
32743
32834
  "ui.hub.status.backend_checking": "Checking the Local Operator backend before allowing Hub changes. Browsing is still available.",
@@ -32781,11 +32872,11 @@ const enUiHub = {
32781
32872
  "ui.hub.status.transport_error": "Couldn't reach the hub. A retry is scheduled.",
32782
32873
  "ui.hub.links.scope_placeholder": "Choose a scope…",
32783
32874
  "ui.hub.links.scope_required": "Choose a scope to continue",
32784
- "ui.hub.links.sources_count": "{count, plural, one {# source} other {# sources}}",
32785
- "ui.hub.links.links_count": "{count, plural, one {# link} other {# links}}",
32875
+ "ui.hub.links.sources_count": "{count, plural, one {{count, number, ::group-off} source} other {{count, number, ::group-off} sources}}",
32876
+ "ui.hub.links.links_count": "{count, plural, one {{count, number, ::group-off} link} other {{count, number, ::group-off} links}}",
32786
32877
  "ui.hub.links.unresolved_mark": "{item}: source not confirmed. Confirm the source.",
32787
32878
  "ui.hub.links.mixed": "Mixed",
32788
- "ui.hub.links.aggregate_mark": "{count, plural, one {# link} other {# links}}; {state}",
32879
+ "ui.hub.links.aggregate_mark": "{count, plural, one {{count, number, ::group-off} link} other {{count, number, ::group-off} links}}; {state}",
32789
32880
  "ui.hub.links.mark_healthy": "up to date",
32790
32881
  "ui.hub.links.mark_review": "needs review",
32791
32882
  "ui.hub.links.mark_failed": "failed",
@@ -32879,7 +32970,7 @@ const enUiMesh = {
32879
32970
  "ui.mesh.mesh_approvals_tray.after_a_stop": "After a stop",
32880
32971
  "ui.mesh.mesh_approvals_tray.the_runner_stopped_before_it_finished_abandoning": "The runner stopped before it finished. Abandoning denies the request; a retry re-enters the same record instead.",
32881
32972
  "ui.mesh.mesh_approvals_tray.approvals": "Approvals",
32882
- "ui.mesh.mesh_approvals_tray.waiting_count": "{count, plural, one {# waiting} other {# waiting}}",
32973
+ "ui.mesh.mesh_approvals_tray.waiting_count": "{count, plural, one {{count, number, ::group-off} waiting} other {{count, number, ::group-off} waiting}}",
32883
32974
  "ui.mesh.mesh_approvals_tray.ask_again": "Ask again",
32884
32975
  "ui.mesh.mesh_approvals_tray.settled_approvals": "Settled approvals",
32885
32976
  "ui.mesh.mesh_approvals_tray.the_runner_stopped_before_it_finished_it": "The runner stopped before it finished. It stays retryable until its window closes; Abandon denies the request.",
@@ -32936,8 +33027,8 @@ const enUiMesh = {
32936
33027
  "ui.mesh.mesh_approvals.borrow_the_logins_stored_there": "borrow the logins stored there",
32937
33028
  "ui.mesh.mesh_approvals.answer_approval_prompts_there": "answer approval prompts there",
32938
33029
  "ui.mesh.mesh_approvals.expires_in_under_a_minute": "expires in under a minute",
32939
- "ui.mesh.mesh_approvals.expires_minutes": "expires in {count, plural, one {# minute} other {# minutes}}",
32940
- "ui.mesh.mesh_approvals.expires_hours": "expires in {count, plural, one {# hour} other {# hours}}",
33030
+ "ui.mesh.mesh_approvals.expires_minutes": "expires in {count, plural, one {{count, number, ::group-off} minute} other {{count, number, ::group-off} minutes}}",
33031
+ "ui.mesh.mesh_approvals.expires_hours": "expires in {count, plural, one {{count, number, ::group-off} hour} other {{count, number, ::group-off} hours}}",
32941
33032
  "ui.mesh.mesh_approvals.the_approvals_could_not_be_read": "The approvals could not be read.",
32942
33033
  "ui.mesh.mesh_canvas.networks": "Networks",
32943
33034
  "ui.mesh.mesh_canvas.devices": "Devices",
@@ -32945,9 +33036,9 @@ const enUiMesh = {
32945
33036
  "ui.mesh.mesh_card.copy_here_leave_it_there": "Copy here, leave it there",
32946
33037
  "ui.mesh.mesh_card.move_to": "Move to {device}",
32947
33038
  "ui.mesh.mesh_card.copy_to": "Copy to {device}",
32948
- "ui.mesh.mesh_card.conversation_count": "{count, plural, one {# conversation} other {# conversations}}",
33039
+ "ui.mesh.mesh_card.conversation_count": "{count, plural, one {{count, number, ::group-off} conversation} other {{count, number, ::group-off} conversations}}",
32949
33040
  "ui.mesh.mesh_card.revoked_membership": "revoked membership",
32950
- "ui.mesh.mesh_card.shown_of": "{shown, number} of {total, number}",
33041
+ "ui.mesh.mesh_card.shown_of": "{shown, number, ::group-off} of {total, number, ::group-off}",
32951
33042
  "ui.mesh.mesh_card.device_details": "{device} details",
32952
33043
  "ui.mesh.mesh_card.memberships": "Memberships",
32953
33044
  "ui.mesh.mesh_card.revoked": " · revoked",
@@ -32991,31 +33082,31 @@ const enUiMesh = {
32991
33082
  "ui.mesh.mesh_graph.self_conversations": "this device · {conversations}",
32992
33083
  "ui.mesh.mesh_graph.identity_suspect": "identity suspect",
32993
33084
  "ui.mesh.mesh_graph.no_sessions_reported": "no sessions reported",
32994
- "ui.mesh.mesh_graph.network_count": "{count, plural, one {# network} other {# networks}}",
32995
- "ui.mesh.mesh_graph.device_count": "{count, plural, one {# device} other {# devices}}",
32996
- "ui.mesh.mesh_graph.suspected_count": "{count, plural, other {# of them suspected}}",
32997
- "ui.mesh.mesh_graph.reached_count": "{count, plural, other {# reached}}",
32998
- "ui.mesh.mesh_graph.no_answer_count": "{count, plural, other {# no answer}}",
32999
- "ui.mesh.mesh_graph.not_asked_count": "{count, plural, other {# not asked}}",
33000
- "ui.mesh.mesh_graph.unknown_count": "{count, plural, other {# unknown}}",
33085
+ "ui.mesh.mesh_graph.network_count": "{count, plural, one {{count, number, ::group-off} network} other {{count, number, ::group-off} networks}}",
33086
+ "ui.mesh.mesh_graph.device_count": "{count, plural, one {{count, number, ::group-off} device} other {{count, number, ::group-off} devices}}",
33087
+ "ui.mesh.mesh_graph.suspected_count": "{count, plural, other {{count, number, ::group-off} of them suspected}}",
33088
+ "ui.mesh.mesh_graph.reached_count": "{count, plural, other {{count, number, ::group-off} reached}}",
33089
+ "ui.mesh.mesh_graph.no_answer_count": "{count, plural, other {{count, number, ::group-off} no answer}}",
33090
+ "ui.mesh.mesh_graph.not_asked_count": "{count, plural, other {{count, number, ::group-off} not asked}}",
33091
+ "ui.mesh.mesh_graph.unknown_count": "{count, plural, other {{count, number, ::group-off} unknown}}",
33001
33092
  "ui.mesh.mesh_graph.self_identity": "this device is {device}",
33002
33093
  "ui.mesh.mesh_list.name": "Name",
33003
33094
  "ui.mesh.mesh_list.state": "State",
33004
33095
  "ui.mesh.mesh_list.on_device_state": "on {device}{state}",
33005
33096
  "ui.mesh.mesh_list.on_device_no_answer": "on {device} (not answering)",
33006
33097
  "ui.mesh.mesh_list.sort_devices_by": "Sort devices by",
33007
- "ui.mesh.mesh_list.epoch": "epoch {epoch, number}",
33008
- "ui.mesh.mesh_list.revoked_count": " · {count, plural, other {# revoked}}",
33098
+ "ui.mesh.mesh_list.epoch": "epoch {epoch, number, ::group-off}",
33099
+ "ui.mesh.mesh_list.revoked_count": " · {count, plural, other {{count, number, ::group-off} revoked}}",
33009
33100
  "ui.mesh.mesh_list.revoked": "revoked",
33010
33101
  "ui.mesh.mesh_list.member": "member",
33011
33102
  "ui.mesh.mesh_list.move_conversation": "Move {conversation}",
33012
- "ui.mesh.mesh_list.show_all_panel": "show all {count, plural, other {# in the panel}}",
33103
+ "ui.mesh.mesh_list.show_all_panel": "show all {count, plural, other {{count, number, ::group-off} in the panel}}",
33013
33104
  "ui.mesh.mesh_list.answered_the_peer_read_but_is_in": "answered the peer read but is in no network this app can name.",
33014
33105
  "ui.mesh.mesh_node.on_device": "on {device}",
33015
33106
  "ui.mesh.mesh_node.working": "working",
33016
33107
  "ui.mesh.mesh_node.conversations_on": "Conversations on {device}",
33017
- "ui.mesh.mesh_node.shown_conversations": "Showing {shown, number} of {total, plural, one {# conversations} other {# conversations}}",
33018
- "ui.mesh.mesh_node.show_all_conversations": "Show all {count, plural, one {# conversations} other {# conversations}}",
33108
+ "ui.mesh.mesh_node.shown_conversations": "Showing {shown, number, ::group-off} of {total, plural, one {{total, number, ::group-off} conversations} other {{total, number, ::group-off} conversations}}",
33109
+ "ui.mesh.mesh_node.show_all_conversations": "Show all {count, plural, one {{count, number, ::group-off} conversations} other {{count, number, ::group-off} conversations}}",
33019
33110
  "ui.mesh.mesh_node.open_conversation": "{conversation}, {fact}. Opens {owner}.",
33020
33111
  "ui.mesh.mesh_page.canvas": "Canvas",
33021
33112
  "ui.mesh.mesh_page.list": "List",
@@ -33047,11 +33138,11 @@ const enUiMesh = {
33047
33138
  "ui.mesh.mesh_actions.this_moves_the_conversation": "This moves the conversation.",
33048
33139
  "ui.mesh.mesh_actions.the_device": "the device",
33049
33140
  "ui.mesh.mesh_approvals.decision_could_not_be_answered": "The decision could not be answered.",
33050
- "ui.mesh.mesh_node.memberships": "· {count, plural, one {# networks} other {# networks}}",
33141
+ "ui.mesh.mesh_node.memberships": "· {count, plural, one {{count, number, ::group-off} networks} other {{count, number, ::group-off} networks}}",
33051
33142
  "ui.mesh.mesh_graph.conversation_unit": "{count, plural, one {conversation} other {conversations}}",
33052
- "ui.mesh.mesh_approvals_tray.failed_count": "{count, plural, other {# failed}}",
33143
+ "ui.mesh.mesh_approvals_tray.failed_count": "{count, plural, other {{count, number, ::group-off} failed}}",
33053
33144
  "ui.mesh.mesh_list.sort_conversations": "Conversations",
33054
- "ui.mesh.mesh_list.conversation_count": "{count, plural, =0 {no conversations} one {# conversation} other {# conversations}}",
33145
+ "ui.mesh.mesh_list.conversation_count": "{count, plural, =0 {no conversations} one {{count, number, ::group-off} conversation} other {{count, number, ::group-off} conversations}}",
33055
33146
  "ui.mesh.approval.credential_title": "Credential access request",
33056
33147
  "ui.mesh.approval.unknown_title": "Approval request",
33057
33148
  "ui.mesh.approval.details_unavailable": "The full request details are unavailable in this app. Review the request from the command line on this machine.",
@@ -33107,8 +33198,8 @@ const enUiOnboarding = {
33107
33198
  "ui.onboarding.search.row.save_failed": "The key could not be saved.",
33108
33199
  "ui.onboarding.search.row.saved": "Saved",
33109
33200
  "ui.onboarding.search.row.saving": "Saving {name}",
33110
- "ui.onboarding.modal.step_of": "Step {current, number} of {total, number}",
33111
- "ui.onboarding.modal.steps_total": "{total, plural, one {# step} other {# steps}}"
33201
+ "ui.onboarding.modal.step_of": "Step {current, number, ::group-off} of {total, number, ::group-off}",
33202
+ "ui.onboarding.modal.steps_total": "{total, plural, one {{total, number, ::group-off} step} other {{total, number, ::group-off} steps}}"
33112
33203
  };
33113
33204
  const enUiProjects = {};
33114
33205
  const enUiProviders = {
@@ -33159,7 +33250,7 @@ const enUiProviders = {
33159
33250
  "ui.providers.connect_provider_dialog.your_agents_need_a_model_to_think": "Your agents need a model to think with. Sign in with an account you already have, or add an API key.",
33160
33251
  "ui.providers.provider_catalog.local_models": "local models",
33161
33252
  "ui.providers.provider_catalog.more_providers": "More providers",
33162
- "ui.providers.provider_catalog.more_providers_and": "More providers: {providers} and {count, plural, other {# more}}",
33253
+ "ui.providers.provider_catalog.more_providers_and": "More providers: {providers} and {count, plural, other {{count, number, ::group-off} more}}",
33163
33254
  "ui.providers.provider_catalog.more_providers_variant_41": "More providers: {provider}",
33164
33255
  "ui.providers.provider_catalog.more_providers_and_variant_42": "More providers: {providers} and {last}",
33165
33256
  "ui.providers.provider_catalog.claude_subscription": "Claude subscription",
@@ -33299,8 +33390,8 @@ const enUiProviders = {
33299
33390
  "ui.providers.sign_in_flow.sign_in_could_not_start": "Sign-in could not start.",
33300
33391
  "ui.providers.provider_detail.the_sign_in_page": "the sign-in page",
33301
33392
  "ui.providers.provider_grid.row_action": "{action}: {brand}",
33302
- "ui.providers.provider_detail.code_expiry": "Code expires in {minutes, plural, other {# min}}",
33303
- "ui.providers.provider_detail.link_expiry": "Link expires in {minutes, plural, other {# min}}"
33393
+ "ui.providers.provider_detail.code_expiry": "Code expires in {minutes, plural, other {{minutes, number, ::group-off} min}}",
33394
+ "ui.providers.provider_detail.link_expiry": "Link expires in {minutes, plural, other {{minutes, number, ::group-off} min}}"
33304
33395
  };
33305
33396
  const enUiSchedules = {
33306
33397
  "ui.schedules.count.hidden": "Show {hidden, plural, one {{hidden, number, ::group-off} more wake} other {{hidden, number, ::group-off} more wakes}}",
@@ -33499,8 +33590,8 @@ const enUiSettingsAccount = {
33499
33590
  "ui.settings.account.settings_page.tokens": "Tokens",
33500
33591
  "ui.settings.account.settings_usage_chart.credits_consumed": "Credits consumed",
33501
33592
  "ui.settings.account.settings_usage_chart.tokens_used": "Tokens used",
33502
- "ui.settings.account.settings_usage_chart.credits_summary": "Credits consumed over the last 30 days, plotted per day across {days, plural, one {# day} other {# days}}.",
33503
- "ui.settings.account.settings_usage_chart.tokens_summary": "Tokens used over the last 30 days, plotted per day across {days, plural, one {# day} other {# days}}.",
33593
+ "ui.settings.account.settings_usage_chart.credits_summary": "Credits consumed over the last 30 days, plotted per day across {days, plural, one {{days, number, ::group-off} day} other {{days, number, ::group-off} days}}.",
33594
+ "ui.settings.account.settings_usage_chart.tokens_summary": "Tokens used over the last 30 days, plotted per day across {days, plural, one {{days, number, ::group-off} day} other {{days, number, ::group-off} days}}.",
33504
33595
  "ui.settings.account.settings_page.credit_balance_load_failed": "Could not load your credit balance. {reason}",
33505
33596
  "ui.settings.account.settings_page.usage_load_failed": "Could not load your usage data. {reason}"
33506
33597
  };
@@ -33549,10 +33640,10 @@ const enUiSettingsConfiguration = {
33549
33640
  "ui.settings.configuration.language_dialog.the_language_could_not_be_saved": "The language could not be saved.",
33550
33641
  "ui.settings.configuration.language_dialog.your_settings_could_not_be_loaded": "Your settings could not be loaded.",
33551
33642
  "ui.settings.configuration.retention_duration.enter_a_whole_number_of_hours_or_days": "Enter a whole number of hours or days.",
33552
- "ui.settings.configuration.retention_duration.month_count": "{count, plural, one {# month} other {# months}}",
33553
- "ui.settings.configuration.retention_duration.day_count": "{count, plural, one {# day} other {# days}}",
33554
- "ui.settings.configuration.retention_duration.hour_count": "{count, plural, one {# hour} other {# hours}}",
33555
- "ui.settings.configuration.retention_duration.maximum_days": "{duration} ({days, plural, one {# day} other {# days}})",
33643
+ "ui.settings.configuration.retention_duration.month_count": "{count, plural, one {{count, number, ::group-off} month} other {{count, number, ::group-off} months}}",
33644
+ "ui.settings.configuration.retention_duration.day_count": "{count, plural, one {{count, number, ::group-off} day} other {{count, number, ::group-off} days}}",
33645
+ "ui.settings.configuration.retention_duration.hour_count": "{count, plural, one {{count, number, ::group-off} hour} other {{count, number, ::group-off} hours}}",
33646
+ "ui.settings.configuration.retention_duration.maximum_days": "{duration} ({days, plural, one {{days, number, ::group-off} day} other {{days, number, ::group-off} days}})",
33556
33647
  "ui.settings.configuration.retention_duration.range": "between {minimum} and {maximum}",
33557
33648
  "ui.settings.configuration.retention_duration.too_long": "{duration} is too long. Choose a time {range}.",
33558
33649
  "ui.settings.configuration.retention_duration.too_short": "{duration} is too short. Choose a time {range}.",
@@ -33585,11 +33676,11 @@ const enUiSettingsConfiguration = {
33585
33676
  "ui.settings.configuration.settings_filter_bar.collapse_all": "Collapse all",
33586
33677
  "ui.settings.configuration.settings_filter_bar.saving": "Saving",
33587
33678
  "ui.settings.configuration.settings_filter_bar.save_all": "Save all",
33588
- "ui.settings.configuration.settings_filter_bar.unsaved_count": "{count, plural, one {# unsaved change} other {# unsaved changes}}",
33589
- "ui.settings.configuration.settings_filter_bar.search_count": "{matchCount, plural, one {# result} other {# results}} in {sectionCount, plural, one {# section} other {# sections}}",
33590
- "ui.settings.configuration.settings_filter_bar.modified_count": "{count, plural, one {# modified setting} other {# modified settings}}",
33679
+ "ui.settings.configuration.settings_filter_bar.unsaved_count": "{count, plural, one {{count, number, ::group-off} unsaved change} other {{count, number, ::group-off} unsaved changes}}",
33680
+ "ui.settings.configuration.settings_filter_bar.search_count": "{matchCount, plural, one {{matchCount, number, ::group-off} result} other {{matchCount, number, ::group-off} results}} in {sectionCount, plural, one {{sectionCount, number, ::group-off} section} other {{sectionCount, number, ::group-off} sections}}",
33681
+ "ui.settings.configuration.settings_filter_bar.modified_count": "{count, plural, one {{count, number, ::group-off} modified setting} other {{count, number, ::group-off} modified settings}}",
33591
33682
  "ui.settings.configuration.settings_group_header.changed_from_the_default": "Changed from the default",
33592
- "ui.settings.configuration.settings_group_header.setting_count": "{count, plural, one {# setting} other {# settings}}",
33683
+ "ui.settings.configuration.settings_group_header.setting_count": "{count, plural, one {{count, number, ::group-off} setting} other {{count, number, ::group-off} settings}}",
33593
33684
  "ui.settings.configuration.settings_page.configuration_information": "Configuration information",
33594
33685
  "ui.settings.configuration.settings_page.system_information_about_the_current_configuration": "System information about the current configuration.",
33595
33686
  "ui.settings.configuration.settings_page.version": "Version",
@@ -33602,13 +33693,13 @@ const enUiSettingsConfiguration = {
33602
33693
  "ui.settings.configuration.delegated_retention_copy.kept": "Kept:",
33603
33694
  "ui.settings.configuration.delegated_retention_copy.when": "When:",
33604
33695
  "ui.settings.configuration.backend_setting_row.gate_note": "Needs {gate} on. Nothing here is saved while it is off.",
33605
- "ui.settings.configuration.backend_settings_section.show_advanced_count": "{count, plural, one {Show # advanced} other {Show # advanced}}",
33606
- "ui.settings.configuration.settings_group_header.advanced_count": "{count, plural, one {# advanced} other {# advanced}}",
33696
+ "ui.settings.configuration.backend_settings_section.show_advanced_count": "{count, plural, one {Show {count, number, ::group-off} advanced} other {Show {count, number, ::group-off} advanced}}",
33697
+ "ui.settings.configuration.settings_group_header.advanced_count": "{count, plural, one {{count, number, ::group-off} advanced} other {{count, number, ::group-off} advanced}}",
33607
33698
  "ui.settings.configuration.retention_duration_control.idle_window_status": "{duration} with no activity{isDefault, select, yes { (default)} other {}}",
33608
33699
  "ui.settings.configuration.retention_duration_control.use_duration": "Use {duration}",
33609
33700
  "ui.settings.configuration.retention_duration_control.duration_default": "{duration} (default)",
33610
- "ui.settings.configuration.settings_filter_bar.advanced_shown": "{count, plural, one {# advanced setting shown — Expand all to see it} other {# advanced settings shown — Expand all to see them}}",
33611
- "ui.settings.configuration.settings_filter_bar.core_and_advanced": "{coreCount, plural, one {# core setting} other {# core settings}}, {advancedCount, plural, one {# advanced} other {# advanced}}"
33701
+ "ui.settings.configuration.settings_filter_bar.advanced_shown": "{count, plural, one {{count, number, ::group-off} advanced setting shown — Expand all to see it} other {{count, number, ::group-off} advanced settings shown — Expand all to see them}}",
33702
+ "ui.settings.configuration.settings_filter_bar.core_and_advanced": "{coreCount, plural, one {{coreCount, number, ::group-off} core setting} other {{coreCount, number, ::group-off} core settings}}, {advancedCount, plural, one {{advancedCount, number, ::group-off} advanced} other {{advancedCount, number, ::group-off} advanced}}"
33612
33703
  };
33613
33704
  const enUiSettingsIntegrations = {
33614
33705
  "ui.settings.integrations.add_integration_form.add_integration": "Add integration",
@@ -33739,10 +33830,10 @@ const enUiSettingsIntegrations = {
33739
33830
  "ui.settings.integrations.integration_model.the_config_file_couldn_t_be_written_check_that_it_isn_t_read_only": "The config file couldn't be written. Check that it isn't read-only.",
33740
33831
  "ui.settings.integrations.integration_model.integrations_are_still_starting_try_again_in_a_moment": "Integrations are still starting. Try again in a moment.",
33741
33832
  "ui.settings.integrations.integration_model.the_server_refused_it_so_nothing_was_changed": "The server refused it, so nothing was changed.",
33742
- "ui.settings.integrations.integration_model.tool_count": "{count, plural, one {# tool} other {# tools}}",
33743
- "ui.settings.integrations.integration_model.integration_count": "{count, plural, one {# integration} other {# integrations}}",
33744
- "ui.settings.integrations.integration_model.minutes_min_ago": "{minutes, plural, one {# min ago} other {# min ago}}",
33745
- "ui.settings.integrations.integration_model.hours_h_ago": "{hours, plural, one {# h ago} other {# h ago}}",
33833
+ "ui.settings.integrations.integration_model.tool_count": "{count, plural, one {{count, number, ::group-off} tool} other {{count, number, ::group-off} tools}}",
33834
+ "ui.settings.integrations.integration_model.integration_count": "{count, plural, one {{count, number, ::group-off} integration} other {{count, number, ::group-off} integrations}}",
33835
+ "ui.settings.integrations.integration_model.minutes_min_ago": "{minutes, plural, one {{minutes, number, ::group-off} min ago} other {{minutes, number, ::group-off} min ago}}",
33836
+ "ui.settings.integrations.integration_model.hours_h_ago": "{hours, plural, one {{hours, number, ::group-off} h ago} other {{hours, number, ::group-off} h ago}}",
33746
33837
  "ui.settings.integrations.integration_model.imported_from_origin": "Imported from {origin}",
33747
33838
  "ui.settings.integrations.integration_model.remove_in_origin": "Remove in {origin}",
33748
33839
  "ui.settings.integrations.integration_model.defined_in_origin_s_config_remove_it_there": "Defined in {origin}'s config. Remove it there.",
@@ -33820,7 +33911,7 @@ const enUiSettingsIntegrations = {
33820
33911
  "ui.settings.integrations.integration_key_dialog.saving": "Saving…",
33821
33912
  "ui.settings.integrations.mcp_management_section.borrowed_chat_notice": "Showing the integrations for {chat}, your most recent chat.",
33822
33913
  "ui.settings.integrations.integration_sign_in_dialog.browser_approval_notice": "Local Operator opens your browser so you can approve access to {name}.{replaces, select, yes { This replaces the sign-in it has now.} other {}}",
33823
- "ui.settings.integrations.integration_model.days_ago": "{days, plural, one {# d ago} other {# d ago}}",
33914
+ "ui.settings.integrations.integration_model.days_ago": "{days, plural, one {{days, number, ::group-off} d ago} other {{days, number, ::group-off} d ago}}",
33824
33915
  "ui.settings.integrations.integration_model.connected_with_tools": "Connected · {tools}",
33825
33916
  "ui.settings.integrations.integration_model.worked_when_with_tools": "Worked {when} · {tools}",
33826
33917
  "ui.settings.integrations.integration_model.worked_earlier_with_tools": "Worked earlier · {tools}",
@@ -34076,16 +34167,16 @@ const frUiConsole = {
34076
34167
  "ui.console.unavailable.pty.detail": "La prise en charge des terminaux n’a pas été chargée pour cette exécution. Une mise à jour de Local Operator la rétablit ; le journal de l’application indique la cause.",
34077
34168
  "ui.console.unavailable.title": "La console est indisponible dans cette application",
34078
34169
  "ui.console.unavailable.unknown.detail": "Cette fenêtre n’a pas pu accéder à la console et n’a pas indiqué pourquoi. Le journal de l’application précise la cause.",
34079
- "ui.console.capacity.summary": "{live, number} sur {limit, number} actifs dans l’app",
34080
- "ui.console.capacity.summary_compact": "{live, number}/{limit, number} · {archived, plural, one {# gardé} many {# de gardés} other {# gardés}}",
34081
- "ui.console.capacity.summary_compact_bare": "{live, number}/{limit, number}",
34082
- "ui.console.capacity.archived": " · {archived, plural, one {# gardé} many {# de gardés} other {# gardés}}",
34170
+ "ui.console.capacity.summary": "{live, number, ::group-off} sur {limit, number, ::group-off} actifs dans l’app",
34171
+ "ui.console.capacity.summary_compact": "{live, number, ::group-off}/{limit, number, ::group-off} · {archived, plural, one {{archived, number, ::group-off} gardé} many {{archived, number, ::group-off} de gardés} other {{archived, number, ::group-off} gardés}}",
34172
+ "ui.console.capacity.summary_compact_bare": "{live, number, ::group-off}/{limit, number, ::group-off}",
34173
+ "ui.console.capacity.archived": " · {archived, plural, one {{archived, number, ::group-off} gardé} many {{archived, number, ::group-off} de gardés} other {{archived, number, ::group-off} gardés}}",
34083
34174
  "ui.console.capacity.full": " · plein",
34084
34175
  "ui.console.capacity.help": "Compteurs pour toute l’application, toutes conversations confondues. L’historique conservé n’occupe pas d’emplacement de processus.",
34085
- "ui.console.capacity.resources": "Stockage géré estimé : {memory, number} MiB. Journaux : {logs, number} MiB. Sortie en attente : {pending, number} MiB. Cellules de terminal : {cells, number}. Terminaux protégés : {protected, number}. La mémoire des processus enfants n’est pas incluse.",
34176
+ "ui.console.capacity.resources": "Stockage géré estimé : {memory, number, ::group-off} MiB. Journaux : {logs, number, ::group-off} MiB. Sortie en attente : {pending, number, ::group-off} MiB. Cellules de terminal : {cells, number, ::group-off}. Terminaux protégés : {protected, number, ::group-off}. La mémoire des processus enfants n’est pas incluse.",
34086
34177
  "ui.console.cleanup.label": "Effacer les terminaux d’agent terminés",
34087
34178
  "ui.console.cleanup.help": "Efface les terminaux d’agent terminés de cette conversation. Ceux que l’agent a demandé de conserver restent sur le disque ; les autres sont fermés et leur sortie n’est pas conservée. Les terminaux que vous avez ouverts, ainsi que ceux en cours d’utilisation, ne sont pas touchés.",
34088
- "ui.console.cleanup.result": "Effacé : {released, plural, one {# terminal d’agent terminé} many {# de terminaux d’agent terminés} other {# terminaux d’agent terminés}}. {protected, plural, =0 {} one {# terminal est encore utilisé et a été laissé ouvert.} many {# de terminaux sont encore utilisés et ont été laissés ouverts.} other {# terminaux sont encore utilisés et ont été laissés ouverts.}}",
34179
+ "ui.console.cleanup.result": "Effacé : {released, plural, one {{released, number, ::group-off} terminal d’agent terminé} many {{released, number, ::group-off} de terminaux d’agent terminés} other {{released, number, ::group-off} terminaux d’agent terminés}}. {protected, plural, =0 {} one {{protected, number, ::group-off} terminal est encore utilisé et a été laissé ouvert.} many {{protected, number, ::group-off} de terminaux sont encore utilisés et ont été laissés ouverts.} other {{protected, number, ::group-off} terminaux sont encore utilisés et ont été laissés ouverts.}}",
34089
34180
  "ui.console.cleanup.result_none": "Rien à effacer — aucun terminal d’agent terminé dans cette conversation.",
34090
34181
  "ui.console.dismiss_history": "Effacer le terminal et supprimer la sortie conservée",
34091
34182
  "ui.console.dismiss.body": "Effacer ce terminal supprime sa sortie conservée sur le disque ; une relance ne pourra pas la restaurer.",
@@ -34094,9 +34185,9 @@ const frUiConsole = {
34094
34185
  "ui.console.tab.ended": "terminé",
34095
34186
  "ui.console.tab.agent_opened": "Un agent a ouvert cette console",
34096
34187
  "ui.console.tab.agent_typed": "Un agent a saisi du texte dans cette console",
34097
- "ui.console.tab.close_label": "Fermer {title}, onglet {index, number} sur {total, number}",
34098
- "ui.console.tab.clear_label": "Effacer {title}, onglet {index, number} sur {total, number}",
34099
- "ui.console.tab.clear_label_retained": "Effacer {title}, onglet {index, number} sur {total, number} — supprime la sortie conservée",
34188
+ "ui.console.tab.close_label": "Fermer {title}, onglet {index, number, ::group-off} sur {total, number, ::group-off}",
34189
+ "ui.console.tab.clear_label": "Effacer {title}, onglet {index, number, ::group-off} sur {total, number, ::group-off}",
34190
+ "ui.console.tab.clear_label_retained": "Effacer {title}, onglet {index, number, ::group-off} sur {total, number, ::group-off} — supprime la sortie conservée",
34100
34191
  "ui.console.secure_toggle.stop": "Arrêter la saisie sécurisée",
34101
34192
  "ui.console.secure_toggle.start": "Saisie sécurisée",
34102
34193
  "ui.console.secure_toggle.start_tooltip": "Saisie sécurisée : arrêter l’enregistrement de ce terminal",
@@ -34150,8 +34241,8 @@ const frUiOnboarding = {
34150
34241
  "ui.onboarding.search.row.save_failed": "La clé n’a pas pu être enregistrée.",
34151
34242
  "ui.onboarding.search.row.saved": "Enregistré",
34152
34243
  "ui.onboarding.search.row.saving": "Enregistrement : {name}",
34153
- "ui.onboarding.modal.step_of": "Étape {current, number} sur {total, number}",
34154
- "ui.onboarding.modal.steps_total": "{total, plural, one {# étape} many {# d’étapes} other {# étapes}}"
34244
+ "ui.onboarding.modal.step_of": "Étape {current, number, ::group-off} sur {total, number, ::group-off}",
34245
+ "ui.onboarding.modal.steps_total": "{total, plural, one {{total, number, ::group-off} étape} many {{total, number, ::group-off} d’étapes} other {{total, number, ::group-off} étapes}}"
34155
34246
  };
34156
34247
  const frUiSettings = {
34157
34248
  "ui.settings.language.dialog.description": "S’applique à l’application et au terminal — le même réglage que dans les paramètres.",
@@ -34197,6 +34288,7 @@ const frUiSettings = {
34197
34288
  const bundledEnglish = {
34198
34289
  ...enUiAgentsDialogs,
34199
34290
  ...enUiAgents,
34291
+ ...enUiAgentsModels,
34200
34292
  ...enUiAgentsNavigation,
34201
34293
  ...enUiAgentsRefusals,
34202
34294
  ...enUiAgentsSettings,
@@ -116,6 +116,16 @@ const CHECKPOINT_WARM_MAX_IDS = 16;
116
116
  const THREAD_FIND_MAX_CHARS = 256;
117
117
  const THREAD_FIND_MAX_LIMIT = 200;
118
118
  const DESKTOP_SYSTEM_PROMPT_MAX_CHARS = 1e6;
119
+ const memberEffort = zod.z.enum([
120
+ "auto",
121
+ "none",
122
+ "minimal",
123
+ "low",
124
+ "medium",
125
+ "high",
126
+ "xhigh",
127
+ "max"
128
+ ]);
119
129
  const profileName = zod.z.string().min(1).max(128).refine(
120
130
  (name) => name !== "." && name !== ".." && !name.includes("/") && !name.includes("\\") && [...name].every(
121
131
  (character) => character.charCodeAt(0) >= 32 && character.charCodeAt(0) !== 127
@@ -153,7 +163,23 @@ const teamFields = zod.z.object({
153
163
  zod.z.object({
154
164
  role: profileName,
155
165
  count: zod.z.number().int().min(1).max(16),
156
- kind: zod.z.enum(["agent", "team"])
166
+ kind: zod.z.enum(["agent", "team"]),
167
+ /*
168
+ * THE SLOT'S MODEL OVERRIDES (team member tiers, P3). `null` and
169
+ * absent mean the same thing on this wire - no override, fall
170
+ * through to the next layer - and the pair is spelled with the SAME
171
+ * words the backend's `TeamMember` accepts (`CANONICAL_EFFORT_TIERS`
172
+ * and `TIER_EFFORTS`), so a value this client can send cannot be one
173
+ * the server refuses. `null` is accepted rather than omitted alone
174
+ * because a cleared field is what a form has in hand.
175
+ *
176
+ * Enumerated rather than free text for the reason the tier list is:
177
+ * this client is not the only writer (the team tool, a hand-edited
178
+ * `team.yml`), and a membership gate here is what keeps a typo out of
179
+ * a roster that would otherwise be silently written and ignored.
180
+ */
181
+ tier: zod.z.enum(["lo", "med", "hi"]).nullable().optional(),
182
+ effort: memberEffort.nullable().optional()
157
183
  }).strict()
158
184
  ).max(128).optional(),
159
185
  instructions: zod.z.string().max(8e3).optional(),
@@ -481,6 +507,19 @@ const desktopRequestUnion = zod.z.discriminatedUnion("op", [
481
507
  }).strict(),
482
508
  zod.z.object({ op: zod.z.literal("teams.list") }).strict(),
483
509
  zod.z.object({ op: zod.z.literal("teams.get"), name: profileName }).strict(),
510
+ /*
511
+ * THE RESOLVED READING of every slot's model and reasoning effort, with the
512
+ * layer each came from - the team editor's answer to "why is this member on
513
+ * that model". A READ: it resolves the same precedence a launch does without
514
+ * launching anything and writes nothing.
515
+ *
516
+ * ADDITIVE, and its absence is a capability signal rather than an error: a
517
+ * backend older than the route answers 404, which is how the editor learns to
518
+ * hide its override controls (the same status `backendErrorKind` classifies as
519
+ * `outdated`). Such a server also ignores the member keys above, which is why
520
+ * the hidden editor is the honest reading rather than a lost edit.
521
+ */
522
+ zod.z.object({ op: zod.z.literal("teams.effective"), name: profileName }).strict(),
484
523
  /*
485
524
  * Team CAS is the same optional opaque echo as the profile arm: absent/null is
486
525
  * the legacy unconditional write, a supplied stale/malformed value is refused
@@ -2565,6 +2604,12 @@ desktopRequestUnion.superRefine(
2565
2604
  }
2566
2605
  }
2567
2606
  );
2607
+ zod.z.object({
2608
+ data: zod.z.object({
2609
+ aside_id: zod.z.string().optional(),
2610
+ status: zod.z.union([zod.z.enum(["adopted", "queued"]), zod.z.string()]).optional()
2611
+ }).passthrough()
2612
+ }).passthrough();
2568
2613
  zod.z.object({
2569
2614
  step: zod.z.string(),
2570
2615
  blocked_on: zod.z.string(),
@@ -1 +1 @@
1
- import{e as o,c as b,g as v,k as O,h as P,j as p,l as w,m as A,n as x,t as c,o as N}from"./_baseUniq-CN5nbj15.js";import{as as g,aa as y,at as E,au as F,av as M,aw as I,ax as _,ay as $,az as B,aA as T}from"./mermaid.core-BqK7XNWH.js";var S=/\s/;function z(n){for(var r=n.length;r--&&S.test(n.charAt(r)););return r}var G=/^\s+/;function H(n){return n&&n.slice(0,z(n)+1).replace(G,"")}var m=NaN,L=/^[-+]0x[0-9a-f]+$/i,R=/^0b[01]+$/i,q=/^0o[0-7]+$/i,C=parseInt;function K(n){if(typeof n=="number")return n;if(o(n))return m;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=H(n);var t=R.test(n);return t||q.test(n)?C(n.slice(2),t?2:8):L.test(n)?m:+n}var W=1/0,X=17976931348623157e292;function Y(n){if(!n)return n===0?n:0;if(n=K(n),n===W||n===-1/0){var r=n<0?-1:1;return r*X}return n===n?n:0}function D(n){var r=Y(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?b(n):[]}var l=Object.prototype,J=l.hasOwnProperty,dn=y(function(n,r){n=Object(n);var t=-1,e=r.length,a=e>2?r[2]:void 0;for(a&&E(r[0],r[1],a)&&(e=1);++t<e;)for(var f=r[t],i=F(f),s=-1,d=i.length;++s<d;){var u=i[s],h=n[u];(h===void 0||M(h,l[u])&&!J.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function Q(n){return function(r,t,e){var a=Object(r);if(!I(r)){var f=v(t);r=O(r),t=function(s){return f(a[s],s,a)}}var i=n(r,t,e);return i>-1?a[f?r[i]:i]:void 0}}var U=Math.max;function Z(n,r,t){var e=n==null?0:n.length;if(!e)return-1;var a=t==null?0:D(t);return a<0&&(a=U(e+a,0)),P(n,v(r),a)}var hn=Q(Z);function V(n,r){var t=-1,e=I(n)?Array(n.length):[];return p(n,function(a,f,i){e[++t]=r(a,f,i)}),e}function gn(n,r){var t=_(n)?w:V;return t(n,v(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function vn(n,r){return n!=null&&A(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var e=-1,a=n.length;++e<a;){var f=n[e],i=r(f);if(i!=null&&(s===void 0?i===i&&!o(i):t(i,s)))var s=i,d=f}return d}function mn(n){return n&&n.length?tn(n,$,rn):void 0}function an(n,r,t,e){if(!g(n))return n;r=x(r,n);for(var a=-1,f=r.length,i=f-1,s=n;s!=null&&++a<f;){var d=c(r[a]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(a!=i){var h=s[d];u=void 0,u===void 0&&(u=g(h)?h:B(r[a+1])?[]:{})}T(s,d,u),s=s[d]}return n}function on(n,r,t){for(var e=-1,a=r.length,f={};++e<a;){var i=r[e],s=N(n,i);t(s,i)&&an(f,x(i,n),s)}return f}export{rn as a,tn as b,V as c,on as d,mn as e,fn as f,hn as g,vn as h,dn as i,D as j,un as l,gn as m,Y as t};
1
+ import{e as o,c as b,g as v,k as O,h as P,j as p,l as w,m as A,n as x,t as c,o as N}from"./_baseUniq-ClgJBEui.js";import{as as g,aa as y,at as E,au as F,av as M,aw as I,ax as _,ay as $,az as B,aA as T}from"./mermaid.core-DwfN45qZ.js";var S=/\s/;function z(n){for(var r=n.length;r--&&S.test(n.charAt(r)););return r}var G=/^\s+/;function H(n){return n&&n.slice(0,z(n)+1).replace(G,"")}var m=NaN,L=/^[-+]0x[0-9a-f]+$/i,R=/^0b[01]+$/i,q=/^0o[0-7]+$/i,C=parseInt;function K(n){if(typeof n=="number")return n;if(o(n))return m;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=H(n);var t=R.test(n);return t||q.test(n)?C(n.slice(2),t?2:8):L.test(n)?m:+n}var W=1/0,X=17976931348623157e292;function Y(n){if(!n)return n===0?n:0;if(n=K(n),n===W||n===-1/0){var r=n<0?-1:1;return r*X}return n===n?n:0}function D(n){var r=Y(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?b(n):[]}var l=Object.prototype,J=l.hasOwnProperty,dn=y(function(n,r){n=Object(n);var t=-1,e=r.length,a=e>2?r[2]:void 0;for(a&&E(r[0],r[1],a)&&(e=1);++t<e;)for(var f=r[t],i=F(f),s=-1,d=i.length;++s<d;){var u=i[s],h=n[u];(h===void 0||M(h,l[u])&&!J.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function Q(n){return function(r,t,e){var a=Object(r);if(!I(r)){var f=v(t);r=O(r),t=function(s){return f(a[s],s,a)}}var i=n(r,t,e);return i>-1?a[f?r[i]:i]:void 0}}var U=Math.max;function Z(n,r,t){var e=n==null?0:n.length;if(!e)return-1;var a=t==null?0:D(t);return a<0&&(a=U(e+a,0)),P(n,v(r),a)}var hn=Q(Z);function V(n,r){var t=-1,e=I(n)?Array(n.length):[];return p(n,function(a,f,i){e[++t]=r(a,f,i)}),e}function gn(n,r){var t=_(n)?w:V;return t(n,v(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function vn(n,r){return n!=null&&A(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var e=-1,a=n.length;++e<a;){var f=n[e],i=r(f);if(i!=null&&(s===void 0?i===i&&!o(i):t(i,s)))var s=i,d=f}return d}function mn(n){return n&&n.length?tn(n,$,rn):void 0}function an(n,r,t,e){if(!g(n))return n;r=x(r,n);for(var a=-1,f=r.length,i=f-1,s=n;s!=null&&++a<f;){var d=c(r[a]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(a!=i){var h=s[d];u=void 0,u===void 0&&(u=g(h)?h:B(r[a+1])?[]:{})}T(s,d,u),s=s[d]}return n}function on(n,r,t){for(var e=-1,a=r.length,f={};++e<a;){var i=r[e],s=N(n,i);t(s,i)&&an(f,x(i,n),s)}return f}export{rn as a,tn as b,V as c,on as d,mn as e,fn as f,hn as g,vn as h,dn as i,D as j,un as l,gn as m,Y as t};