local-operator-ui 0.34.48 → 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.
- package/out/main/index.js +2380 -76
- package/out/preload/index.js +47 -1
- package/out/renderer/assets/{_basePickBy-4PhBKMwz.js → _basePickBy-CSwEaqGH.js} +1 -1
- package/out/renderer/assets/{_baseUniq-DpFJNrpb.js → _baseUniq-ClgJBEui.js} +1 -1
- package/out/renderer/assets/agent-details-page-v9g-0tfN.js +6 -0
- package/out/renderer/assets/agent-hub-page-i9l6Uv6w.js +11 -0
- package/out/renderer/assets/agents-page-BEY9jzic.js +7 -0
- package/out/renderer/assets/{arc-DkuXQZT0.js → arc-Bp2vhvT8.js} +1 -1
- package/out/renderer/assets/architectureDiagram-IEHRJDOE-mnxRnj85.js +36 -0
- package/out/renderer/assets/{blockDiagram-JOT3LUYC-2iLLg_nw.js → blockDiagram-JOT3LUYC-Cy0bUbS1.js} +1 -1
- package/out/renderer/assets/{book-open-CTi9TDfn.js → book-open-CwvcZLaU.js} +1 -1
- package/out/renderer/assets/browser-page-ffFPxvmW.js +1 -0
- package/out/renderer/assets/browser-webauthn-prompt-CVfiiYOR.js +1 -0
- package/out/renderer/assets/{c4Diagram-VJAJSXHY-SvCGL91g.js → c4Diagram-VJAJSXHY-BLgwrX8R.js} +1 -1
- package/out/renderer/assets/channel-H9kkayno.js +1 -0
- package/out/renderer/assets/{chunk-4BMEZGHF-CzVlqRCP.js → chunk-4BMEZGHF-BKbXn5lz.js} +1 -1
- package/out/renderer/assets/{chunk-A2AXSNBT-DqhEqW0h.js → chunk-A2AXSNBT-huAEN9rv.js} +1 -1
- package/out/renderer/assets/{chunk-AEK57VVT-BEa7M8E9.js → chunk-AEK57VVT-CLlndZHa.js} +1 -1
- package/out/renderer/assets/{chunk-D6G4REZN-4tI3iHrd.js → chunk-D6G4REZN-BQoQzkpH.js} +1 -1
- package/out/renderer/assets/{chunk-RZ5BOZE2-BSTylGcM.js → chunk-RZ5BOZE2-BS-67Htk.js} +1 -1
- package/out/renderer/assets/{chunk-XZIHB7SX-BWyzWCnC.js → chunk-XZIHB7SX-B413LPHS.js} +1 -1
- package/out/renderer/assets/classDiagram-GIVACNV2-CBQ7Tucl.js +1 -0
- package/out/renderer/assets/classDiagram-v2-COTLJTTW-CBQ7Tucl.js +1 -0
- package/out/renderer/assets/clone-D41kSeCw.js +1 -0
- package/out/renderer/assets/{console-mirror-CxkpeCdB.js → console-mirror-atIrzrKQ.js} +2 -2
- package/out/renderer/assets/consoleCapture-qbkQDsbk.js +1 -0
- package/out/renderer/assets/{conversation-input-sync-DFpqmO4l.js → conversation-input-sync-B0j1FBwv.js} +257 -257
- package/out/renderer/assets/dagre-OKDRZEBW-fZfOS2dk.js +4 -0
- package/out/renderer/assets/diagram-SSKATNLV-alPaSAsa.js +43 -0
- package/out/renderer/assets/diagram-VNBRO52H-12nwGS_H.js +24 -0
- package/out/renderer/assets/en-US-CHJkXXr4.js +1 -0
- package/out/renderer/assets/{erDiagram-Q7BY3M3F-D1W_lttQ.js → erDiagram-Q7BY3M3F-C0VQmN1m.js} +1 -1
- package/out/renderer/assets/error-boundary-C0P2AR1t.js +126 -0
- package/out/renderer/assets/{flowDiagram-4HSFHLVR-3Jb09NsW.js → flowDiagram-4HSFHLVR-yAA_68VC.js} +1 -1
- package/out/renderer/assets/{format-CZUObkkr.js → format-esAOn2VS.js} +1 -1
- package/out/renderer/assets/{ganttDiagram-APWFNJXF-BuFcOiO1.js → ganttDiagram-APWFNJXF-Cbk4f_uq.js} +1 -1
- package/out/renderer/assets/gitGraphDiagram-7IBYFJ6S-C9o_Zz5H.js +65 -0
- package/out/renderer/assets/{graph-D8Y4lmRI.js → graph-DUT-8BVr.js} +1 -1
- package/out/renderer/assets/index-B0uYixKz.js +1 -0
- package/out/renderer/assets/index-CNvQ9FNg.js +57 -0
- package/out/renderer/assets/index-Cun5ZiJ8.js +7 -0
- package/out/renderer/assets/index-D-RvJY1X.css +1 -0
- package/out/renderer/assets/index-lYsxfVy0.js +809 -0
- package/out/renderer/assets/infoDiagram-PH2N3AL5-C4KvWN4_.js +2 -0
- package/out/renderer/assets/installer-CraQMM0S.js +1 -0
- package/out/renderer/assets/{journeyDiagram-U35MCT3I-BWLCHSce.js → journeyDiagram-U35MCT3I-ClDn4ZZ_.js} +1 -1
- package/out/renderer/assets/{kanban-definition-NDS4AKOZ-D7-FbJp3.js → kanban-definition-NDS4AKOZ-DkZ2IqSy.js} +1 -1
- package/out/renderer/assets/{layout-DogvO2Ky.js → layout-B2ULRxc7.js} +1 -1
- package/out/renderer/assets/legacy-agents-page-BHmNHE9c.js +33 -0
- package/out/renderer/assets/{mermaid.core-CdeoM9AZ.js → mermaid.core-DwfN45qZ.js} +5 -5
- package/out/renderer/assets/mesh-page-BTaA4LA9.js +1 -0
- package/out/renderer/assets/mindmap-definition-ALO5MXBD-BaruaCsh.js +95 -0
- package/out/renderer/assets/mini-y-vZHWd4.js +1 -0
- package/out/renderer/assets/{notebook-pen-D7t7mRlh.js → notebook-pen-Bufwjei-.js} +1 -1
- package/out/renderer/assets/org-access-BHVNNfiF.js +1 -0
- package/out/renderer/assets/{org-surface-gate-n0a6WDBY.js → org-surface-gate-Bu2ppyy0.js} +1 -1
- package/out/renderer/assets/{page-header-CJAvj3rs.js → page-header-CzdhP1vT.js} +1 -1
- package/out/renderer/assets/{parseISO-CZfAC2_J.js → parseISO-BHJWTxrA.js} +1 -1
- package/out/renderer/assets/{pieDiagram-IB7DONF6-B22hqaTH.js → pieDiagram-IB7DONF6-D6b-IA5_.js} +1 -1
- package/out/renderer/assets/{projects-page-Dg-fywlg.js → projects-page-B2p6409_.js} +14 -14
- package/out/renderer/assets/publication-validation-DV7MFEnt.js +1 -0
- package/out/renderer/assets/{quadrantDiagram-7GDLP6J5-DJXJe1Jf.js → quadrantDiagram-7GDLP6J5-BohSnqJt.js} +1 -1
- package/out/renderer/assets/{radar-MK3ICKWK-COD-ZwKJ.js → radar-MK3ICKWK-B8IyfRFK.js} +1 -1
- package/out/renderer/assets/radient-auth-buttons-CeAmJxoU.js +1 -0
- package/out/renderer/assets/{requirementDiagram-KVF5MWMF-Cg7p0tZp.js → requirementDiagram-KVF5MWMF-CjxwfVmm.js} +1 -1
- package/out/renderer/assets/sankeyDiagram-QLVOVGJD-Dmb58RjS.js +10 -0
- package/out/renderer/assets/schedules-page-Dujbkmf1.js +115 -0
- package/out/renderer/assets/{sequenceDiagram-X6HHIX6F-B2P7CUDU.js → sequenceDiagram-X6HHIX6F-H7CVraeF.js} +1 -1
- package/out/renderer/assets/settings-page-tA2lkM1h.js +292 -0
- package/out/renderer/assets/stateDiagram-DGXRK772-DJN0Rf3F.js +1 -0
- package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-DTfdA0h1.js +1 -0
- package/out/renderer/assets/{timeline-definition-BDJGKUSR-CbnWjiR-.js → timeline-definition-BDJGKUSR-0g8a7xFr.js} +1 -1
- package/out/renderer/assets/ui-preferences-store-B92Xh3eA.js +1 -0
- package/out/renderer/assets/use-download-agent-mutation-Doz1TzJr.js +61 -0
- package/out/renderer/assets/{use-memberships-query-DR_Lujnw.js → use-memberships-query-CjMpjmh2.js} +1 -1
- package/out/renderer/assets/{use-session-snapshot-DKL97J-r.js → use-session-snapshot-CoJrqYcV.js} +1 -1
- package/out/renderer/assets/{xychartDiagram-VJFVF3MP-Cq_N4nhd.js → xychartDiagram-VJFVF3MP-Cn4PWpai.js} +1 -1
- package/out/renderer/console-capture.html +5 -5
- package/out/renderer/index.html +7 -7
- package/out/renderer/installer.html +4 -4
- package/out/renderer/mini.html +7 -7
- package/package.json +3 -5
- package/out/renderer/assets/agent-details-page-Ci1JjvpV.js +0 -6
- package/out/renderer/assets/agent-hub-page-NtBm1phk.js +0 -11
- package/out/renderer/assets/agents-page-YFjN8oZC.js +0 -7
- package/out/renderer/assets/architectureDiagram-IEHRJDOE-DWa4IuFf.js +0 -36
- package/out/renderer/assets/browser-page-DEUUMy_g.js +0 -1
- package/out/renderer/assets/browser-webauthn-prompt-AacQARJZ.js +0 -1
- package/out/renderer/assets/channel-CRKSwn0G.js +0 -1
- package/out/renderer/assets/classDiagram-GIVACNV2-BxJWvaym.js +0 -1
- package/out/renderer/assets/classDiagram-v2-COTLJTTW-BxJWvaym.js +0 -1
- package/out/renderer/assets/clone-BCVTFSZA.js +0 -1
- package/out/renderer/assets/consoleCapture-C9FjfQJX.js +0 -1
- package/out/renderer/assets/dagre-OKDRZEBW-Bro14G70.js +0 -4
- package/out/renderer/assets/diagram-SSKATNLV-DxML5WmE.js +0 -43
- package/out/renderer/assets/diagram-VNBRO52H-C1VKCLuH.js +0 -24
- package/out/renderer/assets/en-US-BcB1DWxG.js +0 -1
- package/out/renderer/assets/error-boundary-C6UV5tx-.js +0 -126
- package/out/renderer/assets/gitGraphDiagram-7IBYFJ6S-BbZdk2nO.js +0 -65
- package/out/renderer/assets/index-B8qxAfMF.js +0 -55
- package/out/renderer/assets/index-D3f_KfVo.css +0 -1
- package/out/renderer/assets/index-D7GWaNpY.js +0 -809
- package/out/renderer/assets/index-Dhq36hI2.js +0 -7
- package/out/renderer/assets/index-Hr50KutK.js +0 -1
- package/out/renderer/assets/infoDiagram-PH2N3AL5-BVHpnvtw.js +0 -2
- package/out/renderer/assets/installer-B8s-TXTU.js +0 -1
- package/out/renderer/assets/legacy-agents-page-Dlp--Xt6.js +0 -33
- package/out/renderer/assets/mesh-page-BzfNUAkq.js +0 -1
- package/out/renderer/assets/messages-CZNg7vOE.js +0 -3
- package/out/renderer/assets/mindmap-definition-ALO5MXBD-CfocVEGs.js +0 -95
- package/out/renderer/assets/mini-D-rHRr3X.js +0 -1
- package/out/renderer/assets/org-access-BIipdCDk.js +0 -1
- package/out/renderer/assets/publication-validation-mYDoNagz.js +0 -1
- package/out/renderer/assets/radient-auth-buttons-BJmqjZos.js +0 -1
- package/out/renderer/assets/sankeyDiagram-QLVOVGJD-Qir1GlwB.js +0 -10
- package/out/renderer/assets/schedules-page-CtMNJr6J.js +0 -115
- package/out/renderer/assets/settings-page-CFbI2wWy.js +0 -292
- package/out/renderer/assets/stateDiagram-DGXRK772-CGQsk3sX.js +0 -1
- package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-CpHmsYwj.js +0 -1
- package/out/renderer/assets/use-download-agent-mutation-C7H5xbvf.js +0 -61
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",
|
|
@@ -28347,6 +28398,9 @@ class ApprovalStore {
|
|
|
28347
28398
|
);
|
|
28348
28399
|
}
|
|
28349
28400
|
}
|
|
28401
|
+
function browserChromeOwnsChord(facts) {
|
|
28402
|
+
return facts.logicalFocus && facts.chromeVisible && !facts.window.isDestroyed() && facts.window.isVisible() && facts.window.isFocused();
|
|
28403
|
+
}
|
|
28350
28404
|
function runBrowserMenuAction(intent, target2, owner, route) {
|
|
28351
28405
|
if (!target2) return;
|
|
28352
28406
|
if (target2 === owner && route(intent)) return;
|
|
@@ -28368,23 +28422,31 @@ function createBrowserChordRouter(options) {
|
|
|
28368
28422
|
options.send({ intent, origin });
|
|
28369
28423
|
}
|
|
28370
28424
|
}
|
|
28371
|
-
|
|
28372
|
-
|
|
28373
|
-
|
|
28374
|
-
|
|
28375
|
-
|
|
28376
|
-
|
|
28377
|
-
|
|
28378
|
-
|
|
28379
|
-
|
|
28380
|
-
|
|
28381
|
-
return true;
|
|
28382
|
-
}
|
|
28383
|
-
return false;
|
|
28425
|
+
function routeInput(event, input, origin, owns) {
|
|
28426
|
+
const intent = owns ? browserChordIntent(input, options.platform) : null;
|
|
28427
|
+
if (!intent) {
|
|
28428
|
+
const rejected = owns && input.type === "keyDown" && (input.isAutoRepeat || input.isComposing) && browserChordIntent(
|
|
28429
|
+
{ ...input, isAutoRepeat: false, isComposing: false },
|
|
28430
|
+
options.platform
|
|
28431
|
+
);
|
|
28432
|
+
if (rejected) {
|
|
28433
|
+
event.preventDefault();
|
|
28434
|
+
return true;
|
|
28384
28435
|
}
|
|
28385
|
-
|
|
28386
|
-
|
|
28387
|
-
|
|
28436
|
+
return false;
|
|
28437
|
+
}
|
|
28438
|
+
event.preventDefault();
|
|
28439
|
+
dispatch(intent, origin);
|
|
28440
|
+
return true;
|
|
28441
|
+
}
|
|
28442
|
+
return {
|
|
28443
|
+
input: routeInput,
|
|
28444
|
+
// Both main chrome doors must derive authorization HERE. An earlier app
|
|
28445
|
+
// zoom listener used the retained raw logical flag, bypassing native
|
|
28446
|
+
// visibility/focus checks before the later guarded listener ran (R1).
|
|
28447
|
+
// Keep rejected-repeat/IME consumption unchanged in the shared handler.
|
|
28448
|
+
chromeInput(event, input) {
|
|
28449
|
+
return routeInput(event, input, "chrome", options.ownsChrome());
|
|
28388
28450
|
},
|
|
28389
28451
|
menu(intent) {
|
|
28390
28452
|
const page = options.ownsPage();
|
|
@@ -31643,7 +31705,212 @@ var IntlMessageFormat = class IntlMessageFormat2 {
|
|
|
31643
31705
|
};
|
|
31644
31706
|
}
|
|
31645
31707
|
};
|
|
31708
|
+
const enUiAgentsDialogs = {
|
|
31709
|
+
"ui.agents.dialogs.create.title": "Create new agent",
|
|
31710
|
+
"ui.agents.dialogs.create.cancel": "Cancel",
|
|
31711
|
+
"ui.agents.dialogs.create.submit": "Create agent",
|
|
31712
|
+
"ui.agents.dialogs.create.intro": "Configure your new AI assistant with a name and optional description",
|
|
31713
|
+
"ui.agents.dialogs.create.hub_link": "Browse Agent hub to fetch ready-made agents",
|
|
31714
|
+
"ui.agents.dialogs.create.name_label": "Agent name",
|
|
31715
|
+
"ui.agents.dialogs.create.name_hint": "Enter a name for your agent",
|
|
31716
|
+
"ui.agents.dialogs.create.description_label": "Description (optional)",
|
|
31717
|
+
"ui.agents.dialogs.create.description_hint": "Describe what this agent does",
|
|
31718
|
+
"ui.agents.dialogs.menu.accessible": "agent options",
|
|
31719
|
+
"ui.agents.dialogs.menu.chat": "Chat with agent",
|
|
31720
|
+
"ui.agents.dialogs.menu.settings": "View agent settings",
|
|
31721
|
+
"ui.agents.dialogs.menu.export": "Export agent",
|
|
31722
|
+
"ui.agents.dialogs.menu.upload": "Upload to hub",
|
|
31723
|
+
"ui.agents.dialogs.menu.clear": "Clear conversation",
|
|
31724
|
+
"ui.agents.dialogs.menu.delete": "Delete agent",
|
|
31725
|
+
"ui.agents.dialogs.delete.title": "Delete agent",
|
|
31726
|
+
"ui.agents.dialogs.delete.warning": "This action cannot be undone. All conversations with this agent will be permanently deleted.",
|
|
31727
|
+
"ui.agents.dialogs.delete.confirm": "Delete",
|
|
31728
|
+
"ui.agents.dialogs.delete.cancel": "Cancel",
|
|
31729
|
+
"ui.agents.dialogs.clear.title": "Clear this conversation?",
|
|
31730
|
+
"ui.agents.dialogs.clear.warning": "Every message in it is deleted from this computer, and there is no undo. The agent itself is not affected.",
|
|
31731
|
+
"ui.agents.dialogs.clear.confirm": "Clear",
|
|
31732
|
+
"ui.agents.dialogs.clear.cancel": "Cancel",
|
|
31733
|
+
"ui.agents.dialogs.import.title": "Import agent",
|
|
31734
|
+
"ui.agents.dialogs.import.cancel": "Cancel",
|
|
31735
|
+
"ui.agents.dialogs.import.submit": "Import agent",
|
|
31736
|
+
"ui.agents.dialogs.import.intro": "Import an agent from a ZIP file exported from Local Operator. The file should contain an agent.yml file.",
|
|
31737
|
+
"ui.agents.dialogs.import.replace_file": "Click or drag to replace",
|
|
31738
|
+
"ui.agents.dialogs.import.drop_file": "Drag and drop a ZIP file here",
|
|
31739
|
+
"ui.agents.dialogs.import.choose_file": "or click to select a file",
|
|
31740
|
+
"ui.agents.dialogs.delete.question": 'Are you sure you want to delete the agent "{name}"?',
|
|
31741
|
+
"ui.agents.dialogs.import.invalid_zip": "Only ZIP files are supported"
|
|
31742
|
+
};
|
|
31646
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
|
+
};
|
|
31784
|
+
const enUiAgentsNavigation = {
|
|
31785
|
+
"ui.agents.navigation.updates.preview.empty": "No differences to show: the hub's version matches yours.",
|
|
31786
|
+
"ui.agents.navigation.updates.preview.local": "Yours",
|
|
31787
|
+
"ui.agents.navigation.updates.preview.remote": "The hub's",
|
|
31788
|
+
"ui.agents.navigation.updates.accessible": "Hub update",
|
|
31789
|
+
"ui.agents.navigation.updates.baseline_unknown": "Nothing records what you changed on this device. Either choice adds the hub's additions and deletes nothing of yours; where the two versions differ, your choice decides which wording stays.",
|
|
31790
|
+
"ui.agents.navigation.updates.merge_guidance": "Where the two versions differ, your choice decides which wording stays. Everything else is merged, and your current version is saved as a backup first.",
|
|
31791
|
+
"ui.agents.navigation.updates.action.updating": "Updating…",
|
|
31792
|
+
"ui.agents.navigation.updates.action.update": "Update from the hub",
|
|
31793
|
+
"ui.agents.navigation.updates.action.retrying": "Retrying…",
|
|
31794
|
+
"ui.agents.navigation.updates.action.retry": "Retry",
|
|
31795
|
+
"ui.agents.navigation.updates.action.loading": "Loading…",
|
|
31796
|
+
"ui.agents.navigation.updates.action.preview": "Preview the differences",
|
|
31797
|
+
"ui.agents.navigation.updates.action.keep_local": "Keep mine where they differ",
|
|
31798
|
+
"ui.agents.navigation.updates.action.use_remote": "Use the hub's where they differ",
|
|
31799
|
+
"ui.agents.navigation.sidebar.options": "Agent options",
|
|
31800
|
+
"ui.agents.navigation.sidebar.title": "Agents",
|
|
31801
|
+
"ui.agents.navigation.sidebar.loading": "Loading agents",
|
|
31802
|
+
"ui.agents.navigation.sidebar.error": "Failed to load agents. Please try again.",
|
|
31803
|
+
"ui.agents.navigation.sidebar.retry": "Retry",
|
|
31804
|
+
"ui.agents.navigation.sidebar.search_empty": "No agents match your search",
|
|
31805
|
+
"ui.agents.navigation.sidebar.empty": "No agents found",
|
|
31806
|
+
"ui.agents.navigation.legacy.title": "Agent management",
|
|
31807
|
+
"ui.agents.navigation.legacy.more_actions": "More agent actions",
|
|
31808
|
+
"ui.agents.navigation.legacy.export": "Export",
|
|
31809
|
+
"ui.agents.navigation.legacy.upload": "Upload to hub",
|
|
31810
|
+
"ui.agents.navigation.legacy.chat": "Chat",
|
|
31811
|
+
"ui.agents.navigation.updates.preview.nothing": "(nothing)",
|
|
31812
|
+
"ui.agents.navigation.sidebar.no_description": "No description",
|
|
31813
|
+
"ui.agents.navigation.sidebar.import_hint": "Import an agent from a ZIP file",
|
|
31814
|
+
"ui.agents.navigation.legacy.subtitle": "View, configure and manage your agents",
|
|
31815
|
+
"ui.agents.navigation.legacy.unnamed_agent": "this agent",
|
|
31816
|
+
"ui.agents.navigation.legacy.chat_named": "Chat with {name}"
|
|
31817
|
+
};
|
|
31818
|
+
const enUiAgentsRefusals = {
|
|
31819
|
+
"ui.agents.refusals.name_taken": "An agent called “{name}” already exists. Choose another name, or open the existing one to change it.",
|
|
31820
|
+
"ui.agents.refusals.name_grammar": "Names cannot contain spaces or slashes.",
|
|
31821
|
+
"ui.agents.refusals.effort_unavailable": "“{tier}” is not a configured effort tier. Use inherit, or add the tier in Settings.",
|
|
31822
|
+
"ui.agents.refusals.team_name_bound": "A team name is 1-64 characters.",
|
|
31823
|
+
"ui.agents.refusals.missing_manager": "“{name}” is not an agent or a team on this machine.",
|
|
31824
|
+
"ui.agents.refusals.missing_member": "“{name}” is not an agent or a team on this machine.",
|
|
31825
|
+
"ui.agents.refusals.team_nesting": "That team would nest too deeply, or would contain itself. Check its members.",
|
|
31826
|
+
"ui.agents.refusals.class.label.proactive": "Proactive",
|
|
31827
|
+
"ui.agents.refusals.class.label.reactive": "Reactive",
|
|
31828
|
+
"ui.agents.refusals.class.meaning.proactive": "It may message you on its own: after sending you something it waits a few minutes for a reply, nudges again with growing gaps for a fixed number of tries, then waits for you — and it may also wake on its own schedule.",
|
|
31829
|
+
"ui.agents.refusals.class.meaning.reactive": "It replies when you write to it. It does not nudge you, and it does not wake on its own schedule.",
|
|
31830
|
+
"ui.agents.refusals.class.effect.proactive": "Turning this off stops the nudging and the scheduled wakes. It still replies when you write to it.",
|
|
31831
|
+
"ui.agents.refusals.class.effect.reactive": "Turning this on lets it write first: it will wait a few minutes for your reply, nudge you again up to a fixed number of tries, and it may wake on its own schedule. It still replies when you write to it.",
|
|
31832
|
+
"ui.agents.refusals.class.install_disclosure": "This one ships with the app and has no copy of its own yet, so switching installs it first — the same agent and the same instructions, now editable — and then sets its class.",
|
|
31833
|
+
"ui.agents.refusals.class.error.no_reason": "The backend sent no reason for it. Try the switch again.",
|
|
31834
|
+
"ui.agents.refusals.class.error.install_landed": "{reason} The install did land, so the agent is editable now."
|
|
31835
|
+
};
|
|
31836
|
+
const enUiAgentsSettings = {
|
|
31837
|
+
"ui.agents.settings.chat.not_set_yet": "Not set yet",
|
|
31838
|
+
"ui.agents.settings.chat.set_to_default": "Set to default ({value})",
|
|
31839
|
+
"ui.agents.settings.chat.advanced_chat_settings": "Advanced chat settings",
|
|
31840
|
+
"ui.agents.settings.chat.advanced_settings_to_change_how_the_agent": "Advanced settings to change how the agent generates responses",
|
|
31841
|
+
"ui.agents.settings.chat.about_advanced_chat_settings": "About advanced chat settings",
|
|
31842
|
+
"ui.agents.settings.chat.set_custom_values_for_any_of_these": "Set custom values for any of these options. Anything left unset uses a default optimized from user testing.",
|
|
31843
|
+
"ui.agents.settings.chat.sampling": "Sampling",
|
|
31844
|
+
"ui.agents.settings.chat.temperature": "Temperature",
|
|
31845
|
+
"ui.agents.settings.chat.controls_randomness_in_responses_0_0_1": "Controls randomness in responses (0.0-1.0). Higher values make output more random.",
|
|
31846
|
+
"ui.agents.settings.chat.top_p": "Top P",
|
|
31847
|
+
"ui.agents.settings.chat.controls_cumulative_probability_of_tokens_to_sample": "Controls cumulative probability of tokens to sample from (0.0-1.0).",
|
|
31848
|
+
"ui.agents.settings.chat.top_k": "Top K",
|
|
31849
|
+
"ui.agents.settings.chat.limits_tokens_to_sample_from_at_each": "Limits tokens to sample from at each step.",
|
|
31850
|
+
"ui.agents.settings.chat.seed": "Seed",
|
|
31851
|
+
"ui.agents.settings.chat.random_number_seed_for_deterministic_generation": "Random number seed for deterministic generation.",
|
|
31852
|
+
"ui.agents.settings.chat.random_number_seed_for_deterministic_generation_detail": "Random number seed for deterministic generation",
|
|
31853
|
+
"ui.agents.settings.chat.repetition": "Repetition",
|
|
31854
|
+
"ui.agents.settings.chat.frequency_penalty": "Frequency penalty",
|
|
31855
|
+
"ui.agents.settings.chat.reduces_repetition_by_lowering_likelihood_of_repeated": "Reduces repetition by lowering likelihood of repeated tokens (-2.0 to 2.0).",
|
|
31856
|
+
"ui.agents.settings.chat.presence_penalty": "Presence penalty",
|
|
31857
|
+
"ui.agents.settings.chat.increases_diversity_by_lowering_likelihood_of_prompt": "Increases diversity by lowering likelihood of prompt tokens (-2.0 to 2.0).",
|
|
31858
|
+
"ui.agents.settings.chat.length_and_stopping": "Length and stopping",
|
|
31859
|
+
"ui.agents.settings.chat.max_tokens": "Max tokens",
|
|
31860
|
+
"ui.agents.settings.chat.maximum_tokens_to_generate_in_response": "Maximum tokens to generate in response.",
|
|
31861
|
+
"ui.agents.settings.chat.stop_sequences": "Stop sequences",
|
|
31862
|
+
"ui.agents.settings.chat.sequences_that_will_cause_the_model_to": "Sequences that will cause the model to stop generating text.",
|
|
31863
|
+
"ui.agents.settings.chat.empty": "empty",
|
|
31864
|
+
"ui.agents.settings.chat.enter_stop_sequences_one_per_line": "Enter stop sequences (one per line)...",
|
|
31865
|
+
"ui.agents.settings.general.agent_name": "Agent name",
|
|
31866
|
+
"ui.agents.settings.general.enter_agent_name": "Enter agent name...",
|
|
31867
|
+
"ui.agents.settings.general.select_a_hosting_provider_first_and_then": "Select a hosting provider first, and then select the AI model that you want to use. Each model has different capabilities and costs. Recommended: Automatic",
|
|
31868
|
+
"ui.agents.settings.general.model": "Model",
|
|
31869
|
+
"ui.agents.settings.general.select_a_hosting_provider_first": "Select a hosting provider first...",
|
|
31870
|
+
"ui.agents.settings.general.agent_information": "Agent information",
|
|
31871
|
+
"ui.agents.settings.general.description": "Description",
|
|
31872
|
+
"ui.agents.settings.general.enter_agent_description": "Enter agent description...",
|
|
31873
|
+
"ui.agents.settings.general.tags": "Tags",
|
|
31874
|
+
"ui.agents.settings.general.add_tag": "Add tag...",
|
|
31875
|
+
"ui.agents.settings.general.categories": "Categories",
|
|
31876
|
+
"ui.agents.settings.general.add_category": "Add category...",
|
|
31877
|
+
"ui.agents.settings.general.id": "ID",
|
|
31878
|
+
"ui.agents.settings.general.created": "Created",
|
|
31879
|
+
"ui.agents.settings.general.version": "Version",
|
|
31880
|
+
"ui.agents.settings.security.security_instructions": "Security instructions",
|
|
31881
|
+
"ui.agents.settings.security.about_security_instructions": "About security instructions",
|
|
31882
|
+
"ui.agents.settings.security.this_prompt_is_directed_to_the_ai": `This prompt is directed to the AI security reviewer. It helps the reviewer decide whether to block or allow actions based on safety. Write as if talking to another agent that is watching this agent (eg. "Allow all git operations", "Don't let the agent access drive files in the restricted folder"). Update this to allow the agent to perform actions if you are getting frequent security blocks.`,
|
|
31883
|
+
"ui.agents.settings.security.enter_instructions_for_the_security_agent": "Enter instructions for the security agent...",
|
|
31884
|
+
"ui.agents.settings.system_prompt.agent_instructions": "Agent instructions",
|
|
31885
|
+
"ui.agents.settings.system_prompt.about_agent_instructions": "About agent instructions",
|
|
31886
|
+
"ui.agents.settings.system_prompt.define_the_agent_s_role_personality_or": `Define the agent's role, personality, or provide context. Write as if talking to the agent (e.g., "You are an expert researcher") and/or about yourself (e.g., "My name is John").`,
|
|
31887
|
+
"ui.agents.settings.system_prompt.loading_system_prompt": "Loading system prompt...",
|
|
31888
|
+
"ui.agents.settings.system_prompt.enter_instructions_for_the_agent": "Enter instructions for the agent...",
|
|
31889
|
+
"ui.agents.settings.agent.no_agent_selected": "No agent selected",
|
|
31890
|
+
"ui.agents.settings.agent.select_an_agent_from_the_list_on": "Select an agent from the list on the left to view its configuration and details.",
|
|
31891
|
+
"ui.agents.settings.security.security_instructions_that_guide_the_agent_s": `Security instructions that guide the agent's behavior and limitations. This is the "system prompt" for the security agent.`,
|
|
31892
|
+
"ui.agents.settings.system_prompt.system_instructions_that_define_the_agent_s": `System instructions that define the agent's behavior and capabilities. This is the agent's "system prompt".`,
|
|
31893
|
+
"ui.agents.settings.chat.error.invalid_seed": "Seed must be a valid number",
|
|
31894
|
+
"ui.agents.settings.general.error.empty_name": "Agent name cannot be empty"
|
|
31895
|
+
};
|
|
31896
|
+
const enUiAgentsStarters = {
|
|
31897
|
+
"ui.agents.starters.server_unanswered": "The server did not answer.",
|
|
31898
|
+
"ui.agents.starters.summary.installed": "{count, plural, one {{count} installed} other {{count} installed}}",
|
|
31899
|
+
"ui.agents.starters.summary.already_present": "{count, plural, one {{count} already present} other {{count} already present}}",
|
|
31900
|
+
"ui.agents.starters.summary.skipped": "{count, plural, one {{count} skipped} other {{count} skipped}}",
|
|
31901
|
+
"ui.agents.starters.summary.failed": "{count, plural, one {{count} failed} other {{count} failed}}",
|
|
31902
|
+
"ui.agents.starters.summary.empty": "Nothing to install",
|
|
31903
|
+
"ui.agents.starters.summary.sentence": "{parts}.",
|
|
31904
|
+
"ui.agents.starters.summary.separator": ", ",
|
|
31905
|
+
"ui.agents.starters.summary.collisions": "{count, plural, one {Skipped {count}: you already have an agent called {names}.} other {Skipped {count}: you already have agents called {names}.}}",
|
|
31906
|
+
"ui.agents.starters.action.all_builtins": "Install all built-in agents",
|
|
31907
|
+
"ui.agents.starters.available": "{count, plural, one {{count} built-in agent available} other {{count} built-in agents available}}",
|
|
31908
|
+
"ui.agents.starters.action.all_count": "{count, plural, one {Install all {count}} other {Install all {count}}}",
|
|
31909
|
+
"ui.agents.starters.progress.accessible": "Installing built-in agents, {step} of {total}",
|
|
31910
|
+
"ui.agents.starters.progress.named": "Installing {step} of {total} — {name}…",
|
|
31911
|
+
"ui.agents.starters.progress.count": "Installing {done} of {total}…",
|
|
31912
|
+
"ui.agents.starters.action.done": "Done"
|
|
31913
|
+
};
|
|
31647
31914
|
const enUiBrowserChrome = {
|
|
31648
31915
|
"ui.browser.chrome.approvals": "Approvals and site access",
|
|
31649
31916
|
"ui.browser.chrome.error_title": "Page failed to load",
|
|
@@ -31660,7 +31927,229 @@ const enUiBrowserChrome = {
|
|
|
31660
31927
|
"ui.browser.chrome.tab_gone": "That browser tab is no longer open.",
|
|
31661
31928
|
"ui.browser.chrome.operation_failed": "{action, select, duplicate{The tab could not be duplicated. You can retry from its menu.} other{The tab could not be reloaded. You can retry from its menu.}}"
|
|
31662
31929
|
};
|
|
31663
|
-
const enUiBrowser = {
|
|
31930
|
+
const enUiBrowser = {
|
|
31931
|
+
"ui.browser.browser_approvals_dock.approvals": "Approvals",
|
|
31932
|
+
"ui.browser.browser_approvals_dock.waiting_count": "{count, plural, other {{count, number, ::group-off} waiting}}",
|
|
31933
|
+
"ui.browser.browser_approvals_dock.approved_count": "{count, plural, one {{count, number, ::group-off} site approved} other {{count, number, ::group-off} sites approved}}",
|
|
31934
|
+
"ui.browser.browser_approvals_dock.close_approvals": "Close approvals",
|
|
31935
|
+
"ui.browser.browser_approvals_dock.approvals_are_kept_per_origin_and_are": "Approvals are kept per origin and are separate from cookies. Revoking one does not sign you out; clearing cookies does not restore a denial. This app's browser keeps its sign-ins across conversations and app restarts, and an approval here applies to every conversation — not only the one that asked. Requests wait for ten minutes; after that the agent has to ask again.",
|
|
31936
|
+
"ui.browser.browser_approvals_dock.agents_can_drive_tabs_in_this_app": "Agents can drive tabs in this app. Sites an agent can reach were approved by a click in this window, and none of them can be reached without one.",
|
|
31937
|
+
"ui.browser.browser_approvals_dock.waiting_requests": "Waiting requests",
|
|
31938
|
+
"ui.browser.browser_approvals_dock.waiting": "Waiting",
|
|
31939
|
+
"ui.browser.browser_approvals_dock.nothing_is_waiting_an_agent_that_needs": "Nothing is waiting. An agent that needs a site appears here and in the band above the page.",
|
|
31940
|
+
"ui.browser.browser_approvals_dock.expired_the_agent_has_to_ask_again": "Expired — the agent has to ask again",
|
|
31941
|
+
"ui.browser.browser_approvals_dock.withdrawn_by_the_agent": "Withdrawn by the agent",
|
|
31942
|
+
"ui.browser.browser_approvals_dock.approved_sites": "Approved sites",
|
|
31943
|
+
"ui.browser.browser_approvals_dock.approved": "Approved",
|
|
31944
|
+
"ui.browser.browser_approvals_dock.no_site_is_approved_yet_the_agent": "No site is approved yet. The agent will ask the first time it needs one.",
|
|
31945
|
+
"ui.browser.browser_approvals_dock.revoke": "Revoke",
|
|
31946
|
+
"ui.browser.browser_approvals_dock.revoke_all_site_approvals": "Revoke all site approvals",
|
|
31947
|
+
"ui.browser.browser_approvals_dock.denied_sites": "Denied sites",
|
|
31948
|
+
"ui.browser.browser_approvals_dock.denied": "Denied",
|
|
31949
|
+
"ui.browser.browser_approvals_dock.the_agent_stops_asking_about_these_revoking": "The agent stops asking about these. Revoking a denial lets it ask again.",
|
|
31950
|
+
"ui.browser.browser_approvals_dock.current_site": "Current site",
|
|
31951
|
+
"ui.browser.browser_approvals_dock.this_site": "This site",
|
|
31952
|
+
"ui.browser.browser_approvals_dock.the_page_the_active_tab_is_on": "The page the active tab is on right now.",
|
|
31953
|
+
"ui.browser.browser_approvals_dock.forget_this_site": "Forget this site",
|
|
31954
|
+
"ui.browser.browser_approvals_dock.revokes_any_approval_for_it_and_clears": "Revokes any approval for it and clears what this app stored for it. It does not touch your real browser's data.",
|
|
31955
|
+
"ui.browser.browser_approvals_dock.browsing_data": "Browsing data",
|
|
31956
|
+
"ui.browser.browser_approvals_dock.these_clear_what_this_app_s_browser": "These clear what this app's browser profile stored. They do not change which sites the agent may reach — that is the list above.",
|
|
31957
|
+
"ui.browser.browser_approvals_dock.clear_cookies_and_site_data": "Clear cookies and site data",
|
|
31958
|
+
"ui.browser.browser_approvals_dock.clear_cache": "Clear cache",
|
|
31959
|
+
"ui.browser.browser_approvals_dock.clear_everything": "Clear everything",
|
|
31960
|
+
"ui.browser.browser_approvals_dock.clearing_cookies_signs_this_app_out_of": "Clearing cookies signs this app out of sites you logged into inside it. Your approvals are kept, so the agent will not have to ask again for a site you already approved.",
|
|
31961
|
+
"ui.browser.browser_approvals_tray.header_waiting": "{count, plural, one {{count, number, ::group-off} approval waiting} other {{count, number, ::group-off} approvals waiting}}",
|
|
31962
|
+
"ui.browser.browser_approvals_tray.header_conversation": "{count, plural, one {{count, number, ::group-off} approval for this conversation} other {{count, number, ::group-off} approvals for this conversation}}",
|
|
31963
|
+
"ui.browser.browser_approvals_tray.request_from": "Request {ordinal, number, ::group-off} from {requester}: {authority}",
|
|
31964
|
+
"ui.browser.browser_approvals_tray.open_approvals": "Open approvals",
|
|
31965
|
+
"ui.browser.browser_consent_bar.site_approval_request": "Site approval request",
|
|
31966
|
+
"ui.browser.browser_consent_request.an_agent": "An agent",
|
|
31967
|
+
"ui.browser.browser_consent_request.untitled_chat": "Untitled chat",
|
|
31968
|
+
"ui.browser.browser_consent_request.another_session": "Another session",
|
|
31969
|
+
"ui.browser.browser_consent_request.agent_in": "The agent in ''{name}''",
|
|
31970
|
+
"ui.browser.browser_consent_request.the_agent_in_untitled_chat": "The agent in 'Untitled chat'",
|
|
31971
|
+
"ui.browser.browser_consent_request.an_agent_from_another_session": "An agent from another session",
|
|
31972
|
+
"ui.browser.browser_consent_request.recording_your_choice": "Recording your choice…",
|
|
31973
|
+
"ui.browser.browser_consent_request.wants_to_open": "wants to open",
|
|
31974
|
+
"ui.browser.browser_consent_request.this_browser_keeps_sign_ins_across_conversations": "This browser keeps sign-ins across conversations and app restarts, so an agent you approve here can use those signed-in accounts on the sites you allow it. You can open this site yourself either way — this only controls what the agent may reach.",
|
|
31975
|
+
"ui.browser.browser_consent_request.allow_once": "Allow once",
|
|
31976
|
+
"ui.browser.browser_consent_request.allow_until_the_app_quits": "Allow until the app quits",
|
|
31977
|
+
"ui.browser.browser_consent_request.always_allow_this_site": "Always allow this site",
|
|
31978
|
+
"ui.browser.browser_consent_request.allow_all_of": "Allow all of ",
|
|
31979
|
+
"ui.browser.browser_consent_request.don_t_allow": "Don't allow",
|
|
31980
|
+
"ui.browser.browser_consent_request.one_navigation_for_that_conversation_up_to": "one navigation, for that conversation, up to ten minutes",
|
|
31981
|
+
"ui.browser.browser_consent_request.this_site_for_this_run_only_and": "this site, for this run only, and for every conversation",
|
|
31982
|
+
"ui.browser.browser_consent_request.kept_until_you_revoke_it_and_shared": "kept until you revoke it, and shared with every conversation",
|
|
31983
|
+
"ui.browser.browser_consent_request.every_site_under": "every site under ",
|
|
31984
|
+
"ui.browser.browser_consent_request.kept_until_you_revoke_it_shared_with": ", kept until you revoke it, shared with every conversation",
|
|
31985
|
+
"ui.browser.browser_consent_request.the_agent_stops_asking_about_this_site": "the agent stops asking about this site until you revoke the denial in Approvals",
|
|
31986
|
+
"ui.browser.browser_file_transfer_row.file_transfer": "File transfer",
|
|
31987
|
+
"ui.browser.browser_file_transfer_row.downloading": "Downloading",
|
|
31988
|
+
"ui.browser.browser_file_transfer_row.download_refused": "Download refused —",
|
|
31989
|
+
"ui.browser.browser_file_transfer_row.was_saved_to": "was saved to",
|
|
31990
|
+
"ui.browser.browser_file_transfer_row.open_downloads_folder": "Open downloads folder",
|
|
31991
|
+
"ui.browser.browser_file_transfer_row.open_folder": "Open folder",
|
|
31992
|
+
"ui.browser.browser_file_transfer_row.dismiss_upload_notice": "Dismiss upload notice",
|
|
31993
|
+
"ui.browser.browser_file_transfer_row.dismiss_download_notice": "Dismiss download notice",
|
|
31994
|
+
"ui.browser.browser_file_transfer_row.on_another_tab": "on another tab",
|
|
31995
|
+
"ui.browser.browser_file_transfer_row.received_so_far": "({received} so far)…",
|
|
31996
|
+
"ui.browser.browser_file_transfer_row.download_progress": "({percent, number, ::group-off}%, {received} of {total})…",
|
|
31997
|
+
"ui.browser.browser_file_transfer_row.is_an_executable_script_type": "is an executable/script type.",
|
|
31998
|
+
"ui.browser.browser_file_transfer_row.file_limit": "is over the {limit} per-file download limit.",
|
|
31999
|
+
"ui.browser.browser_file_transfer_row.call_limit": "was not saved: this call has already saved its limit of {count, plural, one {{count, number, ::group-off} files} other {{count, number, ::group-off} files}}.",
|
|
32000
|
+
"ui.browser.browser_file_transfer_row.could_not_be_saved_the_download_folder": "could not be saved: the download folder could not be written to.",
|
|
32001
|
+
"ui.browser.browser_file_transfer_row.deadline": "did not finish within {limit, number, ::group-off}s and was cancelled.",
|
|
32002
|
+
"ui.browser.browser_file_transfer_row.overrun": "went over the {limit} per-file download limit while it was being written.",
|
|
32003
|
+
"ui.browser.browser_file_transfer_row.did_not_finish": "did not finish.",
|
|
32004
|
+
"ui.browser.browser_file_transfer_row.was_refused": "was refused.",
|
|
32005
|
+
"ui.browser.browser_file_transfer_row.the_partial_file_was_discarded": "The partial file was discarded.",
|
|
32006
|
+
"ui.browser.browser_file_transfer_row.nothing_was_saved": "Nothing was saved.",
|
|
32007
|
+
"ui.browser.browser_file_transfer_row.just_now": "just now",
|
|
32008
|
+
"ui.browser.browser_file_transfer_row.age_minutes": "{count, plural, other {{count, number, ::group-off} min ago}}",
|
|
32009
|
+
"ui.browser.browser_file_transfer_row.age_hours": "{count, plural, other {{count, number, ::group-off} h ago}}",
|
|
32010
|
+
"ui.browser.browser_file_transfer_row.byte_count": "{count, plural, one {{count, number, ::group-off} bytes} other {{count, number, ::group-off} bytes}}",
|
|
32011
|
+
"ui.browser.browser_find_row.find_in_page": "Find in page",
|
|
32012
|
+
"ui.browser.browser_find_row.searching": "Searching…",
|
|
32013
|
+
"ui.browser.browser_find_row.no_result_reported_press_enter_to_search_again": "No result reported. Press Enter to search again.",
|
|
32014
|
+
"ui.browser.browser_find_row.match_position": "{ordinal, number, ::group-off} of {matches, number, ::group-off}",
|
|
32015
|
+
"ui.browser.browser_find_row.no_matches": "No matches",
|
|
32016
|
+
"ui.browser.browser_find_row.previous_match": "Previous match",
|
|
32017
|
+
"ui.browser.browser_find_row.previous_match_shortcut": "Previous match ({shortcut})",
|
|
32018
|
+
"ui.browser.browser_find_row.next_match": "Next match",
|
|
32019
|
+
"ui.browser.browser_find_row.next_match_shortcut": "Next match ({shortcut})",
|
|
32020
|
+
"ui.browser.browser_find_row.close_find": "Close find",
|
|
32021
|
+
"ui.browser.browser_find_row.close_find_shortcut": "Close find ({shortcut})",
|
|
32022
|
+
"ui.browser.browser_hand_over_dialog.let_an_agent_use_this_tab": "Let an agent use this tab",
|
|
32023
|
+
"ui.browser.browser_hand_over_dialog.cancel": "Cancel",
|
|
32024
|
+
"ui.browser.browser_hand_over_dialog.hand_over": "Hand over",
|
|
32025
|
+
"ui.browser.browser_hand_over_dialog.the_agent_can_use_this_tab_and": "The agent can use this tab — and only reach sites you have approved. Both gates apply, so handing this tab over does not approve the site it is showing.",
|
|
32026
|
+
"ui.browser.browser_hand_over_dialog.session": "Session",
|
|
32027
|
+
"ui.browser.browser_hand_over_dialog.choose_a_session": "Choose a session",
|
|
32028
|
+
"ui.browser.browser_hand_over_dialog.no_session_is_available_yet_start_one": "No session is available yet. Start one in chat, then hand the tab over.",
|
|
32029
|
+
"ui.browser.browser_load_failure.that_address_does_not_resolve_check_the": "That address does not resolve. Check the spelling.",
|
|
32030
|
+
"ui.browser.browser_load_failure.the_site_refused_the_connection_it_may": "The site refused the connection. It may be down, or refusing this app.",
|
|
32031
|
+
"ui.browser.browser_load_failure.the_site_did_not_answer_in_time": "The site did not answer in time.",
|
|
32032
|
+
"ui.browser.browser_load_failure.the_site_closed_the_connection_without_sending": "The site closed the connection without sending a response.",
|
|
32033
|
+
"ui.browser.browser_load_failure.the_connection_was_reset_before_the_page": "The connection was reset before the page arrived.",
|
|
32034
|
+
"ui.browser.browser_load_failure.this_machine_is_not_connected_to_the": "This machine is not connected to the network.",
|
|
32035
|
+
"ui.browser.browser_load_failure.that_address_is_not_reachable_from_this": "That address is not reachable from this machine.",
|
|
32036
|
+
"ui.browser.browser_load_failure.the_site_s_certificate_has_expired_or": "The site's certificate has expired or is not yet valid.",
|
|
32037
|
+
"ui.browser.browser_load_failure.the_site_s_certificate_is_not_from": "The site's certificate is not from an authority this app trusts.",
|
|
32038
|
+
"ui.browser.browser_load_failure.the_secure_connection_could_not_be_established": "The secure connection could not be established.",
|
|
32039
|
+
"ui.browser.browser_load_failure.the_page_could_not_be_loaded": "The page could not be loaded.",
|
|
32040
|
+
"ui.browser.browser_load_failure.couldn_t_load_this_page": "Couldn't load this page",
|
|
32041
|
+
"ui.browser.browser_load_failure.try_again_or_correct_the_address_in": "Try again, or correct the address in the bar above — it is still yours to edit. A tab still showing this when the app quits is not restored next time.",
|
|
32042
|
+
"ui.browser.browser_load_failure.try_again": "Try again",
|
|
32043
|
+
"ui.browser.browser_pane.browser": "Browser",
|
|
32044
|
+
"ui.browser.browser_pane.which_tabs_to_show": "Which tabs to show",
|
|
32045
|
+
"ui.browser.browser_pane.this_conversation": "This conversation",
|
|
32046
|
+
"ui.browser.browser_pane.all_tabs": "All tabs",
|
|
32047
|
+
"ui.browser.browser_pane.close_browser": "Close browser",
|
|
32048
|
+
"ui.browser.browser_new_tab.wordmark": "Local Operator",
|
|
32049
|
+
"ui.browser.browser_new_tab.enter_an_address_to_open_a_page": "Enter an address to open a page. Nothing is fetched or suggested until you do.",
|
|
32050
|
+
"ui.browser.browser_new_tab.address": "Address",
|
|
32051
|
+
"ui.browser.browser_new_tab.address_placeholder": "example.com",
|
|
32052
|
+
"ui.browser.browser_new_tab.go": "Go",
|
|
32053
|
+
"ui.browser.browser_new_tab.agents_can_only_open_sites_you_approve": "Agents can only open sites you approve, and every tab here stays yours to use.",
|
|
32054
|
+
"ui.browser.browser_surface.new_tab_in_this_conversation": "New tab in this conversation",
|
|
32055
|
+
"ui.browser.browser_surface.new_tab": "New tab",
|
|
32056
|
+
"ui.browser.browser_surface.browser_unavailable": "Browser unavailable",
|
|
32057
|
+
"ui.browser.browser_surface.try_again": "Try again",
|
|
32058
|
+
"ui.browser.browser_surface.startup_retry": "Retrying browser startup (attempt {attempt, number, ::group-off} of {maximum, number, ::group-off})",
|
|
32059
|
+
"ui.browser.browser_surface.starting_browser": "Starting browser",
|
|
32060
|
+
"ui.browser.browser_surface.the_browser_is_only_available_in_the": "The browser is only available in the desktop app.",
|
|
32061
|
+
"ui.browser.browser_surface.on_the_agent_s_tab": "· on the agent's tab",
|
|
32062
|
+
"ui.browser.browser_surface.on_another_tab": "· on another tab",
|
|
32063
|
+
"ui.browser.browser_surface.dismiss": "Dismiss",
|
|
32064
|
+
"ui.browser.browser_surface.loading_browser": "Loading browser",
|
|
32065
|
+
"ui.browser.browser_surface.no_tabs_are_open": "No tabs are open.",
|
|
32066
|
+
"ui.browser.browser_surface.no_browser_tabs_in_this_conversation_yet": "No browser tabs in this conversation yet. Tabs opened here, and tabs an agent opens while it works, appear here.",
|
|
32067
|
+
"ui.browser.browser_surface.show_all_tabs": "Show all tabs",
|
|
32068
|
+
"ui.browser.browser_surface.no_tab_is_selected_pick_a_tab": "No tab is selected. Pick a tab above, or open a new one.",
|
|
32069
|
+
"ui.browser.browser_surface.this_page": "This page",
|
|
32070
|
+
"ui.browser.browser_surface.paused_while_a_dialog_menu_or_panel": "Paused while a dialog, menu or panel is open — close it to bring the page back.",
|
|
32071
|
+
"ui.browser.browser_tab_strip.this_tab": "this tab",
|
|
32072
|
+
"ui.browser.browser_tab_strip.no_conversation": "No conversation",
|
|
32073
|
+
"ui.browser.browser_tab_strip.new_tab": "New tab",
|
|
32074
|
+
"ui.browser.browser_tab_strip.browser_tabs": "Browser tabs",
|
|
32075
|
+
"ui.browser.browser_tab_strip.tab_actions": "Tab actions for {title}",
|
|
32076
|
+
"ui.browser.browser_tab_strip.actions_for": 'Actions for "',
|
|
32077
|
+
"ui.browser.browser_tab_strip.watch": 'Watch "',
|
|
32078
|
+
"ui.browser.browser_tab_strip.let_an_agent_use": 'Let an agent use "',
|
|
32079
|
+
"ui.browser.browser_tab_strip.stop_letting_the_agent_use": 'Stop letting the agent use "',
|
|
32080
|
+
"ui.browser.browser_tab_strip.close": 'Close "',
|
|
32081
|
+
"ui.browser.browser_tab_strip.copy_url": "Copy URL",
|
|
32082
|
+
"ui.browser.browser_tab_strip.close_tab": "Close tab",
|
|
32083
|
+
"ui.browser.browser_tab_strip.close_tab_shortcut": "Close tab ({shortcut})",
|
|
32084
|
+
"ui.browser.browser_tab_strip.close_named_tab": "Close {title}",
|
|
32085
|
+
"ui.browser.browser_tab_strip.all_tabs_unshown": "All tabs — {count, plural, other {{count, number, ::group-off} not shown}}",
|
|
32086
|
+
"ui.browser.browser_tab_strip.all_tabs_unshown_accessible": "All tabs, {count, plural, other {{count, number, ::group-off} not shown}}",
|
|
32087
|
+
"ui.browser.browser_tab_strip.hide_all_tabs": "Hide all tabs",
|
|
32088
|
+
"ui.browser.browser_url_bar.newest_download": "Open downloads folder — {name} was the newest saved there ({count, plural, other {{count, number, ::group-off} this session}})",
|
|
32089
|
+
"ui.browser.browser_url_bar.latest_download": "Open downloads folder — {name} was saved there",
|
|
32090
|
+
"ui.browser.browser_url_bar.back_shortcut": "Back ({shortcut})",
|
|
32091
|
+
"ui.browser.browser_url_bar.back": "Back",
|
|
32092
|
+
"ui.browser.browser_url_bar.forward_shortcut": "Forward ({shortcut})",
|
|
32093
|
+
"ui.browser.browser_url_bar.find_in_page": "Find in page",
|
|
32094
|
+
"ui.browser.browser_url_bar.find_in_page_shortcut": "Find in page ({shortcut})",
|
|
32095
|
+
"ui.browser.browser_url_bar.forward": "Forward",
|
|
32096
|
+
"ui.browser.browser_url_bar.reset_page_zoom_shortcut": "Reset page zoom ({shortcut})",
|
|
32097
|
+
"ui.browser.browser_url_bar.page_zoom_reset": "Page zoom {zoom, number, ::group-off}%, reset to 100%",
|
|
32098
|
+
"ui.browser.browser_url_bar.stop_loading": "Stop loading",
|
|
32099
|
+
"ui.browser.browser_url_bar.reload": "Reload",
|
|
32100
|
+
"ui.browser.browser_url_bar.address": "Address",
|
|
32101
|
+
"ui.browser.browser_url_bar.approvals_waiting": "Approvals, {count, plural, other {{count, number, ::group-off} waiting}}",
|
|
32102
|
+
"ui.browser.browser_url_bar.home_destination": "Home — go to the start page (blank)",
|
|
32103
|
+
"ui.browser.browser_url_bar.site_unverified": "Connection to {origin} could not be verified",
|
|
32104
|
+
"ui.browser.browser_url_bar.site_unverified_certificate": "Not secure connection to {origin} — the certificate could not be verified",
|
|
32105
|
+
"ui.browser.page_context_menu.cut": "Cut",
|
|
32106
|
+
"ui.browser.page_context_menu.copy": "Copy",
|
|
32107
|
+
"ui.browser.page_context_menu.paste": "Paste",
|
|
32108
|
+
"ui.browser.page_context_menu.select_all": "Select all",
|
|
32109
|
+
"ui.browser.page_context_menu.copy_page_address": "Copy page address",
|
|
32110
|
+
"ui.browser.browser_url_bar.home": "Home",
|
|
32111
|
+
"ui.browser.browser_url_bar.site_secure": "Secure connection to {origin}",
|
|
32112
|
+
"ui.browser.browser_url_bar.site_not_secure": "Not secure connection to {origin}",
|
|
32113
|
+
"ui.browser.browser_url_bar.site_internal": "Built-in page",
|
|
32114
|
+
"ui.browser.browser_url_bar.site_file": "Local file",
|
|
32115
|
+
"ui.browser.page_context_menu.copy_link_address": "Copy link address",
|
|
32116
|
+
"ui.browser.page_context_menu.open_link_in_new_tab": "Open link in new tab",
|
|
32117
|
+
"ui.browser.browser_webauthn_dialog.choose_a_passkey": "Choose a passkey",
|
|
32118
|
+
"ui.browser.browser_webauthn_dialog.your_mac_will_ask_for_touch_id": "Your Mac will ask for Touch ID after you choose. This app can only use passkeys stored on this Mac — a passkey kept in another manager will not appear here.",
|
|
32119
|
+
"ui.browser.browser_webauthn_dialog.answering": "Answering…",
|
|
32120
|
+
"ui.browser.browser_webauthn_dialog.close": "Close",
|
|
32121
|
+
"ui.browser.browser_webauthn_dialog.cancel": "Cancel",
|
|
32122
|
+
"ui.browser.browser_webauthn_prompt.answer_failed": "The passkey request could not be answered: {error}",
|
|
32123
|
+
"ui.browser.use_browser_chrome.downloads_folder_failed": "Could not open the downloads folder. {message}",
|
|
32124
|
+
"ui.browser.use_consent_attention_lifetime.that_request_is_no_longer_waiting": "That request is no longer waiting.",
|
|
32125
|
+
"ui.browser.approval_queue_model.expires_in_under_a_minute": "expires in under a minute",
|
|
32126
|
+
"ui.browser.approval_queue_model.expires_minutes": "expires in {count, plural, one {{count, number, ::group-off} minute} other {{count, number, ::group-off} minutes}}",
|
|
32127
|
+
"ui.browser.approval_queue_model.this_site": "This site",
|
|
32128
|
+
"ui.browser.approval_queue_model.whole_domain": "Whole domain",
|
|
32129
|
+
"ui.browser.approval_queue_model.this_host": "This host",
|
|
32130
|
+
"ui.browser.approval_queue_model.denied": "Denied",
|
|
32131
|
+
"ui.browser.approval_queue_model.this_session_only": "This session only",
|
|
32132
|
+
"ui.browser.webauthn_chooser.passkey_fallback": "Passkey {number, number, ::group-off}",
|
|
32133
|
+
"ui.browser.webauthn_chooser.the_site_stored_no_name_for_this": "The site stored no name for this passkey.",
|
|
32134
|
+
"ui.browser.webauthn_chooser.a_site": "A site",
|
|
32135
|
+
"ui.browser.webauthn_chooser.passkey_single": "{site} asked for a passkey. Pick it to sign in.",
|
|
32136
|
+
"ui.browser.webauthn_chooser.passkey_anonymous_many": "{site} asked for a passkey. Your Mac holds {count, plural, one {{count, number, ::group-off} passkeys} other {{count, number, ::group-off} passkeys}} for this site and did not give their names, so the one you pick is the account you sign in as. If it is the wrong one, sign out and ask the site again.",
|
|
32137
|
+
"ui.browser.webauthn_chooser.passkey_named_many": "{site} asked for a passkey. More than one of your passkeys matches, so pick the one to use.",
|
|
32138
|
+
"ui.browser.webauthn_chooser.requesting_page": "The page asking is “{title}”.",
|
|
32139
|
+
"ui.browser.webauthn_chooser.passkeys_waiting": "{count, plural, one {One more passkey request is waiting.} other {{count, number, ::group-off} more passkey requests are waiting.}}",
|
|
32140
|
+
"ui.browser.webauthn_chooser.this_passkey_request_expired": "This passkey request expired",
|
|
32141
|
+
"ui.browser.webauthn_chooser.nobody_chose_a_passkey_within_a_minute": "Nobody chose a passkey within a minute, so the site's request was cancelled. Ask the site for a passkey again.",
|
|
32142
|
+
"ui.browser.webauthn_chooser.this_passkey_request_was_cancelled": "This passkey request was cancelled",
|
|
32143
|
+
"ui.browser.webauthn_chooser.the_browser_tab_that_asked_went_away": "The browser tab that asked went away before a passkey was chosen, so the request was cancelled.",
|
|
32144
|
+
"ui.browser.webauthn_chooser.that_passkey_was_not_offered": "That passkey was not offered",
|
|
32145
|
+
"ui.browser.webauthn_chooser.the_choice_did_not_name_a_passkey": "The choice did not name a passkey this site offered, so the request was cancelled. Try again from the site.",
|
|
32146
|
+
"ui.browser.browser_tab_strip.close_other_tabs": "Close {count, plural, one {{count, number, ::group-off} other tab} other {{count, number, ::group-off} other tabs}}",
|
|
32147
|
+
"ui.browser.browser_tab_strip.close_right_tabs": "Close {count, plural, one {{count, number, ::group-off} tab} other {{count, number, ::group-off} tabs}} to the right",
|
|
32148
|
+
"ui.browser.browser_tab_strip.close_failed_tabs": "Close {count, plural, one {{count, number, ::group-off} failed tab} other {{count, number, ::group-off} failed tabs}}",
|
|
32149
|
+
"ui.browser.browser_tab_strip.close_conversation_tabs": "Close all {count, plural, one {{count, number, ::group-off} tabs} other {{count, number, ::group-off} tabs}} in this conversation",
|
|
32150
|
+
"ui.browser.browser_file_transfer_row.attached_verb": "{count, plural, one {was attached to} other {were attached to}}",
|
|
32151
|
+
"ui.browser.browser_file_transfer_row.upload_more": "+ {count, plural, other {{count, number, ::group-off} more}}"
|
|
32152
|
+
};
|
|
31664
32153
|
const enUiCanvas = {
|
|
31665
32154
|
"ui.canvas.files.highlights": "Highlights",
|
|
31666
32155
|
"ui.canvas.files.working": "Working files",
|
|
@@ -31710,7 +32199,7 @@ const enUiCanvas = {
|
|
|
31710
32199
|
"ui.canvas.files.error": "Could not load session files",
|
|
31711
32200
|
"ui.canvas.files.remote": "Remote files are unavailable here",
|
|
31712
32201
|
"ui.canvas.files.inSession": "In session",
|
|
31713
|
-
"ui.canvas.files.count": "{count, plural, one {
|
|
32202
|
+
"ui.canvas.files.count": "{count, plural, one {{count, number, ::group-off} file} other {{count, number, ::group-off} files}}",
|
|
31714
32203
|
"ui.canvas.files.narrowCount": "{shown} of {total} files",
|
|
31715
32204
|
"ui.canvas.files.gone": "No longer in the session",
|
|
31716
32205
|
"ui.canvas.files.earlier": "Search earlier messages",
|
|
@@ -31720,6 +32209,15 @@ const enUiCanvas = {
|
|
|
31720
32209
|
"ui.canvas.files.prepareError": "Could not prepare a local copy for this action",
|
|
31721
32210
|
"ui.canvas.files.pathCopyNote": "Open, folder and path actions create a local copy in this conversation's scratchpad."
|
|
31722
32211
|
};
|
|
32212
|
+
const enUiChatComposerMedia = {
|
|
32213
|
+
"ui.chat.composer_media.recording": "Recording",
|
|
32214
|
+
"ui.chat.composer_media.confirms": "confirms",
|
|
32215
|
+
"ui.chat.composer_media.cancels": "cancels",
|
|
32216
|
+
"ui.chat.composer_media.pasted_type": "Pasted {mimeType}",
|
|
32217
|
+
"ui.chat.composer_media.pasted_file": "Pasted file",
|
|
32218
|
+
"ui.chat.composer_media.preview_failed": "Could not be previewed",
|
|
32219
|
+
"ui.chat.composer_media.remove_attachment": "Remove attachment"
|
|
32220
|
+
};
|
|
31723
32221
|
const enUiChat = {
|
|
31724
32222
|
"ui.chat.usage.continue": "Included quota used; credits will continue.",
|
|
31725
32223
|
"ui.chat.usage.family_caps": "Model-family caps still apply.",
|
|
@@ -31728,17 +32226,433 @@ const enUiChat = {
|
|
|
31728
32226
|
"ui.chat.usage.unlimited": "Unlimited paid allowance",
|
|
31729
32227
|
"ui.chat.highlights.file_resolution_failed": "Couldn't resolve this file in the session working directory. Use Copy file path to check its location against this session's workspace before trying again."
|
|
31730
32228
|
};
|
|
32229
|
+
const enUiChatSidebarView = {
|
|
32230
|
+
"ui.chat.sidebar_view.group_by": "Group by",
|
|
32231
|
+
"ui.chat.sidebar_view.time_basis": "Time basis",
|
|
32232
|
+
"ui.chat.sidebar_view.order_by": "Order by",
|
|
32233
|
+
"ui.chat.sidebar_view.sections": "Sections",
|
|
32234
|
+
"ui.chat.sidebar_view.time_section": "Time section",
|
|
32235
|
+
"ui.chat.sidebar_view.agent_team": "Agent and team",
|
|
32236
|
+
"ui.chat.sidebar_view.one_list": "In one list",
|
|
32237
|
+
"ui.chat.sidebar_view.last_active": "Last active",
|
|
32238
|
+
"ui.chat.sidebar_view.created": "Created",
|
|
32239
|
+
"ui.chat.sidebar_view.active_first": "Active first",
|
|
32240
|
+
"ui.chat.sidebar_view.most_recent": "Most recent",
|
|
32241
|
+
"ui.chat.sidebar_view.clock_hint": "Dates and ordering follow the selected clock.",
|
|
32242
|
+
"ui.chat.sidebar_view.move_up": "Move {section} up",
|
|
32243
|
+
"ui.chat.sidebar_view.move_down": "Move {section} down",
|
|
32244
|
+
"ui.chat.sidebar_view.hidden": "{count, plural, one {{count, number, ::group-off} section hidden} other {{count, number, ::group-off} sections hidden}}",
|
|
32245
|
+
"ui.chat.sidebar_view.section.pinned": "Pinned",
|
|
32246
|
+
"ui.chat.sidebar_view.section.running": "Running",
|
|
32247
|
+
"ui.chat.sidebar_view.section.today": "Today",
|
|
32248
|
+
"ui.chat.sidebar_view.section.week": "This week",
|
|
32249
|
+
"ui.chat.sidebar_view.section.older": "Older",
|
|
32250
|
+
"ui.chat.sidebar_view.section.agents": "Agents",
|
|
32251
|
+
"ui.chat.sidebar_view.section.teams": "Teams"
|
|
32252
|
+
};
|
|
32253
|
+
const enUiCodeReview = {
|
|
32254
|
+
"ui.code_review.activity.close": "closed",
|
|
32255
|
+
"ui.code_review.activity.comment": "commented",
|
|
32256
|
+
"ui.code_review.activity.edit": "edited",
|
|
32257
|
+
"ui.code_review.activity.merge": "merged",
|
|
32258
|
+
"ui.code_review.activity.push": "pushed",
|
|
32259
|
+
"ui.code_review.activity.ready": "marked ready",
|
|
32260
|
+
"ui.code_review.activity.review": "reviewed",
|
|
32261
|
+
"ui.code_review.activity.you": "you {acts}",
|
|
32262
|
+
"ui.code_review.age.days": "{amount, plural, one {updated {amountText} d ago} other {updated {amountText} d ago}}",
|
|
32263
|
+
"ui.code_review.age.hours": "{amount, plural, one {updated {amountText} h ago} other {updated {amountText} h ago}}",
|
|
32264
|
+
"ui.code_review.age.just_now": "updated just now",
|
|
32265
|
+
"ui.code_review.age.minutes": "{amount, plural, one {updated {amountText} min ago} other {updated {amountText} min ago}}",
|
|
32266
|
+
"ui.code_review.attention.checks": "checks failing",
|
|
32267
|
+
"ui.code_review.attention.findings": "findings open",
|
|
32268
|
+
"ui.code_review.chip.count": "{count, plural, one {{countText} code request} other {{countText} code requests}}",
|
|
32269
|
+
"ui.code_review.chip.mentioned": "{count, plural, one {{countText} mentioned} other {{countText} mentioned}}",
|
|
32270
|
+
"ui.code_review.chip.opened": "{count, plural, one {{countText} opened} other {{countText} opened}}",
|
|
32271
|
+
"ui.code_review.ci.failing": "{count, plural, one {{countText} failing} other {{countText} failing}}",
|
|
32272
|
+
"ui.code_review.ci.passed": "{passed}/{total} passed",
|
|
32273
|
+
"ui.code_review.code_review_model.ci_failing": "CI failing",
|
|
32274
|
+
"ui.code_review.code_review_model.ci_passed": "CI passed",
|
|
32275
|
+
"ui.code_review.code_review_model.ci_pending": "CI pending",
|
|
32276
|
+
"ui.code_review.code_review_model.ci_running": "CI running",
|
|
32277
|
+
"ui.code_review.code_review_model.closed": "Closed",
|
|
32278
|
+
"ui.code_review.code_review_model.code": "Code",
|
|
32279
|
+
"ui.code_review.code_review_model.code_review_is_showing": "Code review is showing",
|
|
32280
|
+
"ui.code_review.code_review_model.cooling_this_host_is_rate_limited_nothing_was_fetched_yet": "Cooling — this host is rate-limited; nothing was fetched yet.",
|
|
32281
|
+
"ui.code_review.code_review_model.couldn_t_fetch_this_pass_will_retry": "Couldn't fetch this pass — will retry.",
|
|
32282
|
+
"ui.code_review.code_review_model.design": "Design",
|
|
32283
|
+
"ui.code_review.code_review_model.draft": "Draft",
|
|
32284
|
+
"ui.code_review.code_review_model.link_only": "Link only",
|
|
32285
|
+
"ui.code_review.code_review_model.merged": "Merged",
|
|
32286
|
+
"ui.code_review.code_review_model.no_agent_review_yet": "No agent review yet",
|
|
32287
|
+
"ui.code_review.code_review_model.no_checks_yet": "No checks yet",
|
|
32288
|
+
"ui.code_review.code_review_model.open": "Open",
|
|
32289
|
+
"ui.code_review.code_review_model.open_code_review": "Open code review",
|
|
32290
|
+
"ui.code_review.code_review_model.stale_last_known_state_not_current": "Stale — last known state, not current.",
|
|
32291
|
+
"ui.code_review.code_review_model.unknown": "Unknown",
|
|
32292
|
+
"ui.code_review.code_review_pane.checked_just_now": "Checked just now",
|
|
32293
|
+
"ui.code_review.code_review_pane.close_code_review": "Close code review",
|
|
32294
|
+
"ui.code_review.code_review_pane.code_review": "Code review",
|
|
32295
|
+
"ui.code_review.code_review_pane.code_reviews_could_not_be_read": "Code reviews could not be read.",
|
|
32296
|
+
"ui.code_review.code_review_pane.loading_code_reviews": "Loading code reviews…",
|
|
32297
|
+
"ui.code_review.code_review_pane.mentioned": "Mentioned",
|
|
32298
|
+
"ui.code_review.code_review_pane.no_code_reviews_yet": "No code reviews yet.",
|
|
32299
|
+
"ui.code_review.code_review_pane.nothing_was_lost_the_session_s_record_is_unchanged": "Nothing was lost — the conversation's record is unchanged.",
|
|
32300
|
+
"ui.code_review.code_review_pane.opened": "Opened",
|
|
32301
|
+
"ui.code_review.code_review_pane.pull_requests_and_merge_requests_this_session_opens_or_mentions_w": "Pull requests and merge requests this conversation opens or mentions will appear here.",
|
|
32302
|
+
"ui.code_review.code_review_pane.refresh_code_reviews": "Refresh code reviews",
|
|
32303
|
+
"ui.code_review.code_review_pane.refreshing_code_reviews": "Refreshing code reviews",
|
|
32304
|
+
"ui.code_review.code_review_pane.scanning_this_session": "Scanning this conversation…",
|
|
32305
|
+
"ui.code_review.code_review_row.fetching_current_state": "Fetching current state…",
|
|
32306
|
+
"ui.code_review.code_review_row.possibly_opened_by_this_session_the_evidence_did_not_prove_it_was": "Possibly opened by this session; the evidence did not prove it was.",
|
|
32307
|
+
"ui.code_review.comments.count": "{count, plural, one {{countText} comment} other {{countText} comments}}",
|
|
32308
|
+
"ui.code_review.host.cooling": "{host} rate-limited until {time}.",
|
|
32309
|
+
"ui.code_review.lane.awaiting_rereview": "{state} · awaiting re-review",
|
|
32310
|
+
"ui.code_review.lane.round": "Round {round} · {state}",
|
|
32311
|
+
"ui.code_review.lane.stale": "stale",
|
|
32312
|
+
"ui.code_review.lane.stale_head": "stale — reviewed {reviewed}, head {head}",
|
|
32313
|
+
"ui.code_review.lane.stale_reviewed": "stale — reviewed {reviewed}",
|
|
32314
|
+
"ui.code_review.lane.state.clean": "clean",
|
|
32315
|
+
"ui.code_review.lane.state.findings_open": "findings open",
|
|
32316
|
+
"ui.code_review.lane.state.remediation_posted": "remediation posted",
|
|
32317
|
+
"ui.code_review.lane.state.terminal": "terminal",
|
|
32318
|
+
"ui.code_review.lane.state.unstated": "reviewed — verdict not stated",
|
|
32319
|
+
"ui.code_review.relation.inherited": "inherited",
|
|
32320
|
+
"ui.code_review.relation.subagent": "via subagent",
|
|
32321
|
+
"ui.code_review.relation.subagent_fallback": "via subagent {name}",
|
|
32322
|
+
"ui.code_review.relation.subagent_path": "via subagent {path}",
|
|
32323
|
+
"ui.code_review.relation.unknown": "unknown — possibly opened",
|
|
32324
|
+
"ui.code_review.row.fetching": "fetching its current state",
|
|
32325
|
+
"ui.code_review.row.opens_browser": "opens in your browser",
|
|
32326
|
+
"ui.code_review.row.refresh_error": "Couldn't refresh: {error}",
|
|
32327
|
+
"ui.code_review.row.stale_error": "Stale — last known, not current: {error}",
|
|
32328
|
+
"ui.code_review.tool.more": "{count, plural, one {{countText}{capped} more seen in tool output} other {{countText}{capped} more seen in tool output}}"
|
|
32329
|
+
};
|
|
32330
|
+
const enUiCommandPalette = {
|
|
32331
|
+
"ui.command_palette.command_palette.characters_so_chats_are_matched_by_name": " characters, so chats are matched by name.",
|
|
32332
|
+
"ui.command_palette.command_palette.chats_are_matched_by_name_update_local_operator_to_search_inside_": "Chats are matched by name. Update Local Operator to search inside conversations.",
|
|
32333
|
+
"ui.command_palette.command_palette.clear": "Clear",
|
|
32334
|
+
"ui.command_palette.command_palette.clear_search": "Clear search",
|
|
32335
|
+
"ui.command_palette.command_palette.clear_this_conversation": "Clear this conversation?",
|
|
32336
|
+
"ui.command_palette.command_palette.command_palette": "Command palette",
|
|
32337
|
+
"ui.command_palette.command_palette.conversation_search_is_unavailable_while_the_backend_is_unreachab": "Conversation search is unavailable while the backend is unreachable, so chats are matched by name.",
|
|
32338
|
+
"ui.command_palette.command_palette.every_message_in_it_is_deleted_from_this_computer_and_there_is_no": "Every message in it is deleted from this computer, and there is no undo. The agent itself is not affected.",
|
|
32339
|
+
"ui.command_palette.command_palette.go": "Go",
|
|
32340
|
+
"ui.command_palette.command_palette.open": "Open",
|
|
32341
|
+
"ui.command_palette.command_palette.results": "Results",
|
|
32342
|
+
"ui.command_palette.command_palette.run": "Run",
|
|
32343
|
+
"ui.command_palette.command_palette.search_chats_settings_pages_and_actions": "Search chats, settings, pages and actions",
|
|
32344
|
+
"ui.command_palette.command_palette.search_terms_are_limited_to": "Search terms are limited to ",
|
|
32345
|
+
"ui.command_palette.command_palette.searching_conversations": "Searching conversations…",
|
|
32346
|
+
"ui.command_palette.command_palette.to_close": "to close",
|
|
32347
|
+
"ui.command_palette.command_palette.to_move": "to move",
|
|
32348
|
+
"ui.command_palette.command_palette.to_run": "to run",
|
|
32349
|
+
"ui.command_palette.empty.backspace": "Try another word, or backspace {glyph} to search everything.",
|
|
32350
|
+
"ui.command_palette.empty.no_matches": "No matches for “{terms}”",
|
|
32351
|
+
"ui.command_palette.matches.best": "{total, plural, one {showing the best {countText} of {totalText} matches} other {showing the best {countText} of {totalText} matches}}",
|
|
32352
|
+
"ui.command_palette.matches.showing": "showing {count} of {total}",
|
|
32353
|
+
"ui.command_palette.palette_search.actions": "Actions",
|
|
32354
|
+
"ui.command_palette.palette_search.agents": "Agents",
|
|
32355
|
+
"ui.command_palette.palette_search.agents_and_teams": "Agents and teams",
|
|
32356
|
+
"ui.command_palette.palette_search.chats": "Chats",
|
|
32357
|
+
"ui.command_palette.palette_search.commands_and_pages": "Commands and pages",
|
|
32358
|
+
"ui.command_palette.palette_search.go_to": "Go to",
|
|
32359
|
+
"ui.command_palette.palette_search.loading_conversations": "Loading conversations…",
|
|
32360
|
+
"ui.command_palette.palette_search.no_conversations_yet": "No conversations yet",
|
|
32361
|
+
"ui.command_palette.palette_search.nothing_to_show_yet": "Nothing to show yet",
|
|
32362
|
+
"ui.command_palette.palette_search.open": "Open",
|
|
32363
|
+
"ui.command_palette.palette_search.panels": "Panels",
|
|
32364
|
+
"ui.command_palette.palette_search.recents": "Recents",
|
|
32365
|
+
"ui.command_palette.palette_search.search_for_a_chat_an_agent_or_team_by_name_a_setting_or_a_page_su": "Search for a chat, an agent or team by name, a setting, or a page such as Schedules.",
|
|
32366
|
+
"ui.command_palette.palette_search.searching_conversations": "Searching conversations…",
|
|
32367
|
+
"ui.command_palette.palette_search.settings": "Settings",
|
|
32368
|
+
"ui.command_palette.palette_search.start_a_chat_and_it_will_show_up_here": "Start a chat and it will show up here.",
|
|
32369
|
+
"ui.command_palette.palette_search.teams": "Teams",
|
|
32370
|
+
"ui.command_palette.palette_search.try_another_word_or_narrow_the_search_with_a_prefix_below": "Try another word, or narrow the search with a prefix below.",
|
|
32371
|
+
"ui.command_palette.palette_search.unread": "Unread",
|
|
32372
|
+
"ui.command_palette.palette_search.untitled_chat": "Untitled chat",
|
|
32373
|
+
"ui.command_palette.use_palette_sources.agent_chat": "Agent chat",
|
|
32374
|
+
"ui.command_palette.use_palette_sources.agent_hub": "Agent hub",
|
|
32375
|
+
"ui.command_palette.use_palette_sources.agent_settings": "Agent settings",
|
|
32376
|
+
"ui.command_palette.use_palette_sources.analytics": "Analytics",
|
|
32377
|
+
"ui.command_palette.use_palette_sources.app_backend_and_environment": "App, backend and environment",
|
|
32378
|
+
"ui.command_palette.use_palette_sources.browser": "Browser",
|
|
32379
|
+
"ui.command_palette.use_palette_sources.change": "Change",
|
|
32380
|
+
"ui.command_palette.use_palette_sources.chat": "Chat",
|
|
32381
|
+
"ui.command_palette.use_palette_sources.clear": "Clear",
|
|
32382
|
+
"ui.command_palette.use_palette_sources.clear_conversation": "Clear conversation",
|
|
32383
|
+
"ui.command_palette.use_palette_sources.close": "Close",
|
|
32384
|
+
"ui.command_palette.use_palette_sources.close_canvas": "Close canvas",
|
|
32385
|
+
"ui.command_palette.use_palette_sources.connect": "Connect",
|
|
32386
|
+
"ui.command_palette.use_palette_sources.connect_a_model_provider": "Connect a model provider",
|
|
32387
|
+
"ui.command_palette.use_palette_sources.create": "Create",
|
|
32388
|
+
"ui.command_palette.use_palette_sources.create_agent": "Create agent",
|
|
32389
|
+
"ui.command_palette.use_palette_sources.credits_limits_and_spend": "Credits, limits and spend",
|
|
32390
|
+
"ui.command_palette.use_palette_sources.diagnostics_for_this_conversation": "Diagnostics for this conversation",
|
|
32391
|
+
"ui.command_palette.use_palette_sources.in_conversation": "In conversation",
|
|
32392
|
+
"ui.command_palette.use_palette_sources.info": "Info",
|
|
32393
|
+
"ui.command_palette.use_palette_sources.mesh": "Mesh",
|
|
32394
|
+
"ui.command_palette.use_palette_sources.my_agents": "My agents",
|
|
32395
|
+
"ui.command_palette.use_palette_sources.new_chat": "New chat",
|
|
32396
|
+
"ui.command_palette.use_palette_sources.open": "Open",
|
|
32397
|
+
"ui.command_palette.use_palette_sources.open_canvas": "Open canvas",
|
|
32398
|
+
"ui.command_palette.use_palette_sources.projects": "Projects",
|
|
32399
|
+
"ui.command_palette.use_palette_sources.provider_usage": "Provider usage",
|
|
32400
|
+
"ui.command_palette.use_palette_sources.schedules": "Schedules",
|
|
32401
|
+
"ui.command_palette.use_palette_sources.session": "Session",
|
|
32402
|
+
"ui.command_palette.use_palette_sources.settings": "Settings",
|
|
32403
|
+
"ui.command_palette.use_palette_sources.start": "Start",
|
|
32404
|
+
"ui.command_palette.use_palette_sources.team_chat": "Team chat",
|
|
32405
|
+
"ui.command_palette.use_palette_sources.usage_over_time": "Usage over time"
|
|
32406
|
+
};
|
|
32407
|
+
const enUiCommonAccount = {
|
|
32408
|
+
"ui.common.account.low_credits_dialog.could_not_load_bonus_credit_information": "Could not load bonus credit information.",
|
|
32409
|
+
"ui.common.account.low_credits_dialog.detail": "${detail} USD",
|
|
32410
|
+
"ui.common.account.low_credits_dialog.get_more_credits": "Get more credits",
|
|
32411
|
+
"ui.common.account.low_credits_dialog.in_bonus_credits_with_your_first_purchase": "in bonus credits with your first purchase.",
|
|
32412
|
+
"ui.common.account.low_credits_dialog.it_s_pay_as_you_go_with_no_commitments_load_up_what_you_need_star": "It's pay-as-you-go with no commitments. Load up what you need, starting small for maximum flexibility.",
|
|
32413
|
+
"ui.common.account.low_credits_dialog.maybe_later": "Maybe later",
|
|
32414
|
+
"ui.common.account.low_credits_dialog.plus_get": "Plus, get",
|
|
32415
|
+
"ui.common.account.low_credits_dialog.radient_automatic_is_often_cheaper_than_bringing_your_own_key_its": "Radient Automatic is often cheaper than bringing your own key: its smart model routing picks the most cost-effective model for each step of your agentic workflows.",
|
|
32416
|
+
"ui.common.account.low_credits_dialog.radient_icon": "Radient icon",
|
|
32417
|
+
"ui.common.account.low_credits_dialog.radient_pass": "Radient Pass",
|
|
32418
|
+
"ui.common.account.low_credits_dialog.running_low_on_radient_credits": "Running low on Radient credits?",
|
|
32419
|
+
"ui.common.account.low_credits_dialog.unlock_the_full_power_of_local_operator_with": "Unlock the full power of Local Operator with",
|
|
32420
|
+
"ui.common.account.low_credits_dialog.you_can_also_reach_the_radient_console_from_settings_at_any_time": "You can also reach the Radient Console from Settings at any time.",
|
|
32421
|
+
"ui.common.account.radient_auth_buttons.connect_your_radient_account_to_use_radient_services": "Connect your Radient account to use Radient services.",
|
|
32422
|
+
"ui.common.account.radient_auth_buttons.loading_sign_in_options": "Loading sign-in options",
|
|
32423
|
+
"ui.common.account.radient_auth_buttons.radient_is_not_available_from_this_backend_s_provider_registry": "Radient is not available from this backend's provider registry.",
|
|
32424
|
+
"ui.common.account.radient_auth_buttons.sign_in_to_radient": "Sign in to Radient",
|
|
32425
|
+
"ui.common.account.radient_auth_buttons.signing_in_needs_a_newer_local_operator_backend_update_the_backen": "Signing in needs a newer Local Operator backend. Update the backend and restart the app."
|
|
32426
|
+
};
|
|
32427
|
+
const enUiCommonActions = {
|
|
32428
|
+
"ui.common.actions.cancel": "Cancel",
|
|
32429
|
+
"ui.common.actions.close": "Close",
|
|
32430
|
+
"ui.common.actions.copied": "Copied",
|
|
32431
|
+
"ui.common.actions.copy_failed": "Could not copy. Select and copy it manually.",
|
|
32432
|
+
"ui.common.actions.retry": "Retry",
|
|
32433
|
+
"ui.common.actions.retry_again": "Try again"
|
|
32434
|
+
};
|
|
32435
|
+
const enUiCommonConnection = {
|
|
32436
|
+
"ui.common.connection.backend_compatibility_banner.the_backend_update_could_not_start_retry_or_update_from_settings_": "The backend update could not start. Retry, or update from Settings, under Application updates.",
|
|
32437
|
+
"ui.common.connection.backend_compatibility_banner.update_backend": "Update backend",
|
|
32438
|
+
"ui.common.connection.backend_compatibility_banner.updating": "Updating",
|
|
32439
|
+
"ui.common.connection.connectivity_banner.a_connectivity_issue_has_been_detected": "A connectivity issue has been detected.",
|
|
32440
|
+
"ui.common.connection.connectivity_banner.dismiss": "dismiss",
|
|
32441
|
+
"ui.common.connection.connectivity_banner.dismiss_inline": "Dismiss",
|
|
32442
|
+
"ui.common.connection.connectivity_banner.this_app_s_updates_require": "This app's updates require",
|
|
32443
|
+
"ui.common.connection.connectivity_banner.you_are_offline": "You are offline. {detail} an internet connection.",
|
|
32444
|
+
"ui.common.connection.floating_alert.dismiss": "Dismiss",
|
|
32445
|
+
"ui.common.connection.provider.requires": "Your configured hosting provider ({provider}) requires"
|
|
32446
|
+
};
|
|
32447
|
+
const enUiCommonEditing = {
|
|
32448
|
+
"ui.common.editing.conflict": "This changed while you were editing",
|
|
32449
|
+
"ui.common.editing.keep_mine": "Keep mine",
|
|
32450
|
+
"ui.common.editing.use_theirs": "Use theirs"
|
|
32451
|
+
};
|
|
32452
|
+
const enUiCommonErrors = {
|
|
32453
|
+
"ui.common.errors.error_boundary.error_details": "Error details",
|
|
32454
|
+
"ui.common.errors.error_boundary.something_went_wrong": "Something went wrong",
|
|
32455
|
+
"ui.common.errors.error_boundary.stack_trace": "Stack trace",
|
|
32456
|
+
"ui.common.errors.error_boundary.the_application_encountered_an_error_try_again_or_contact_support": "The application encountered an error. Try again, or contact support if the problem persists."
|
|
32457
|
+
};
|
|
32458
|
+
const enUiCommonForms = {
|
|
32459
|
+
"ui.common.forms.autocomplete_field.cancel_editing": "Cancel editing {label}",
|
|
32460
|
+
"ui.common.forms.autocomplete_field.enter_value": "Enter value...",
|
|
32461
|
+
"ui.common.forms.autocomplete_field.save": "Save {label}",
|
|
32462
|
+
"ui.common.forms.autocomplete_field.save_changes": "Save changes",
|
|
32463
|
+
"ui.common.forms.autocomplete_field.saving": "Saving {label}",
|
|
32464
|
+
"ui.common.forms.compact_pagination.next_page": "Next page",
|
|
32465
|
+
"ui.common.forms.compact_pagination.previous_page": "Previous page",
|
|
32466
|
+
"ui.common.forms.editable_field.cancel_escape": "Cancel (Escape)",
|
|
32467
|
+
"ui.common.forms.editable_field.clear": "Clear",
|
|
32468
|
+
"ui.common.forms.editable_field.clear_field": "Clear field",
|
|
32469
|
+
"ui.common.forms.editable_field.clear_v2": "Clear {label}",
|
|
32470
|
+
"ui.common.forms.editable_field.clearing": "Clearing...",
|
|
32471
|
+
"ui.common.forms.editable_field.current_value": "Current value: {detail}.{detail2}",
|
|
32472
|
+
"ui.common.forms.editable_field.edit": "Edit",
|
|
32473
|
+
"ui.common.forms.editable_field.edit_v2": "Edit {label}",
|
|
32474
|
+
"ui.common.forms.editable_field.save_changes_enter": "Save changes (Enter)",
|
|
32475
|
+
"ui.common.forms.editable_field.saving": "Saving...",
|
|
32476
|
+
"ui.common.forms.field.click_to_edit": " Click to edit.",
|
|
32477
|
+
"ui.common.forms.pagination.position": "Page {page} of {count}",
|
|
32478
|
+
"ui.common.forms.panel_details.copied": "Copied",
|
|
32479
|
+
"ui.common.forms.panel_details.copy_details": "Copy details",
|
|
32480
|
+
"ui.common.forms.panel_details.details": "Details:",
|
|
32481
|
+
"ui.common.forms.searchable_select.clear_the": "Clear the {detail}",
|
|
32482
|
+
"ui.common.forms.searchable_select.clear_value": "Clear value",
|
|
32483
|
+
"ui.common.forms.searchable_select.no_matches": "No matches",
|
|
32484
|
+
"ui.common.forms.searchable_select.use": 'Use "{text}"',
|
|
32485
|
+
"ui.common.forms.select.unlisted_value": "Not in any listing; saved as typed."
|
|
32486
|
+
};
|
|
32487
|
+
const enUiCommonLoading = {
|
|
32488
|
+
"ui.common.loading.page": "Loading page"
|
|
32489
|
+
};
|
|
32490
|
+
const enUiCommonModels = {
|
|
32491
|
+
"ui.common.models.default": "Default",
|
|
32492
|
+
"ui.common.models.hosting_select.clear_hosting_provider_selection": "Clear hosting provider selection",
|
|
32493
|
+
"ui.common.models.hosting_select.custom_hosting_provider": "Custom hosting provider",
|
|
32494
|
+
"ui.common.models.hosting_select.detail": "{description} (Requires additional credentials)",
|
|
32495
|
+
"ui.common.models.hosting_select.hosting_provider": "Hosting provider",
|
|
32496
|
+
"ui.common.models.hosting_select.no_hosting_providers_available_sign_in_to_a_provider_or_add_a_pro": "No hosting providers available. Sign in to a provider, or add a provider's API key in Settings, under Providers.",
|
|
32497
|
+
"ui.common.models.hosting_select.saving_hosting_provider": "Saving hosting provider",
|
|
32498
|
+
"ui.common.models.hosting_select.select_a_hosting_provider": "Select a hosting provider...",
|
|
32499
|
+
"ui.common.models.hosting_select.select_the_ai_provider_that_you_want_to_use_each_provider_has_dif": "Select the AI provider that you want to use. Each provider has different models available. Recommended: Radient",
|
|
32500
|
+
"ui.common.models.model_select.auto_recommended": "Auto (recommended)",
|
|
32501
|
+
"ui.common.models.model_select.clear_model_selection": "Clear model selection",
|
|
32502
|
+
"ui.common.models.model_select.custom_model": "Custom model",
|
|
32503
|
+
"ui.common.models.model_select.general": "General",
|
|
32504
|
+
"ui.common.models.model_select.loading_models": "Loading models",
|
|
32505
|
+
"ui.common.models.model_select.model": "Model",
|
|
32506
|
+
"ui.common.models.model_select.no_models_available": "No models available",
|
|
32507
|
+
"ui.common.models.model_select.no_models_available_for_selected_provider": "No models available for selected provider.",
|
|
32508
|
+
"ui.common.models.model_select.no_models_for": "No models for {name}",
|
|
32509
|
+
"ui.common.models.model_select.other_models": "Other models",
|
|
32510
|
+
"ui.common.models.model_select.recommended": "Recommended",
|
|
32511
|
+
"ui.common.models.model_select.recommended_based_on_community_usage_and_feedback": "Recommended based on community usage and feedback",
|
|
32512
|
+
"ui.common.models.model_select.select_a_hosting_provider_first": "Select a hosting provider first.",
|
|
32513
|
+
"ui.common.models.model_select.select_a_model": "Select a model...",
|
|
32514
|
+
"ui.common.models.model_select.select_the_ai_model_that_you_want_to_use_each_model_has_different": "Select the AI model that you want to use. Each model has different capabilities and costs. Recommended: Automatic"
|
|
32515
|
+
};
|
|
32516
|
+
const enUiCommonUpdates = {
|
|
32517
|
+
"ui.common.updates.check_for_updates_button.check_for_updates": "Check for updates",
|
|
32518
|
+
"ui.common.updates.check_for_updates_button.checking": "Checking...",
|
|
32519
|
+
"ui.common.updates.check_for_updates_button.detail": "{attempts, plural, one { ({attemptsText} attempt)} other { ({attemptsText} attempts)}}",
|
|
32520
|
+
"ui.common.updates.check_for_updates_button.detected": "Detected",
|
|
32521
|
+
"ui.common.updates.check_for_updates_button.didn_t_finish": " didn't finish",
|
|
32522
|
+
"ui.common.updates.check_for_updates_button.download_a_fresh_copy": "Download a fresh copy",
|
|
32523
|
+
"ui.common.updates.check_for_updates_button.still_checking_a_slow_or_stalled_connection_can_hold_this_for_abo": "Still checking. A slow or stalled connection can hold this for about a minute and a half - the app stops waiting on its own.",
|
|
32524
|
+
"ui.common.updates.check_for_updates_button.the_last_update_to_version": "The last update to version ",
|
|
32525
|
+
"ui.common.updates.check_for_updates_button.the_server_is_installed_outside_the_app_so_use_the_tool_you_insta": "The server is installed outside the app, so use the tool you installed it with - uv, pipx or pip.",
|
|
32526
|
+
"ui.common.updates.check_for_updates_button.updates_are_not_checked_in_development_mode_this_feature_is_only_": "Updates are not checked in development mode. This feature is only available in production builds.",
|
|
32527
|
+
"ui.common.updates.check_for_updates_button.version": " Version {liveversion} is running.",
|
|
32528
|
+
"ui.common.updates.completion.sessions": "{count, plural, one {{countText} session is still running the old build; it will move onto the new build when it next stops or goes idle.} other {{countText} sessions are still running the old build; they will move onto the new build when they next stop or go idle.}}",
|
|
32529
|
+
"ui.common.updates.restart.outage_bound": "usually a few seconds, up to half a minute",
|
|
32530
|
+
"ui.common.updates.server.on_version": " on {version}",
|
|
32531
|
+
"ui.common.updates.update_error_alert.checking": "Checking...",
|
|
32532
|
+
"ui.common.updates.update_foot_icon.available": " available",
|
|
32533
|
+
"ui.common.updates.update_foot_icon.show_the_update_notice": "Show the update notice.",
|
|
32534
|
+
"ui.common.updates.update_notification.a_newer_build": "a newer build",
|
|
32535
|
+
"ui.common.updates.update_notification.a_newer_version": "a newer version",
|
|
32536
|
+
"ui.common.updates.update_notification.an_older_build": "an older build",
|
|
32537
|
+
"ui.common.updates.update_notification.an_update_you_started_before_quitting_finished_while_local": "An update you started before quitting finished while Local Operator was closed, so the install is now at {detail}. Nothing restarted the server that was serving you{detail2}.",
|
|
32538
|
+
"ui.common.updates.update_notification.check_for_updates": "Check for updates",
|
|
32539
|
+
"ui.common.updates.update_notification.checking": "Checking...",
|
|
32540
|
+
"ui.common.updates.update_notification.checking_for_updates": "Checking for updates",
|
|
32541
|
+
"ui.common.updates.update_notification.close_app_update_details": "Close app update details",
|
|
32542
|
+
"ui.common.updates.update_notification.close_release_details": "Close release details",
|
|
32543
|
+
"ui.common.updates.update_notification.close_server_update_details": "Close server update details",
|
|
32544
|
+
"ui.common.updates.update_notification.copied": "Copied",
|
|
32545
|
+
"ui.common.updates.update_notification.copy_command": "Copy command",
|
|
32546
|
+
"ui.common.updates.update_notification.copy_output": "Copy output",
|
|
32547
|
+
"ui.common.updates.update_notification.detail_v2": "{detail} of {detail2} bytes",
|
|
32548
|
+
"ui.common.updates.update_notification.download_update": "Download update",
|
|
32549
|
+
"ui.common.updates.update_notification.downloading": "Downloading: ",
|
|
32550
|
+
"ui.common.updates.update_notification.error_downloading_update": "Error downloading update: {detail}",
|
|
32551
|
+
"ui.common.updates.update_notification.error_quitting_for_the_update": "Error quitting for the update: {detail}",
|
|
32552
|
+
"ui.common.updates.update_notification.error_starting_the_update": "Error starting the update: {detail}",
|
|
32553
|
+
"ui.common.updates.update_notification.has_been_downloaded_you_are_currently_using_version": " has been downloaded. You are currently using version ",
|
|
32554
|
+
"ui.common.updates.update_notification.has_failed_to_install": " has failed to install",
|
|
32555
|
+
"ui.common.updates.update_notification.install_now": "Install now",
|
|
32556
|
+
"ui.common.updates.update_notification.installer_output": "Installer output:",
|
|
32557
|
+
"ui.common.updates.update_notification.installing_closes_the_app_while_the_update_is_verified_and_put_in": "Installing closes the app while the update is verified and put in place — usually a few seconds, occasionally a few minutes. Don't reopen it until it starts by itself. Opening it while the update is installing cancels the install.",
|
|
32558
|
+
"ui.common.updates.update_notification.is_available_you_are_currently_using_version": " is available. You are currently using version ",
|
|
32559
|
+
"ui.common.updates.update_notification.keep_using_local_operator_cancels_the_install": "Keep using Local Operator (cancels the install)",
|
|
32560
|
+
"ui.common.updates.update_notification.not_enough_disk_space_to_update": "Not enough disk space to update",
|
|
32561
|
+
"ui.common.updates.update_notification.nothing_is_serving_this_conversation_until_that_server_is_running": "Nothing is serving this conversation until that server is running again.",
|
|
32562
|
+
"ui.common.updates.update_notification.of": " of",
|
|
32563
|
+
"ui.common.updates.update_notification.open_download_page": "Open download page",
|
|
32564
|
+
"ui.common.updates.update_notification.please_wait_while_the_server_is_being_updated_the_server_will_tem": "Please wait while the server is being updated. The server will temporarily go offline while it restarts to apply the update. The update can't be interrupted once it has started.",
|
|
32565
|
+
"ui.common.updates.update_notification.please_wait_while_the_server_is_being_updated_the_update_can_t_be": "Please wait while the server is being updated. The update can't be interrupted once it has started.",
|
|
32566
|
+
"ui.common.updates.update_notification.please_wait_while_we_check_for_available_updates": "Please wait while we check for available updates...",
|
|
32567
|
+
"ui.common.updates.update_notification.quit_and_let_the_update_finish": "Quit and let the update finish",
|
|
32568
|
+
"ui.common.updates.update_notification.release_notes": "Release notes:",
|
|
32569
|
+
"ui.common.updates.update_notification.release_notes_caption": "Release notes: ",
|
|
32570
|
+
"ui.common.updates.update_notification.restart_local_operator_and_the_server_comes_back_on_the_new_build": "Restart Local Operator and the server comes back on the new build.",
|
|
32571
|
+
"ui.common.updates.update_notification.restart_the_server": "Restart the server",
|
|
32572
|
+
"ui.common.updates.update_notification.restarting_puts_the_server_offline_while_it_comes_back": "Restarting puts the server offline while it comes back - {restartoutagebound}. Nothing in flight is cut off, and sessions that are still working move onto the new build when they next stop or go idle.",
|
|
32573
|
+
"ui.common.updates.update_notification.reveal_update_log": "Reveal update log",
|
|
32574
|
+
"ui.common.updates.update_notification.rolling_the_server_onto": "Rolling the server onto {detail}. Nothing in flight is cut off - the turns running on this machine keep running. The update can't be interrupted once it has started.",
|
|
32575
|
+
"ui.common.updates.update_notification.run_this_in_a_terminal_then_check_for_updates_again_to_pick_up_th": "Run this in a terminal, then check for updates again to pick up the new server version.",
|
|
32576
|
+
"ui.common.updates.update_notification.run_this_in_a_terminal_this_install_was_built_from_this_machine_s": "Run this in a terminal. This install was built from this machine's checkout, so `lop update` installs the published release over it - and if this machine has `lop-update`, the script that rebuilds this install from the checkout, run that afterwards to keep following it.",
|
|
32577
|
+
"ui.common.updates.update_notification.see_release_notes_on_github": "See release notes on GitHub",
|
|
32578
|
+
"ui.common.updates.update_notification.server_update_available": "Server update available",
|
|
32579
|
+
"ui.common.updates.update_notification.server_update_completed_successfully": "Server update completed successfully",
|
|
32580
|
+
"ui.common.updates.update_notification.server_version": "Server version {latestversion} is available. The install on this machine is at {install}, and the server you are using is running {running} until it restarts.",
|
|
32581
|
+
"ui.common.updates.update_notification.server_version_v2": "Server version {latestversion} is available. You are currently using version {shown}.",
|
|
32582
|
+
"ui.common.updates.update_notification.server_version_v3": "Server version {latestversion} is available.",
|
|
32583
|
+
"ui.common.updates.update_notification.sessions_that_are_still_running_the_old_build_will_move_onto_the_": "Sessions that are still running the old build will move onto the new build when they next stop or go idle.",
|
|
32584
|
+
"ui.common.updates.update_notification.still_checking_a_slow_or_stalled_connection_can_hold_this_for_abo": "Still checking. A slow or stalled connection can hold this for about a minute and a half - the app stops waiting on its own.",
|
|
32585
|
+
"ui.common.updates.update_notification.still_downloading_a_download_that_stops_making_progress_is_cancel": "Still downloading. A download that stops making progress is cancelled after about 90 seconds.",
|
|
32586
|
+
"ui.common.updates.update_notification.still_installing_a_slow_connection_or_a_cold_cache_can_hold_this_": "Still installing. A slow connection or a cold cache can hold this longer - the app stops waiting on its own.",
|
|
32587
|
+
"ui.common.updates.update_notification.the_app_cannot_update_this_server": "The app cannot update this server",
|
|
32588
|
+
"ui.common.updates.update_notification.the_app_updates_this_install_and_then_restarts_the_server_it_star": "The app updates this install and then restarts the server it started, so nothing in flight is cut off. Sessions that are still working move onto the new build when they next stop or go idle.",
|
|
32589
|
+
"ui.common.updates.update_notification.the_app_updates_this_install_itself_the_server_you_are_using_was_": "The app updates this install itself. The server you are using was started outside Local Operator, so it keeps running the old build until it restarts, and nothing in flight is dropped.",
|
|
32590
|
+
"ui.common.updates.update_notification.the_app_waits_up_to_ten_minutes_for_them_then_stops_rather_than_c": "The app waits up to ten minutes for them, then stops rather than cutting a turn short, so nothing in flight is cut off",
|
|
32591
|
+
"ui.common.updates.update_notification.the_build_it_loaded": "the build it loaded",
|
|
32592
|
+
"ui.common.updates.update_notification.the_install_is_now_at": "The install is now at {detail}, and the server serving this app did not answer after it was restarted.",
|
|
32593
|
+
"ui.common.updates.update_notification.the_install_is_now_at_v2": "The install is now at {detail}, but the server serving this app is still running {detail2}. That restart did not take.",
|
|
32594
|
+
"ui.common.updates.update_notification.the_install_is_now_at_v3": "The install is now at {detail}, but the server serving this app was started outside Local Operator, so it was left running{detail2}.",
|
|
32595
|
+
"ui.common.updates.update_notification.the_last_update_didn_t_finish": "The last update didn't finish",
|
|
32596
|
+
"ui.common.updates.update_notification.the_new_build_has_landed_nothing_in_flight_was_cut_off_the_turns_": "The new build has landed. Nothing in flight was cut off - the turns running on this machine kept running - and the server is restarting onto the new build now, so it is offline while it comes back: usually a few seconds, up to half a minute. After that the app starts a runtime again for any session the restart left without one, which can take up to a minute.",
|
|
32597
|
+
"ui.common.updates.update_notification.the_new_version": "the new version",
|
|
32598
|
+
"ui.common.updates.update_notification.the_server_did_not_come_back_after_the_restart": "The server did not come back after the restart",
|
|
32599
|
+
"ui.common.updates.update_notification.the_server_is_already_offline_so_the_only_cost_left_is_the": "The server is already offline, so the only cost left is the wait for it to come back - {restartoutagebound}.",
|
|
32600
|
+
"ui.common.updates.update_notification.the_server_is_installed_outside_the_app_so_use_the_tool_you_insta": "The server is installed outside the app, so use the tool you installed it with - uv, pipx or pip:",
|
|
32601
|
+
"ui.common.updates.update_notification.the_server_is_on_an_older_build_than_the_install": "The server is on an older build than the install",
|
|
32602
|
+
"ui.common.updates.update_notification.the_server_needs_updating_by_hand": "The server needs updating by hand",
|
|
32603
|
+
"ui.common.updates.update_notification.the_server_serving_this_app_was_started_outside_local_operator_wh": "The server serving this app was started outside Local Operator, which does not restart a server it did not start: stop it and start Local Operator again, or restart whatever started it, and it comes back on the new build.",
|
|
32604
|
+
"ui.common.updates.update_notification.the_server_update_could_not_be_started": "The server update could not be started: {detail}",
|
|
32605
|
+
"ui.common.updates.update_notification.the_server_update_did_not_complete": "The server update did not complete.",
|
|
32606
|
+
"ui.common.updates.update_notification.the_server_update_didn_t_finish": "The server update didn't finish",
|
|
32607
|
+
"ui.common.updates.update_notification.the_server_update_to": "The server update to {targetversion} did not complete.",
|
|
32608
|
+
"ui.common.updates.update_notification.the_update_can_t_be_launched": "The update can't be launched",
|
|
32609
|
+
"ui.common.updates.update_notification.the_update_couldn_t_be_verified": "The update couldn't be verified",
|
|
32610
|
+
"ui.common.updates.update_notification.the_update_didn_t_start": "The update didn't start",
|
|
32611
|
+
"ui.common.updates.update_notification.the_update_is_still_installing": "The update is still installing",
|
|
32612
|
+
"ui.common.updates.update_notification.the_update_was_cancelled": "The update was cancelled",
|
|
32613
|
+
"ui.common.updates.update_notification.the_update_wasn_t_installed": "The update wasn't installed",
|
|
32614
|
+
"ui.common.updates.update_notification.then_check_for_updates_again_to_pick_up_the_new_server_version": "Then check for updates again to pick up the new server version.",
|
|
32615
|
+
"ui.common.updates.update_notification.this_app_can_t_update_itself": "This app can't update itself",
|
|
32616
|
+
"ui.common.updates.update_notification.this_app_started_that_server_so_it_can_restart_it": "This app started that server, so it can restart it. {restartcostsentenceserverdown}",
|
|
32617
|
+
"ui.common.updates.update_notification.this_app_started_that_server_so_it_can_restart_it_onto_the": "This app started that server, so it can restart it onto the new build now. {restartcostsentence}",
|
|
32618
|
+
"ui.common.updates.update_notification.this_is_also_recorded_in_settings_under_application_updates": "This is also recorded in Settings, under Application updates.",
|
|
32619
|
+
"ui.common.updates.update_notification.this_machine_s_install_is": "This machine's install is {detail}, and the server serving this app is still running {detail2}.",
|
|
32620
|
+
"ui.common.updates.update_notification.this_machine_s_install_is_up_to_date": "This machine's install is up to date{detail}, and the server serving this app is still running {detail2}.",
|
|
32621
|
+
"ui.common.updates.update_notification.this_server_follows_this_machine_s_checkout_so_there_is_no_comman": "This server follows this machine's checkout, so there is no command to run here.",
|
|
32622
|
+
"ui.common.updates.update_notification.times_on_this_machine": " times on this machine.",
|
|
32623
|
+
"ui.common.updates.update_notification.to_update_now_run_this_yourself_in_a_terminal": "To update now, run this yourself in a terminal:",
|
|
32624
|
+
"ui.common.updates.update_notification.understood": "Understood",
|
|
32625
|
+
"ui.common.updates.update_notification.update_available": "Update available",
|
|
32626
|
+
"ui.common.updates.update_notification.update_downloaded_and_ready_to_install": "Update downloaded and ready to install",
|
|
32627
|
+
"ui.common.updates.update_notification.update_later": "Update later",
|
|
32628
|
+
"ui.common.updates.update_notification.update_ready_to_install": "Update ready to install",
|
|
32629
|
+
"ui.common.updates.update_notification.update_server": "Update server",
|
|
32630
|
+
"ui.common.updates.update_notification.updating": "Updating...",
|
|
32631
|
+
"ui.common.updates.update_notification.updating_server": "Updating server",
|
|
32632
|
+
"ui.common.updates.update_notification.updating_the_server_will_improve_ai_functionality_improve_securit": "Updating the server will improve AI functionality, improve security, and fix bugs.",
|
|
32633
|
+
"ui.common.updates.update_notification.version": "Version ",
|
|
32634
|
+
"ui.common.updates.update_notification.view_full_release_notes": "View full release notes",
|
|
32635
|
+
"ui.common.updates.update_notification.view_full_release_notes_for": "View full release notes for ",
|
|
32636
|
+
"ui.common.updates.update_notification.waiting_for_the_turns_running_on_this_machine_to_finish": "Waiting for the turns running on this machine to finish. {restartdrainbound} - and the update can't be interrupted while it waits.",
|
|
32637
|
+
"ui.common.updates.update_notification.which_still_reports": ", which still reports {runningversion}",
|
|
32638
|
+
"ui.common.updates.update_quiet_indicator.application_update": "Application update",
|
|
32639
|
+
"ui.common.updates.update_quiet_indicator.dismiss_update_notice": "Dismiss update notice",
|
|
32640
|
+
"ui.common.updates.update_quiet_indicator.server_update": "Server update",
|
|
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"
|
|
32644
|
+
};
|
|
31731
32645
|
const enUiConsole = {
|
|
31732
|
-
"ui.console.capacity.summary": "{live, number} live of {limit, number} in the app",
|
|
31733
|
-
"ui.console.capacity.summary_compact": "{live, number}/{limit, number} · {archived, number} kept",
|
|
31734
|
-
"ui.console.capacity.summary_compact_bare": "{live, number}/{limit, number}",
|
|
31735
|
-
"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",
|
|
31736
32650
|
"ui.console.capacity.full": " · full",
|
|
31737
32651
|
"ui.console.capacity.help": "App-wide counts, across every conversation. Kept history does not use a process slot.",
|
|
31738
|
-
"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.",
|
|
31739
32653
|
"ui.console.cleanup.label": "Clear finished agent terminals",
|
|
31740
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.",
|
|
31741
|
-
"ui.console.cleanup.result": "Cleared {released, plural, one {
|
|
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.}}",
|
|
31742
32656
|
"ui.console.cleanup.result_none": "Nothing to clear — no finished agent terminals in this conversation.",
|
|
31743
32657
|
"ui.console.dismiss_history": "Clear terminal and delete retained output",
|
|
31744
32658
|
"ui.console.dismiss.body": "Clearing this terminal deletes its retained output from disk, so a relaunch cannot restore it.",
|
|
@@ -31777,9 +32691,9 @@ const enUiConsole = {
|
|
|
31777
32691
|
"ui.console.tab.ended": "ended",
|
|
31778
32692
|
"ui.console.tab.agent_opened": "An agent opened this console",
|
|
31779
32693
|
"ui.console.tab.agent_typed": "An agent has typed into this console",
|
|
31780
|
-
"ui.console.tab.close_label": "Close {title}, tab {index, number} of {total, number}",
|
|
31781
|
-
"ui.console.tab.clear_label": "Clear {title}, tab {index, number} of {total, number}",
|
|
31782
|
-
"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",
|
|
31783
32697
|
"ui.console.secure_toggle.stop": "Stop secure input",
|
|
31784
32698
|
"ui.console.secure_toggle.start": "Secure input",
|
|
31785
32699
|
"ui.console.secure_toggle.start_tooltip": "Secure input: stop recording this terminal",
|
|
@@ -31787,6 +32701,37 @@ const enUiConsole = {
|
|
|
31787
32701
|
"ui.console.terminal.prompt_label": "Terminal input",
|
|
31788
32702
|
"ui.console.terminal.too_much_output": "Too much output to announce, navigate to rows manually to read"
|
|
31789
32703
|
};
|
|
32704
|
+
const enUiHubComments = {
|
|
32705
|
+
"ui.hub.comments.delete.confirm": "Are you sure you want to delete this comment?",
|
|
32706
|
+
"ui.hub.comments.heading": "Comments",
|
|
32707
|
+
"ui.hub.comments.form.label": "Leave a comment",
|
|
32708
|
+
"ui.hub.comments.form.placeholder": "Share your thoughts...",
|
|
32709
|
+
"ui.hub.comments.form.posting": "Posting comment",
|
|
32710
|
+
"ui.hub.comments.form.submit": "Post comment",
|
|
32711
|
+
"ui.hub.comments.form.sign_in": "Sign in to leave comments.",
|
|
32712
|
+
"ui.hub.comments.empty": "No comments yet. Yours would be the first.",
|
|
32713
|
+
"ui.hub.comments.edit.label": "Edit comment",
|
|
32714
|
+
"ui.hub.comments.edit.cancel": "Cancel",
|
|
32715
|
+
"ui.hub.comments.edit.saving": "Saving comment",
|
|
32716
|
+
"ui.hub.comments.edit.save": "Save",
|
|
32717
|
+
"ui.hub.comments.author.unknown": "Anonymous",
|
|
32718
|
+
"ui.hub.comments.delete.label": "Delete comment",
|
|
32719
|
+
"ui.hub.comments.load_error": "Failed to load comments: {reason}",
|
|
32720
|
+
"ui.hub.comments.mutation.unauthorized": "Authentication required.",
|
|
32721
|
+
"ui.hub.comments.mutation.posted": "Comment posted",
|
|
32722
|
+
"ui.hub.comments.mutation.updated": "Comment updated",
|
|
32723
|
+
"ui.hub.comments.mutation.deleted": "Comment deleted",
|
|
32724
|
+
"ui.hub.comments.mutation.post_failed": "Failed to post comment: {reason}",
|
|
32725
|
+
"ui.hub.comments.mutation.update_failed": "Failed to update comment: {reason}",
|
|
32726
|
+
"ui.hub.comments.mutation.delete_failed": "Failed to delete comment: {reason}",
|
|
32727
|
+
"ui.hub.comments.age.seconds": "{count, plural, one {{count} second ago} other {{count} seconds ago}}",
|
|
32728
|
+
"ui.hub.comments.age.minutes": "{count, plural, one {{count} minute ago} other {{count} minutes ago}}",
|
|
32729
|
+
"ui.hub.comments.age.hours": "{count, plural, one {{count} hour ago} other {{count} hours ago}}",
|
|
32730
|
+
"ui.hub.comments.age.days": "{count, plural, one {{count} day ago} other {{count} days ago}}",
|
|
32731
|
+
"ui.hub.comments.age.months": "{count, plural, one {{count} month ago} other {{count} months ago}}",
|
|
32732
|
+
"ui.hub.comments.age.years": "{count, plural, one {{count} year ago} other {{count} years ago}}",
|
|
32733
|
+
"ui.hub.comments.age.fallback": "{duration} ago"
|
|
32734
|
+
};
|
|
31790
32735
|
const enUiHub = {
|
|
31791
32736
|
"ui.hub.links.title": "Hub links",
|
|
31792
32737
|
"ui.hub.links.loading": "Loading hub links…",
|
|
@@ -31864,7 +32809,7 @@ const enUiHub = {
|
|
|
31864
32809
|
"ui.hub.skills.publish_title": "Publish a skill",
|
|
31865
32810
|
"ui.hub.skills.select_authored": "Authored skill",
|
|
31866
32811
|
"ui.hub.skills.revision": "Remote revision: {revision}",
|
|
31867
|
-
"ui.hub.skills.file_count": "{count, plural, one {
|
|
32812
|
+
"ui.hub.skills.file_count": "{count, plural, one {{count, number, ::group-off} file included} other {{count, number, ::group-off} files included}}",
|
|
31868
32813
|
"ui.hub.skills.files": "Files included",
|
|
31869
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.",
|
|
31870
32815
|
"ui.hub.skills.local_exists": "That local alias is already used. Choose another.",
|
|
@@ -31883,7 +32828,7 @@ const enUiHub = {
|
|
|
31883
32828
|
"ui.hub.status.unknown": "Status unavailable.",
|
|
31884
32829
|
"ui.hub.status.next_retry": "Next retry: {time}",
|
|
31885
32830
|
"ui.hub.status.last_checked": "Last checked: {time}",
|
|
31886
|
-
"ui.hub.status.attempts": "{count, plural, one {
|
|
32831
|
+
"ui.hub.status.attempts": "{count, plural, one {{count, number, ::group-off} attempt} other {{count, number, ::group-off} attempts}}",
|
|
31887
32832
|
"ui.hub.status.receipt": "Operation receipt: {operation}",
|
|
31888
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.",
|
|
31889
32834
|
"ui.hub.status.backend_checking": "Checking the Local Operator backend before allowing Hub changes. Browsing is still available.",
|
|
@@ -31927,11 +32872,11 @@ const enUiHub = {
|
|
|
31927
32872
|
"ui.hub.status.transport_error": "Couldn't reach the hub. A retry is scheduled.",
|
|
31928
32873
|
"ui.hub.links.scope_placeholder": "Choose a scope…",
|
|
31929
32874
|
"ui.hub.links.scope_required": "Choose a scope to continue",
|
|
31930
|
-
"ui.hub.links.sources_count": "{count, plural, one {
|
|
31931
|
-
"ui.hub.links.links_count": "{count, plural, one {
|
|
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}}",
|
|
31932
32877
|
"ui.hub.links.unresolved_mark": "{item}: source not confirmed. Confirm the source.",
|
|
31933
32878
|
"ui.hub.links.mixed": "Mixed",
|
|
31934
|
-
"ui.hub.links.aggregate_mark": "{count, plural, one {
|
|
32879
|
+
"ui.hub.links.aggregate_mark": "{count, plural, one {{count, number, ::group-off} link} other {{count, number, ::group-off} links}}; {state}",
|
|
31935
32880
|
"ui.hub.links.mark_healthy": "up to date",
|
|
31936
32881
|
"ui.hub.links.mark_review": "needs review",
|
|
31937
32882
|
"ui.hub.links.mark_failed": "failed",
|
|
@@ -31939,7 +32884,274 @@ const enUiHub = {
|
|
|
31939
32884
|
"ui.hub.links.mark_busy": "working",
|
|
31940
32885
|
"ui.hub.links.mark_applied": "applied"
|
|
31941
32886
|
};
|
|
31942
|
-
const
|
|
32887
|
+
const enUiHubTaxonomy = {
|
|
32888
|
+
"ui.hub.taxonomy.category.investment": "Investment",
|
|
32889
|
+
"ui.hub.taxonomy.category.accounting": "Accounting",
|
|
32890
|
+
"ui.hub.taxonomy.category.healthcare": "Healthcare",
|
|
32891
|
+
"ui.hub.taxonomy.category.legal": "Legal",
|
|
32892
|
+
"ui.hub.taxonomy.category.software": "Software",
|
|
32893
|
+
"ui.hub.taxonomy.category.security": "Security",
|
|
32894
|
+
"ui.hub.taxonomy.category.role_play": "Role play",
|
|
32895
|
+
"ui.hub.taxonomy.category.personal_assistance": "Personal assistance",
|
|
32896
|
+
"ui.hub.taxonomy.category.education": "Education",
|
|
32897
|
+
"ui.hub.taxonomy.category.marketing": "Marketing",
|
|
32898
|
+
"ui.hub.taxonomy.category.sales": "Sales",
|
|
32899
|
+
"ui.hub.taxonomy.category.research": "Research",
|
|
32900
|
+
"ui.hub.taxonomy.category.analysis": "Analysis",
|
|
32901
|
+
"ui.hub.taxonomy.category.management": "Management",
|
|
32902
|
+
"ui.hub.taxonomy.category.social_media": "Social media",
|
|
32903
|
+
"ui.hub.taxonomy.category.other": "Other",
|
|
32904
|
+
"ui.hub.taxonomy.heading": "Categories",
|
|
32905
|
+
"ui.hub.taxonomy.all": "All categories",
|
|
32906
|
+
"ui.hub.taxonomy.origin.named": "Shared with {name}, not the public hub",
|
|
32907
|
+
"ui.hub.taxonomy.origin.unnamed": "Shared with an organization, not the public hub",
|
|
32908
|
+
"ui.hub.taxonomy.origin.organization": "Organization"
|
|
32909
|
+
};
|
|
32910
|
+
const enUiInstaller = {
|
|
32911
|
+
"ui.installer.expectation": "This usually takes less than a minute.",
|
|
32912
|
+
"ui.installer.installer_panel.cancel_setup": "Cancel setup",
|
|
32913
|
+
"ui.installer.installer_panel.getting_started": "Getting started.",
|
|
32914
|
+
"ui.installer.installer_panel.local_operator": "Local Operator",
|
|
32915
|
+
"ui.installer.installer_panel.quit": "Quit",
|
|
32916
|
+
"ui.installer.installer_panel.setup_complete": "Setup complete.",
|
|
32917
|
+
"ui.installer.installer_panel.setup_keeps_everything_it_installs_in_its_own_folder_nothing_of_y": "Setup keeps everything it installs in its own folder; nothing of yours was touched.",
|
|
32918
|
+
"ui.installer.installer_panel.you_can_minimize_this_window_and_keep_working_closing_it_stops_se": "You can minimize this window and keep working. Closing it stops setup.",
|
|
32919
|
+
"ui.installer.phase.detail.components": "Downloading the packages Local Operator runs on.",
|
|
32920
|
+
"ui.installer.phase.detail.environment": "Making Local Operator its own private folder nothing else touches.",
|
|
32921
|
+
"ui.installer.phase.detail.python": "Finding the copy of Python Local Operator runs on.",
|
|
32922
|
+
"ui.installer.phase.detail.verify": "Starting Local Operator once to check it comes up.",
|
|
32923
|
+
"ui.installer.phase.label.components": "Downloading what it needs",
|
|
32924
|
+
"ui.installer.phase.label.environment": "Setting up Local Operator",
|
|
32925
|
+
"ui.installer.phase.label.python": "Getting ready",
|
|
32926
|
+
"ui.installer.phase.label.verify": "Starting it up",
|
|
32927
|
+
"ui.installer.status.elapsed": "{step} · {elapsed} elapsed · {eta}",
|
|
32928
|
+
"ui.installer.status.step": "Step {step} of {total}"
|
|
32929
|
+
};
|
|
32930
|
+
const enUiMesh = {
|
|
32931
|
+
"ui.mesh.mesh_actions.copy_notice": "A copy is made on the destination with a new id, and {keeper} its own. The copy can be erased again from the session list.",
|
|
32932
|
+
"ui.mesh.mesh_actions.the_other_device_keeps": "the other device keeps",
|
|
32933
|
+
"ui.mesh.mesh_actions.this_device_keeps": "this device keeps",
|
|
32934
|
+
"ui.mesh.mesh_actions.which_operation": "Which operation",
|
|
32935
|
+
"ui.mesh.mesh_actions.the_original_stays_where_it_is": "the original stays where it is",
|
|
32936
|
+
"ui.mesh.mesh_actions.the_copy_here_is_deleted_once_it": "the copy here is deleted once it arrives",
|
|
32937
|
+
"ui.mesh.mesh_actions.it_is_open_on_the_other_end": "It is open on the other end, and the copy does not interrupt it.",
|
|
32938
|
+
"ui.mesh.mesh_actions.it_is_open_elsewhere_right_now_whatever": "It is open elsewhere right now: whatever that runtime is holding is not carried across.",
|
|
32939
|
+
"ui.mesh.mesh_actions.cancel": "Cancel",
|
|
32940
|
+
"ui.mesh.mesh_actions.invite_to_a_network": "Invite to a network…",
|
|
32941
|
+
"ui.mesh.mesh_actions.admission_is_two_sided_so_this_mints": "Admission is two-sided, so this mints a single-use token instead of adding anything: ",
|
|
32942
|
+
"ui.mesh.mesh_actions.proves_the_short_authentication_string_when_it": "proves the short authentication string when it redeems the token, and only then does it appear as a member.",
|
|
32943
|
+
"ui.mesh.mesh_actions.invited_the_device_appears_once_it_redeems": "Invited — the device appears once it redeems this.",
|
|
32944
|
+
"ui.mesh.mesh_actions.the_token_was_written_here_and_this": "The token was written here, and this app never reads it:",
|
|
32945
|
+
"ui.mesh.mesh_actions.the_route_did_not_name_a_path": "(the route did not name a path)",
|
|
32946
|
+
"ui.mesh.mesh_actions.network_to_invite_it_to": "Network to invite it to",
|
|
32947
|
+
"ui.mesh.mesh_actions.inviting_to": "Inviting to ",
|
|
32948
|
+
"ui.mesh.mesh_actions.role_the_device_will_have": "Role the device will have",
|
|
32949
|
+
"ui.mesh.mesh_actions.read_sees_sessions_drive_may_ask_this": "read sees sessions, drive may ask this device for one, admin may also change the membership.",
|
|
32950
|
+
"ui.mesh.mesh_actions.close": "Close",
|
|
32951
|
+
"ui.mesh.mesh_actions.mint_the_token": "Mint the token",
|
|
32952
|
+
"ui.mesh.mesh_actions.remove": "Remove ",
|
|
32953
|
+
"ui.mesh.mesh_actions.from": "from ",
|
|
32954
|
+
"ui.mesh.mesh_actions.every_device_in_the_network_is_rekeyed": "Every device in the network is rekeyed and ",
|
|
32955
|
+
"ui.mesh.mesh_actions.is_locked_out_on_its_next_handshake": "is locked out on its next handshake. A removed device id is never admitted again.",
|
|
32956
|
+
"ui.mesh.mesh_actions.removed_the_membership_epoch_is_now": "Removed. The membership epoch is now ",
|
|
32957
|
+
"ui.mesh.mesh_actions.type_the_network_s_name_to_confirm": "Type the network's name to confirm: ",
|
|
32958
|
+
"ui.mesh.mesh_actions.remove_the_device": "Remove the device",
|
|
32959
|
+
"ui.mesh.mesh_actions.wait_for_the_turn_to_finish": "Wait for the turn to finish",
|
|
32960
|
+
"ui.mesh.mesh_actions.check_again": "Check again",
|
|
32961
|
+
"ui.mesh.mesh_actions.dismiss": "Dismiss",
|
|
32962
|
+
"ui.mesh.mesh_approvals_tray.abandon": "Abandon",
|
|
32963
|
+
"ui.mesh.mesh_approvals_tray.stop": "Stop",
|
|
32964
|
+
"ui.mesh.mesh_approvals_tray.signing": "Signing",
|
|
32965
|
+
"ui.mesh.mesh_approvals_tray.approving_signs_with_this_machine_s_operator": "Approving signs with this machine's operator key; the system may ask for it.",
|
|
32966
|
+
"ui.mesh.mesh_approvals_tray.next": "Next",
|
|
32967
|
+
"ui.mesh.mesh_approvals_tray.an_agent_runs_the_install_and_connect": "An agent runs the install and connect.",
|
|
32968
|
+
"ui.mesh.mesh_approvals_tray.stopping_now_denies_the_request_nothing_has": "Stopping now denies the request; nothing has run yet.",
|
|
32969
|
+
"ui.mesh.mesh_approvals_tray.stopping_now_denies_the_request_the_runner": "Stopping now denies the request; the runner stops at its next step.",
|
|
32970
|
+
"ui.mesh.mesh_approvals_tray.after_a_stop": "After a stop",
|
|
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.",
|
|
32972
|
+
"ui.mesh.mesh_approvals_tray.approvals": "Approvals",
|
|
32973
|
+
"ui.mesh.mesh_approvals_tray.waiting_count": "{count, plural, one {{count, number, ::group-off} waiting} other {{count, number, ::group-off} waiting}}",
|
|
32974
|
+
"ui.mesh.mesh_approvals_tray.ask_again": "Ask again",
|
|
32975
|
+
"ui.mesh.mesh_approvals_tray.settled_approvals": "Settled approvals",
|
|
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.",
|
|
32977
|
+
"ui.mesh.mesh_approvals_tray.approve": "Approve",
|
|
32978
|
+
"ui.mesh.mesh_approvals_tray.deny": "Deny",
|
|
32979
|
+
"ui.mesh.mesh_approvals_tray.waiting_for_the_signing_prompt": "Waiting for the signing prompt…",
|
|
32980
|
+
"ui.mesh.mesh_approvals_tray.writing_the_decision": "Writing the decision…",
|
|
32981
|
+
"ui.mesh.mesh_approvals_tray.details": "Details",
|
|
32982
|
+
"ui.mesh.mesh_approvals.waiting_for_you": "Waiting for you",
|
|
32983
|
+
"ui.mesh.mesh_approvals.approved": "Approved",
|
|
32984
|
+
"ui.mesh.mesh_approvals.connecting": "Connecting…",
|
|
32985
|
+
"ui.mesh.mesh_approvals.connected": "Connected",
|
|
32986
|
+
"ui.mesh.mesh_approvals.denied": "Denied",
|
|
32987
|
+
"ui.mesh.mesh_approvals.expired": "Expired",
|
|
32988
|
+
"ui.mesh.mesh_approvals.failed": "Failed",
|
|
32989
|
+
"ui.mesh.mesh_approvals.this_machine": "this machine",
|
|
32990
|
+
"ui.mesh.mesh_approvals.approval_title": "{head}.",
|
|
32991
|
+
"ui.mesh.mesh_approvals.approval_title_with_clauses": "{head}: {clauses}.",
|
|
32992
|
+
"ui.mesh.mesh_approvals.set_up_operator_authority_on_this_machine": "Set up operator authority on this machine",
|
|
32993
|
+
"ui.mesh.mesh_approvals.onboard_subject": "Onboard {subject}",
|
|
32994
|
+
"ui.mesh.mesh_approvals.join_clauses": "{clauses}; {last}",
|
|
32995
|
+
"ui.mesh.mesh_approvals.via_transport": "via {transport}",
|
|
32996
|
+
"ui.mesh.mesh_approvals.session_suffix": "session {suffix}",
|
|
32997
|
+
"ui.mesh.mesh_approvals.asked_by": "asked by {requester}",
|
|
32998
|
+
"ui.mesh.mesh_approvals.connect_over": "connect over {transport}",
|
|
32999
|
+
"ui.mesh.mesh_approvals.connect_to_it": "connect to it",
|
|
33000
|
+
"ui.mesh.mesh_approvals.may_connect_over": "this machine may connect to it over {transport}",
|
|
33001
|
+
"ui.mesh.mesh_approvals.this_machine_may_connect_to_it": "this machine may connect to it",
|
|
33002
|
+
"ui.mesh.mesh_approvals.install_local_operator": "install Local Operator",
|
|
33003
|
+
"ui.mesh.mesh_approvals.install_local_operator_there": "install Local Operator there",
|
|
33004
|
+
"ui.mesh.mesh_approvals.local_operator_is_installed_on_this_machine": "Local Operator is installed on this machine",
|
|
33005
|
+
"ui.mesh.mesh_approvals.local_operator_is_installed_on_it": "Local Operator is installed on it",
|
|
33006
|
+
"ui.mesh.mesh_approvals.install_operator_anchor": "install operator anchor",
|
|
33007
|
+
"ui.mesh.mesh_approvals.check_approvals_signed_on_your_machines": "check approvals signed on your machines",
|
|
33008
|
+
"ui.mesh.mesh_approvals.that_device_can_check_approvals_signed_on": "that device can check approvals signed on your machines; nothing there can sign",
|
|
33009
|
+
"ui.mesh.mesh_approvals.join_network": "join {network} as {role}",
|
|
33010
|
+
"ui.mesh.mesh_approvals.joins_network": "it joins {network} as {role}",
|
|
33011
|
+
"ui.mesh.mesh_approvals.trust_unattended_sessions": "trust unattended sessions",
|
|
33012
|
+
"ui.mesh.mesh_approvals.run_sessions_there_without_an_approval_prompt": "run sessions there without an approval prompt",
|
|
33013
|
+
"ui.mesh.mesh_approvals.sessions_you_start_on_that_device_run": "sessions you start on that device run without an approval prompt there",
|
|
33014
|
+
"ui.mesh.mesh_approvals.grant_capability": "grant {grant}",
|
|
33015
|
+
"ui.mesh.mesh_approvals.use_capability": "use the {grant} capability",
|
|
33016
|
+
"ui.mesh.mesh_approvals.may_use_capability": "you may {grant} on that device",
|
|
33017
|
+
"ui.mesh.mesh_approvals.borrow_logins_there": "borrow logins there",
|
|
33018
|
+
"ui.mesh.mesh_approvals.your_sessions_may_use_the_logins_stored": "your sessions may use the logins stored on that device",
|
|
33019
|
+
"ui.mesh.mesh_approvals.see_its_sessions": "see its sessions",
|
|
33020
|
+
"ui.mesh.mesh_approvals.watch_a_session_there": "watch a session there",
|
|
33021
|
+
"ui.mesh.mesh_approvals.send_prompts_to_a_session_there": "send prompts to a session there",
|
|
33022
|
+
"ui.mesh.mesh_approvals.steer_a_running_turn_there": "steer a running turn there",
|
|
33023
|
+
"ui.mesh.mesh_approvals.stop_a_session_there": "stop a session there",
|
|
33024
|
+
"ui.mesh.mesh_approvals.run_slash_commands_there": "run slash commands there",
|
|
33025
|
+
"ui.mesh.mesh_approvals.archive_or_delete_a_session_there": "archive or delete a session there",
|
|
33026
|
+
"ui.mesh.mesh_approvals.move_sessions_to_or_from_there": "move sessions to or from there",
|
|
33027
|
+
"ui.mesh.mesh_approvals.borrow_the_logins_stored_there": "borrow the logins stored there",
|
|
33028
|
+
"ui.mesh.mesh_approvals.answer_approval_prompts_there": "answer approval prompts there",
|
|
33029
|
+
"ui.mesh.mesh_approvals.expires_in_under_a_minute": "expires in under a minute",
|
|
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}}",
|
|
33032
|
+
"ui.mesh.mesh_approvals.the_approvals_could_not_be_read": "The approvals could not be read.",
|
|
33033
|
+
"ui.mesh.mesh_canvas.networks": "Networks",
|
|
33034
|
+
"ui.mesh.mesh_canvas.devices": "Devices",
|
|
33035
|
+
"ui.mesh.mesh_card.recall_to_this_device": "Recall to this device",
|
|
33036
|
+
"ui.mesh.mesh_card.copy_here_leave_it_there": "Copy here, leave it there",
|
|
33037
|
+
"ui.mesh.mesh_card.move_to": "Move to {device}",
|
|
33038
|
+
"ui.mesh.mesh_card.copy_to": "Copy to {device}",
|
|
33039
|
+
"ui.mesh.mesh_card.conversation_count": "{count, plural, one {{count, number, ::group-off} conversation} other {{count, number, ::group-off} conversations}}",
|
|
33040
|
+
"ui.mesh.mesh_card.revoked_membership": "revoked membership",
|
|
33041
|
+
"ui.mesh.mesh_card.shown_of": "{shown, number, ::group-off} of {total, number, ::group-off}",
|
|
33042
|
+
"ui.mesh.mesh_card.device_details": "{device} details",
|
|
33043
|
+
"ui.mesh.mesh_card.memberships": "Memberships",
|
|
33044
|
+
"ui.mesh.mesh_card.revoked": " · revoked",
|
|
33045
|
+
"ui.mesh.mesh_card.remove_from": "Remove from ",
|
|
33046
|
+
"ui.mesh.mesh_card.conversations": "Conversations ",
|
|
33047
|
+
"ui.mesh.mesh_card.this_device_did_not_report_its_conversations": "This device did not report its conversations.",
|
|
33048
|
+
"ui.mesh.mesh_card.no_conversations_here": "No conversations here.",
|
|
33049
|
+
"ui.mesh.mesh_card.moving": "moving…",
|
|
33050
|
+
"ui.mesh.mesh_card.move_conversation": "Move {conversation}",
|
|
33051
|
+
"ui.mesh.mesh_card.network_addresses": "Network addresses",
|
|
33052
|
+
"ui.mesh.mesh_card.no_address_published": "No address published.",
|
|
33053
|
+
"ui.mesh.mesh_card.advertised": "advertised",
|
|
33054
|
+
"ui.mesh.mesh_card.status": "Status",
|
|
33055
|
+
"ui.mesh.mesh_card.reach": "Reach",
|
|
33056
|
+
"ui.mesh.mesh_card.last_status_frame": "Last status frame",
|
|
33057
|
+
"ui.mesh.mesh_card.never": "never",
|
|
33058
|
+
"ui.mesh.mesh_card.show_in_list": "Show in list",
|
|
33059
|
+
"ui.mesh.mesh_drop.recall_it": "Recall it",
|
|
33060
|
+
"ui.mesh.mesh_drop.move_it": "Move it",
|
|
33061
|
+
"ui.mesh.mesh_drop.copy_loss": "The copy on {source} is deleted once {destination} has it.",
|
|
33062
|
+
"ui.mesh.mesh_drop.running_now": "{conversation} is running {where} right now.",
|
|
33063
|
+
"ui.mesh.mesh_drop.this_conversation": "This conversation",
|
|
33064
|
+
"ui.mesh.mesh_drop.duplicate_key": "{device} has a duplicated key{reason}, so nothing is moved to it until that is resolved.",
|
|
33065
|
+
"ui.mesh.mesh_drop.see_this_device": "See this device",
|
|
33066
|
+
"ui.mesh.mesh_drop.no_shared_network": "{device} is no longer a member of any network this device shares.",
|
|
33067
|
+
"ui.mesh.mesh_drop.no_answer": "{device} is not answering{reason}, so nothing was moved.",
|
|
33068
|
+
"ui.mesh.mesh_drop.network_not_destination": "A conversation lives on a device. {network} holds devices, not conversations.",
|
|
33069
|
+
"ui.mesh.mesh_drop.a_network": "A network",
|
|
33070
|
+
"ui.mesh.mesh_drop.turn_in_flight": "{conversation} has a turn in flight, so it is not moved — the refusal changes nothing.",
|
|
33071
|
+
"ui.mesh.mesh_drop.that_device_is_no_longer_in_any": "That device is no longer in any network this tab can read.",
|
|
33072
|
+
"ui.mesh.mesh_drop.owner_no_answer": "{device} is not answering{reason}, so it could not hand this conversation over.",
|
|
33073
|
+
"ui.mesh.mesh_drop.recall_first": "This conversation is on {owner}. It has to travel through this device: recall it here first.",
|
|
33074
|
+
"ui.mesh.mesh_drop.on_owner": "on {owner}",
|
|
33075
|
+
"ui.mesh.mesh_drop.this_device": "this device",
|
|
33076
|
+
"ui.mesh.mesh_drop.on_this_device": "on this device",
|
|
33077
|
+
"ui.mesh.mesh_drop.drop_refusal": "Drop will be refused: {sentence}",
|
|
33078
|
+
"ui.mesh.mesh_graph.just_now": "just now",
|
|
33079
|
+
"ui.mesh.mesh_graph.last_status_frame": "last status frame {age}",
|
|
33080
|
+
"ui.mesh.mesh_graph.conversations_not_reported": "conversations not reported",
|
|
33081
|
+
"ui.mesh.mesh_graph.revoked_membership": "revoked membership",
|
|
33082
|
+
"ui.mesh.mesh_graph.self_conversations": "this device · {conversations}",
|
|
33083
|
+
"ui.mesh.mesh_graph.identity_suspect": "identity suspect",
|
|
33084
|
+
"ui.mesh.mesh_graph.no_sessions_reported": "no sessions reported",
|
|
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}}",
|
|
33092
|
+
"ui.mesh.mesh_graph.self_identity": "this device is {device}",
|
|
33093
|
+
"ui.mesh.mesh_list.name": "Name",
|
|
33094
|
+
"ui.mesh.mesh_list.state": "State",
|
|
33095
|
+
"ui.mesh.mesh_list.on_device_state": "on {device}{state}",
|
|
33096
|
+
"ui.mesh.mesh_list.on_device_no_answer": "on {device} (not answering)",
|
|
33097
|
+
"ui.mesh.mesh_list.sort_devices_by": "Sort devices by",
|
|
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}}",
|
|
33100
|
+
"ui.mesh.mesh_list.revoked": "revoked",
|
|
33101
|
+
"ui.mesh.mesh_list.member": "member",
|
|
33102
|
+
"ui.mesh.mesh_list.move_conversation": "Move {conversation}",
|
|
33103
|
+
"ui.mesh.mesh_list.show_all_panel": "show all {count, plural, other {{count, number, ::group-off} in the panel}}",
|
|
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.",
|
|
33105
|
+
"ui.mesh.mesh_node.on_device": "on {device}",
|
|
33106
|
+
"ui.mesh.mesh_node.working": "working",
|
|
33107
|
+
"ui.mesh.mesh_node.conversations_on": "Conversations on {device}",
|
|
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}}",
|
|
33110
|
+
"ui.mesh.mesh_node.open_conversation": "{conversation}, {fact}. Opens {owner}.",
|
|
33111
|
+
"ui.mesh.mesh_page.canvas": "Canvas",
|
|
33112
|
+
"ui.mesh.mesh_page.list": "List",
|
|
33113
|
+
"ui.mesh.mesh_page.mesh": "Mesh",
|
|
33114
|
+
"ui.mesh.mesh_page.devices_this_app_is_paired_with_and": "Devices this app is paired with, and the networks that hold them.",
|
|
33115
|
+
"ui.mesh.mesh_page.checking": "checking…",
|
|
33116
|
+
"ui.mesh.mesh_page.presentation": "Presentation",
|
|
33117
|
+
"ui.mesh.mesh_page.no_network_on_this_device": "No network on this device",
|
|
33118
|
+
"ui.mesh.mesh_page.this_device_is_not_in_any_network": "This device is not in any network, so there is no mesh to draw. Create one on this machine:",
|
|
33119
|
+
"ui.mesh.mesh_page.a_network_appears_here_once_this_device": "A network appears here once this device has joined one.",
|
|
33120
|
+
"ui.mesh.mesh_page.copied": "Copied",
|
|
33121
|
+
"ui.mesh.mesh_page.moved": "Moved",
|
|
33122
|
+
"ui.mesh.mesh_page.copy_receipt": "{destination} holds a copy as {suffix}; the original is still here.",
|
|
33123
|
+
"ui.mesh.mesh_page.move_receipt": "{destination} holds it now{retirement}.",
|
|
33124
|
+
"ui.mesh.mesh_page.the_copy_here_is_gone": "; the copy here is gone",
|
|
33125
|
+
"ui.mesh.mesh_page.bring_copy_back": "Bring the copy back from {device}",
|
|
33126
|
+
"ui.mesh.mesh_page.the_move_could_not_be_sent_nothing": "The move could not be sent. Nothing here changed; the list has been read again.",
|
|
33127
|
+
"ui.mesh.mesh_reach.reached": "reached",
|
|
33128
|
+
"ui.mesh.mesh_reach.no_answer": "no answer",
|
|
33129
|
+
"ui.mesh.mesh_reach.not_asked": "not asked",
|
|
33130
|
+
"ui.mesh.mesh_reach.unknown": "unknown",
|
|
33131
|
+
"ui.mesh.mesh_scope.declared": "declared",
|
|
33132
|
+
"ui.mesh.mesh_scope.shared_with_this_device": "shared with this device",
|
|
33133
|
+
"ui.mesh.mesh_scope.same_prefix": "same prefix",
|
|
33134
|
+
"ui.mesh.mesh_store.the_mesh_could_not_be_read": "The mesh could not be read.",
|
|
33135
|
+
"ui.mesh.mesh_store.the_move_answered_and_this_app_could": "The move answered, and this app could not read which session it moved. Read the list again before asking for another.",
|
|
33136
|
+
"ui.mesh.mesh_types.device_suffix": "device …{suffix}",
|
|
33137
|
+
"ui.mesh.mesh_types.network_suffix": "network …{suffix}",
|
|
33138
|
+
"ui.mesh.mesh_actions.this_moves_the_conversation": "This moves the conversation.",
|
|
33139
|
+
"ui.mesh.mesh_actions.the_device": "the device",
|
|
33140
|
+
"ui.mesh.mesh_approvals.decision_could_not_be_answered": "The decision could not be answered.",
|
|
33141
|
+
"ui.mesh.mesh_node.memberships": "· {count, plural, one {{count, number, ::group-off} networks} other {{count, number, ::group-off} networks}}",
|
|
33142
|
+
"ui.mesh.mesh_graph.conversation_unit": "{count, plural, one {conversation} other {conversations}}",
|
|
33143
|
+
"ui.mesh.mesh_approvals_tray.failed_count": "{count, plural, other {{count, number, ::group-off} failed}}",
|
|
33144
|
+
"ui.mesh.mesh_list.sort_conversations": "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}}",
|
|
33146
|
+
"ui.mesh.approval.credential_title": "Credential access request",
|
|
33147
|
+
"ui.mesh.approval.unknown_title": "Approval request",
|
|
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.",
|
|
33149
|
+
"ui.mesh.approval.cli_review": "Review this request from the command line on this machine. This app cannot approve it.",
|
|
33150
|
+
"ui.mesh.approval.approved_pending_apply": "Approved; waiting to apply",
|
|
33151
|
+
"ui.mesh.approval.approved_apply_hint": "Approval is recorded. Open Details for the server-provided apply step.",
|
|
33152
|
+
"ui.mesh.approval.approved_details_missing": "Approval is recorded. The apply step is unavailable in this app.",
|
|
33153
|
+
"ui.mesh.approval.request_window": "Request window: {remaining}"
|
|
33154
|
+
};
|
|
31943
33155
|
const enUiOnboarding = {
|
|
31944
33156
|
"ui.onboarding.connect.intro": "Local Operator needs an AI account to work. Radient is the easiest: one browser sign-in and nothing to paste. Already pay for ChatGPT or Claude? Sign in with that instead. Anything else is under More providers.",
|
|
31945
33157
|
"ui.onboarding.default_model.block.loading_models": "Loading the model list…",
|
|
@@ -31986,8 +33198,8 @@ const enUiOnboarding = {
|
|
|
31986
33198
|
"ui.onboarding.search.row.save_failed": "The key could not be saved.",
|
|
31987
33199
|
"ui.onboarding.search.row.saved": "Saved",
|
|
31988
33200
|
"ui.onboarding.search.row.saving": "Saving {name}",
|
|
31989
|
-
"ui.onboarding.modal.step_of": "Step {current, number} of {total, number}",
|
|
31990
|
-
"ui.onboarding.modal.steps_total": "{total, plural, one {
|
|
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}}"
|
|
31991
33203
|
};
|
|
31992
33204
|
const enUiProjects = {};
|
|
31993
33205
|
const enUiProviders = {
|
|
@@ -32027,9 +33239,688 @@ const enUiProviders = {
|
|
|
32027
33239
|
"ui.providers.phone.status.applying": "Setting up",
|
|
32028
33240
|
"ui.providers.phone.status.checking": "Checking",
|
|
32029
33241
|
"ui.providers.phone.status.connected": "Connected",
|
|
32030
|
-
"ui.providers.phone.use_address": "Open the URL above and sign in with the same Radient account."
|
|
33242
|
+
"ui.providers.phone.use_address": "Open the URL above and sign in with the same Radient account.",
|
|
33243
|
+
"ui.providers.connect_provider_card.connect_a_model_provider_to_start": "Connect a model provider to start",
|
|
33244
|
+
"ui.providers.connect_provider_card.sign_in_with_claude_chatgpt_or_radient": "Sign in with Claude, ChatGPT or Radient, or add an API key. It takes about a minute.",
|
|
33245
|
+
"ui.providers.connect_provider_card.connect_a_provider": "Connect a provider",
|
|
33246
|
+
"ui.providers.connect_provider_card.use_a_model_on_this_computer": "Use a model on this computer",
|
|
33247
|
+
"ui.providers.connect_provider_card.no_model_provider_connected": "No model provider connected ·",
|
|
33248
|
+
"ui.providers.connect_provider_card.connect": "Connect",
|
|
33249
|
+
"ui.providers.connect_provider_dialog.connect_a_model_provider": "Connect a model provider",
|
|
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.",
|
|
33251
|
+
"ui.providers.provider_catalog.local_models": "local models",
|
|
33252
|
+
"ui.providers.provider_catalog.more_providers": "More providers",
|
|
33253
|
+
"ui.providers.provider_catalog.more_providers_and": "More providers: {providers} and {count, plural, other {{count, number, ::group-off} more}}",
|
|
33254
|
+
"ui.providers.provider_catalog.more_providers_variant_41": "More providers: {provider}",
|
|
33255
|
+
"ui.providers.provider_catalog.more_providers_and_variant_42": "More providers: {providers} and {last}",
|
|
33256
|
+
"ui.providers.provider_catalog.claude_subscription": "Claude subscription",
|
|
33257
|
+
"ui.providers.provider_catalog.chatgpt_subscription": "ChatGPT subscription",
|
|
33258
|
+
"ui.providers.provider_catalog.chatgpt_with_a_code": "ChatGPT, with a code",
|
|
33259
|
+
"ui.providers.provider_catalog.browser_sign_in": "Browser sign-in",
|
|
33260
|
+
"ui.providers.provider_catalog.moonshot_account": "Moonshot account",
|
|
33261
|
+
"ui.providers.provider_catalog.supergrok_account": "SuperGrok account",
|
|
33262
|
+
"ui.providers.provider_catalog.token_plan_account": "Token Plan account",
|
|
33263
|
+
"ui.providers.provider_catalog.api_key": "API key",
|
|
33264
|
+
"ui.providers.provider_catalog.sign_in_with_a_code": "Sign in with a code",
|
|
33265
|
+
"ui.providers.provider_catalog.sign_in": "Sign in",
|
|
33266
|
+
"ui.providers.provider_catalog.use_your_claude_pro_or_max_plan": "Use your Claude Pro or Max plan. No extra charge.",
|
|
33267
|
+
"ui.providers.provider_catalog.use_your_chatgpt_plus_or_pro_plan": "Use your ChatGPT Plus or Pro plan. No extra charge.",
|
|
33268
|
+
"ui.providers.provider_catalog.use_your_chatgpt_plan_signing_in_with": "Use your ChatGPT plan, signing in with a one-time code. No extra charge.",
|
|
33269
|
+
"ui.providers.provider_catalog.one_browser_sign_in_nothing_to_paste": "One browser sign-in. Nothing to paste.",
|
|
33270
|
+
"ui.providers.provider_catalog.sign_in_to_your_account_with_a": "Sign in to your {brand} account with a one-time code.",
|
|
33271
|
+
"ui.providers.provider_catalog.sign_in_with_your_account": "Sign in with your {brand} account.",
|
|
33272
|
+
"ui.providers.provider_catalog.use_a_subscription": "Use a subscription",
|
|
33273
|
+
"ui.providers.provider_catalog.use_an_api_key": "Use an API key",
|
|
33274
|
+
"ui.providers.provider_catalog.run_models_on_this_computer": "Run models on this computer",
|
|
33275
|
+
"ui.providers.provider_catalog.set_up": "Set up",
|
|
33276
|
+
"ui.providers.provider_catalog.add_key": "Add key",
|
|
33277
|
+
"ui.providers.provider_catalog.needs_running": "Needs {brand} running",
|
|
33278
|
+
"ui.providers.provider_catalog.paste_an_api_key": "Paste an API key",
|
|
33279
|
+
"ui.providers.provider_catalog.sign_in_with_your_account_variant_93": "Sign in with your {account} account",
|
|
33280
|
+
"ui.providers.provider_catalog.signed_in": "Signed in",
|
|
33281
|
+
"ui.providers.provider_catalog.on_this_computer": "On this computer",
|
|
33282
|
+
"ui.providers.provider_catalog.api_key_saved": "API key saved",
|
|
33283
|
+
"ui.providers.provider_catalog.this_sign_in_is_no_longer_available": "This sign-in is no longer available, so it was stopped.",
|
|
33284
|
+
"ui.providers.provider_catalog.the_sign_in_link_expired": "The sign-in link expired.",
|
|
33285
|
+
"ui.providers.provider_catalog.a_newer_sign_in_replaced_this_one": "A newer sign-in replaced this one.",
|
|
33286
|
+
"ui.providers.provider_catalog.you_cancelled_sign_in": "You cancelled sign-in.",
|
|
33287
|
+
"ui.providers.provider_catalog.didn_t_confirm_the_sign_in": "{brand} didn't confirm the sign-in.",
|
|
33288
|
+
"ui.providers.provider_detail.the_connection_could_not_be_tested": "The connection could not be tested.",
|
|
33289
|
+
"ui.providers.provider_detail.checking_whether": "Checking whether ",
|
|
33290
|
+
"ui.providers.provider_detail.is_running": "is running",
|
|
33291
|
+
"ui.providers.provider_detail.isn_t_answering": "isn't answering",
|
|
33292
|
+
"ui.providers.provider_detail.at": " at ",
|
|
33293
|
+
"ui.providers.provider_detail.checking": "Checking",
|
|
33294
|
+
"ui.providers.provider_detail.check_again": "Check again",
|
|
33295
|
+
"ui.providers.provider_detail.hide_key": "Hide key",
|
|
33296
|
+
"ui.providers.provider_detail.show_key": "Show key",
|
|
33297
|
+
"ui.providers.provider_detail.connected_variant_163": "{brand} connected",
|
|
33298
|
+
"ui.providers.provider_detail.signed_in_to_variant_164": "Signed in to {brand}",
|
|
33299
|
+
"ui.providers.provider_detail.is_no_longer_accepting_the_sign_in": "{brand} is no longer accepting the sign-in stored on this machine.",
|
|
33300
|
+
"ui.providers.provider_detail.this_app_could_not_confirm_the_sign": "This app could not confirm the sign-in stored on this machine for {brand}.",
|
|
33301
|
+
"ui.providers.provider_detail.the_sign_in_itself_finished_what_follows": "The sign-in itself finished; what follows is what it set.",
|
|
33302
|
+
"ui.providers.provider_detail.default_model": "Default model:",
|
|
33303
|
+
"ui.providers.provider_detail.change": "Change",
|
|
33304
|
+
"ui.providers.provider_detail.your_default_model_is_unchanged": "Your default model is unchanged.",
|
|
33305
|
+
"ui.providers.provider_detail.saved_but_not_checked_yet": "Saved, but not checked yet: ",
|
|
33306
|
+
"ui.providers.provider_detail.the_code_was_not_accepted": "The code was not accepted.",
|
|
33307
|
+
"ui.providers.provider_detail.the_key_could_not_be_saved": "The key could not be saved.",
|
|
33308
|
+
"ui.providers.provider_detail.continue": "Continue",
|
|
33309
|
+
"ui.providers.provider_detail.done": "Done",
|
|
33310
|
+
"ui.providers.provider_detail.runs_on_this_computer_and_needs_no": "Runs on this computer and needs no account or key. Start ",
|
|
33311
|
+
"ui.providers.provider_detail.then_check_the_connection": ", then check the connection.",
|
|
33312
|
+
"ui.providers.provider_detail.this_provider_has_no_supported_sign_in": "This provider has no supported sign-in method on this server.",
|
|
33313
|
+
"ui.providers.provider_detail.how_to_connect": "How to connect",
|
|
33314
|
+
"ui.providers.provider_detail.this_local_operator_does_not_check_keys": "this Local Operator does not check keys, so it will be tested on your first message.",
|
|
33315
|
+
"ui.providers.provider_detail.key_saved": "{brand} key saved",
|
|
33316
|
+
"ui.providers.provider_detail.api_key_variant_215": "{brand} API key",
|
|
33317
|
+
"ui.providers.provider_detail.a_key_is_saved_paste_a_new": "A key is saved. Paste a new one to replace it. Stored encrypted on this computer. Billed per use by {brand}, separately from any plan.",
|
|
33318
|
+
"ui.providers.provider_detail.stored_encrypted_on_this_computer_billed_per": "Stored encrypted on this computer. Billed per use by {brand}, separately from any plan.",
|
|
33319
|
+
"ui.providers.provider_detail.checking_key": "Checking key",
|
|
33320
|
+
"ui.providers.provider_detail.save_key": "Save key",
|
|
33321
|
+
"ui.providers.provider_detail.you_ll_get_a_code_to_enter": "You'll get a code to enter on the provider's page.",
|
|
33322
|
+
"ui.providers.provider_detail.it_opens_in_your_browser": "It opens in your browser.",
|
|
33323
|
+
"ui.providers.provider_detail.get_a_sign_in_code": "Get a sign-in code",
|
|
33324
|
+
"ui.providers.provider_detail.continue_in_browser": "Continue in browser",
|
|
33325
|
+
"ui.providers.provider_detail.getting_a_code": "Getting a code",
|
|
33326
|
+
"ui.providers.provider_detail.opening_your_browser": "Opening your browser",
|
|
33327
|
+
"ui.providers.provider_detail.cancel": "Cancel",
|
|
33328
|
+
"ui.providers.provider_detail.enter_this_code": "Enter this code ",
|
|
33329
|
+
"ui.providers.provider_detail.at_variant_248": "at {host}",
|
|
33330
|
+
"ui.providers.provider_detail.on_the_sign_in_page": "on the sign-in page",
|
|
33331
|
+
"ui.providers.provider_detail.this_page_updates_on_its_own_once": ". This page updates on its own once you approve.",
|
|
33332
|
+
"ui.providers.provider_detail.copy_code_and_open_page": "Copy code and open page",
|
|
33333
|
+
"ui.providers.provider_detail.copy_code": "Copy code",
|
|
33334
|
+
"ui.providers.provider_detail.open_browser_again": "Open browser again",
|
|
33335
|
+
"ui.providers.provider_detail.open_sign_in_page": "Open sign-in page",
|
|
33336
|
+
"ui.providers.provider_detail.code_from": "Code from {host}",
|
|
33337
|
+
"ui.providers.provider_detail.code_from_the_sign_in_page": "Code from the sign-in page",
|
|
33338
|
+
"ui.providers.provider_detail.sign_in_code": "Sign-in code",
|
|
33339
|
+
"ui.providers.provider_detail.paste_the_code": "Paste the code ",
|
|
33340
|
+
"ui.providers.provider_detail.the_provider": "the provider",
|
|
33341
|
+
"ui.providers.provider_detail.shows_after_you_approve": "shows after you approve",
|
|
33342
|
+
"ui.providers.provider_detail.copy_link": "Copy link",
|
|
33343
|
+
"ui.providers.provider_detail.finish_signing_in_with_your_browser": "Finish signing in with your browser",
|
|
33344
|
+
"ui.providers.provider_detail.we_opened_approve_access_there_and_this": "We opened {host}. Approve access there and this page updates on its own.",
|
|
33345
|
+
"ui.providers.provider_detail.your_browser_didn_t_open_open_the": "Your browser didn't open. Open the sign-in page yourself, or copy the link.",
|
|
33346
|
+
"ui.providers.provider_detail.opening_approve_access_there_and_this_page": "Opening {host}. Approve access there and this page updates on its own.",
|
|
33347
|
+
"ui.providers.provider_detail.browser_showed_a_code_paste_it_here": "Browser showed a code? Paste it here",
|
|
33348
|
+
"ui.providers.provider_detail.didn_t_confirm_the_sign_in": "{brand} didn't confirm the sign-in.",
|
|
33349
|
+
"ui.providers.provider_detail.sign_in_didn_t_finish": "Sign-in didn't finish",
|
|
33350
|
+
"ui.providers.provider_detail.try_again": "Try again",
|
|
33351
|
+
"ui.providers.provider_detail.use_an_api_key_instead": "Use an API key instead",
|
|
33352
|
+
"ui.providers.provider_grid.the_default_was_not_changed": "The default was not changed.",
|
|
33353
|
+
"ui.providers.provider_grid.sign_out_did_not_complete": "Sign-out did not complete.",
|
|
33354
|
+
"ui.providers.provider_grid.loading_providers": "Loading providers",
|
|
33355
|
+
"ui.providers.provider_grid.retrying": "Retrying",
|
|
33356
|
+
"ui.providers.provider_grid.retry": "Retry",
|
|
33357
|
+
"ui.providers.provider_grid.recommended": "Recommended",
|
|
33358
|
+
"ui.providers.provider_grid.suggests": "· Suggests ",
|
|
33359
|
+
"ui.providers.provider_grid.close": "Close",
|
|
33360
|
+
"ui.providers.provider_grid.default": "Default",
|
|
33361
|
+
"ui.providers.provider_grid.sign_out_of": "Sign out of ",
|
|
33362
|
+
"ui.providers.provider_grid.sign_out": "Sign out",
|
|
33363
|
+
"ui.providers.provider_grid.keep": "Keep",
|
|
33364
|
+
"ui.providers.provider_grid.manage": "Manage {brand}",
|
|
33365
|
+
"ui.providers.provider_grid.make_default": "Make default",
|
|
33366
|
+
"ui.providers.provider_grid.change_model": "Change model…",
|
|
33367
|
+
"ui.providers.provider_grid.replace_key": "Replace key…",
|
|
33368
|
+
"ui.providers.provider_grid.sign_in_again": "Sign in again…",
|
|
33369
|
+
"ui.providers.provider_grid.check_connection": "Check connection",
|
|
33370
|
+
"ui.providers.provider_grid.sign_out_variant_351": "Sign out…",
|
|
33371
|
+
"ui.providers.provider_grid.search_providers": "Search providers",
|
|
33372
|
+
"ui.providers.provider_grid.no_providers_match_this_search": "No providers match this search.",
|
|
33373
|
+
"ui.providers.provider_grid.the_matching_providers_are_in_the_suggested": "The matching providers are in the suggested rows above.",
|
|
33374
|
+
"ui.providers.provider_grid.the_matching_providers_are_in_the_connected": "The matching providers are in the connected rows above.",
|
|
33375
|
+
"ui.providers.provider_grid.clear_search": "Clear search",
|
|
33376
|
+
"ui.providers.provider_grid.connected": "Connected",
|
|
33377
|
+
"ui.providers.provider_grid.suggested_providers": "Suggested providers",
|
|
33378
|
+
"ui.providers.provider_grid.add_a_provider": "Add a provider",
|
|
33379
|
+
"ui.providers.provider_grid.connect_a_provider": "Connect a provider",
|
|
33380
|
+
"ui.providers.provider_labels.local": "Local",
|
|
33381
|
+
"ui.providers.provider_labels.sign_in_or_api_key": "Sign in or API key",
|
|
33382
|
+
"ui.providers.provider_labels.unavailable": "Unavailable",
|
|
33383
|
+
"ui.providers.provider_labels.radient_no_longer_accepts_the_sign_in": "Radient no longer accepts the sign-in stored on this machine",
|
|
33384
|
+
"ui.providers.provider_labels.this_app_could_not_confirm_the_sign": "This app could not confirm the sign-in stored on this machine",
|
|
33385
|
+
"ui.providers.provider_labels.no_key_needed": "No key needed",
|
|
33386
|
+
"ui.providers.provider_labels.no_key_needed_needs_a_running_server": "No key needed - needs a running server",
|
|
33387
|
+
"ui.providers.provider_labels.needs_re_authentication": "Needs re-authentication",
|
|
33388
|
+
"ui.providers.provider_labels.needs_sign_in": "Needs sign-in",
|
|
33389
|
+
"ui.providers.provider_labels.providers_could_not_be_loaded": "Providers could not be loaded.",
|
|
33390
|
+
"ui.providers.sign_in_flow.sign_in_could_not_start": "Sign-in could not start.",
|
|
33391
|
+
"ui.providers.provider_detail.the_sign_in_page": "the sign-in page",
|
|
33392
|
+
"ui.providers.provider_grid.row_action": "{action}: {brand}",
|
|
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}}"
|
|
33395
|
+
};
|
|
33396
|
+
const enUiSchedules = {
|
|
33397
|
+
"ui.schedules.count.hidden": "Show {hidden, plural, one {{hidden, number, ::group-off} more wake} other {{hidden, number, ::group-off} more wakes}}",
|
|
33398
|
+
"ui.schedules.count.keep_runs": "Keep {left, plural, one {{left, number, ::group-off} run} other {{left, number, ::group-off} runs}} left",
|
|
33399
|
+
"ui.schedules.count.list_truncated": "Showing {shown, number, ::group-off} of {total, plural, one {{total, number, ::group-off} conversations} other {{total, number, ::group-off} conversations}} with wakes.",
|
|
33400
|
+
"ui.schedules.count.ran": "Ran {fired, plural, one {{fired, number, ::group-off} time} other {{fired, number, ::group-off} times}}",
|
|
33401
|
+
"ui.schedules.count.wake": "{count, plural, one {{count, number, ::group-off} wake} other {{count, number, ::group-off} wakes}}",
|
|
33402
|
+
"ui.schedules.legacy.activated": "Schedule activated.",
|
|
33403
|
+
"ui.schedules.legacy.deactivated": "Schedule deactivated.",
|
|
33404
|
+
"ui.schedules.legacy.once": "once",
|
|
33405
|
+
"ui.schedules.schedule_form_dialog.active": "Active",
|
|
33406
|
+
"ui.schedules.schedule_form_dialog.agent": "Agent ",
|
|
33407
|
+
"ui.schedules.schedule_form_dialog.agent_id_substring_0_8": "Agent ID: {substring_0__8}...",
|
|
33408
|
+
"ui.schedules.schedule_form_dialog.agent_selection_is_required": "Agent selection is required.",
|
|
33409
|
+
"ui.schedules.schedule_form_dialog.cancel": "Cancel",
|
|
33410
|
+
"ui.schedules.schedule_form_dialog.create_schedule": "Create schedule",
|
|
33411
|
+
"ui.schedules.schedule_form_dialog.days": "Days",
|
|
33412
|
+
"ui.schedules.schedule_form_dialog.edit_schedule": "Edit schedule",
|
|
33413
|
+
"ui.schedules.schedule_form_dialog.end_time_optional": "End time (optional)",
|
|
33414
|
+
"ui.schedules.schedule_form_dialog.example_send_me_an_email_with_a_detailed_world_news_breakdown_wit": 'Example: "Send me an email with a detailed world news breakdown with key events"',
|
|
33415
|
+
"ui.schedules.schedule_form_dialog.failed_to_load_agents": "Failed to load agents.",
|
|
33416
|
+
"ui.schedules.schedule_form_dialog.failed_to_save_schedule_unknown_error": "Failed to save schedule: {unknown_error}",
|
|
33417
|
+
"ui.schedules.schedule_form_dialog.hours": "Hours",
|
|
33418
|
+
"ui.schedules.schedule_form_dialog.if_not_set_schedule_runs_indefinitely": "If not set, schedule runs indefinitely.",
|
|
33419
|
+
"ui.schedules.schedule_form_dialog.if_not_set_starts_immediately_or_on_next_interval": "If not set, starts immediately or on next interval.",
|
|
33420
|
+
"ui.schedules.schedule_form_dialog.interval": "Interval ",
|
|
33421
|
+
"ui.schedules.schedule_form_dialog.it_is_usually_quicker_to_ask_an_agent_in_chat_send_me_an_email_wi": 'It is usually quicker to ask an agent in chat — "send me an email with the latest news at 8am every day" — and it will set this up for you.',
|
|
33422
|
+
"ui.schedules.schedule_form_dialog.loading_agents": "Loading agents",
|
|
33423
|
+
"ui.schedules.schedule_form_dialog.minutes": "Minutes",
|
|
33424
|
+
"ui.schedules.schedule_form_dialog.new_schedule": "New schedule",
|
|
33425
|
+
"ui.schedules.schedule_form_dialog.no_matching_agents": "No matching agents",
|
|
33426
|
+
"ui.schedules.schedule_form_dialog.prompt": "Prompt ",
|
|
33427
|
+
"ui.schedules.schedule_form_dialog.run_once": "Run once",
|
|
33428
|
+
"ui.schedules.schedule_form_dialog.runs_as": "Runs as",
|
|
33429
|
+
"ui.schedules.schedule_form_dialog.save_changes": "Save changes",
|
|
33430
|
+
"ui.schedules.schedule_form_dialog.saving": "Saving",
|
|
33431
|
+
"ui.schedules.schedule_form_dialog.search_agents": "Search agents",
|
|
33432
|
+
"ui.schedules.schedule_form_dialog.select_agent": "Select agent",
|
|
33433
|
+
"ui.schedules.schedule_form_dialog.select_unit": "Select unit",
|
|
33434
|
+
"ui.schedules.schedule_form_dialog.send_me_an_email_with_a_detailed_world_news_breakdown": "Send me an email with a detailed world news breakdown",
|
|
33435
|
+
"ui.schedules.schedule_form_dialog.start_time": "Start time",
|
|
33436
|
+
"ui.schedules.schedule_form_dialog.the_agent_cannot_be_changed_after_a_schedule_is_created": ". The agent cannot be changed after a schedule is created.",
|
|
33437
|
+
"ui.schedules.schedule_form_dialog.this_is_the_message_that_will_be_sent_to_the_agent_on_the_schedul": "This is the message that will be sent to the agent on the schedule.",
|
|
33438
|
+
"ui.schedules.schedule_form_dialog.unit": "Unit ",
|
|
33439
|
+
"ui.schedules.schedule_form_dialog.unknown_error": "Unknown error",
|
|
33440
|
+
"ui.schedules.schedule_form_dialog.unnamed_agent": "Unnamed agent",
|
|
33441
|
+
"ui.schedules.schedule_list_item.agent_id": "Agent ID",
|
|
33442
|
+
"ui.schedules.schedule_list_item.delete_schedule": "Delete schedule",
|
|
33443
|
+
"ui.schedules.schedule_list_item.edit_schedule": "Edit schedule",
|
|
33444
|
+
"ui.schedules.schedule_list_item.pause_schedule": "Pause schedule",
|
|
33445
|
+
"ui.schedules.schedule_list_item.resume_schedule": "Resume schedule",
|
|
33446
|
+
"ui.schedules.schedule_list_item.schedule_id_id": "Schedule ID: {id}",
|
|
33447
|
+
"ui.schedules.schedule_list_item.unknown_agent": "Unknown agent",
|
|
33448
|
+
"ui.schedules.scheduled_task_dialog.a_new_conversation": "A new conversation",
|
|
33449
|
+
"ui.schedules.scheduled_task_dialog.a_new_first_run_moves_the_next_wake_to_that_time_and_a_new_repeat": "A new first run moves the next wake to that time, and a new repeat carries on from it. Runs already made still count, and the wake keeps its place in the conversation.",
|
|
33450
|
+
"ui.schedules.scheduled_task_dialog.after_n_runs": "After N runs",
|
|
33451
|
+
"ui.schedules.scheduled_task_dialog.an_existing_conversation": "An existing conversation",
|
|
33452
|
+
"ui.schedules.scheduled_task_dialog.as_a_turn_in_that_conversation": ", as a turn in that conversation.",
|
|
33453
|
+
"ui.schedules.scheduled_task_dialog.cancel": "Cancel",
|
|
33454
|
+
"ui.schedules.scheduled_task_dialog.conversation": "Conversation",
|
|
33455
|
+
"ui.schedules.scheduled_task_dialog.could_not_create_the_scheduled_task": "Could not create the scheduled task",
|
|
33456
|
+
"ui.schedules.scheduled_task_dialog.could_not_create_the_scheduled_task_491": "Could not create the scheduled task.",
|
|
33457
|
+
"ui.schedules.scheduled_task_dialog.could_not_read_your_conversations": "Could not read your conversations: ",
|
|
33458
|
+
"ui.schedules.scheduled_task_dialog.could_not_save_the_wake": "Could not save the wake",
|
|
33459
|
+
"ui.schedules.scheduled_task_dialog.could_not_save_the_wake_490": "Could not save the wake.",
|
|
33460
|
+
"ui.schedules.scheduled_task_dialog.create": "Create",
|
|
33461
|
+
"ui.schedules.scheduled_task_dialog.creating": "Creating",
|
|
33462
|
+
"ui.schedules.scheduled_task_dialog.days": "Days",
|
|
33463
|
+
"ui.schedules.scheduled_task_dialog.don_t_repeat": "Don't repeat",
|
|
33464
|
+
"ui.schedules.scheduled_task_dialog.edit_wake": "Edit wake",
|
|
33465
|
+
"ui.schedules.scheduled_task_dialog.ends": "Ends",
|
|
33466
|
+
"ui.schedules.scheduled_task_dialog.every": "Every",
|
|
33467
|
+
"ui.schedules.scheduled_task_dialog.first_run": "First run",
|
|
33468
|
+
"ui.schedules.scheduled_task_dialog.first_run_at": "First run at",
|
|
33469
|
+
"ui.schedules.scheduled_task_dialog.hours": "Hours",
|
|
33470
|
+
"ui.schedules.scheduled_task_dialog.if_a_tool_needs_approval_the_wake_parks_and_waits_for_you_rather": "If a tool needs approval, the wake parks and waits for you rather than acting on its own; a wait that runs out stops the turn without running the tool.",
|
|
33471
|
+
"ui.schedules.scheduled_task_dialog.in_30_minutes": "In 30 minutes",
|
|
33472
|
+
"ui.schedules.scheduled_task_dialog.in_an_hour": "In an hour",
|
|
33473
|
+
"ui.schedules.scheduled_task_dialog.it_is_usually_quicker_to_ask_an_agent_in_chat_send_me_the_latest": 'It is usually quicker to ask an agent in chat — "send me the latest news at 8am every day" — and it will set this up for you.',
|
|
33474
|
+
"ui.schedules.scheduled_task_dialog.last_run": "Last run",
|
|
33475
|
+
"ui.schedules.scheduled_task_dialog.loading_conversations": "Loading conversations…",
|
|
33476
|
+
"ui.schedules.scheduled_task_dialog.minutes": "Minutes",
|
|
33477
|
+
"ui.schedules.scheduled_task_dialog.never": "Never",
|
|
33478
|
+
"ui.schedules.scheduled_task_dialog.new_scheduled_task": "New scheduled task",
|
|
33479
|
+
"ui.schedules.scheduled_task_dialog.no_conversations_yet_start_one_in_chat_or_choose": "No conversations yet — start one in chat, or choose",
|
|
33480
|
+
"ui.schedules.scheduled_task_dialog.number_of_runs": "Number of runs",
|
|
33481
|
+
"ui.schedules.scheduled_task_dialog.of": " of ",
|
|
33482
|
+
"ui.schedules.scheduled_task_dialog.on_a_date": "On a date…",
|
|
33483
|
+
"ui.schedules.scheduled_task_dialog.pick_a_conversation": "Pick a conversation",
|
|
33484
|
+
"ui.schedules.scheduled_task_dialog.pick_a_time": "Pick a time…",
|
|
33485
|
+
"ui.schedules.scheduled_task_dialog.prompt": "Prompt ",
|
|
33486
|
+
"ui.schedules.scheduled_task_dialog.repeat": "Repeat",
|
|
33487
|
+
"ui.schedules.scheduled_task_dialog.repeat_interval": "Repeat interval",
|
|
33488
|
+
"ui.schedules.scheduled_task_dialog.repeat_unit": "Repeat unit",
|
|
33489
|
+
"ui.schedules.scheduled_task_dialog.run_in": "Run in",
|
|
33490
|
+
"ui.schedules.scheduled_task_dialog.runs_in": "Runs in ",
|
|
33491
|
+
"ui.schedules.scheduled_task_dialog.save": "Save",
|
|
33492
|
+
"ui.schedules.scheduled_task_dialog.saving": "Saving",
|
|
33493
|
+
"ui.schedules.scheduled_task_dialog.scheduled_task_created_trim": "Scheduled task created — {trim}",
|
|
33494
|
+
"ui.schedules.scheduled_task_dialog.scheduled_task_created_trim_the_list_may_lag_until_the_index_catc": "Scheduled task created — {trim}. The list may lag until the index catches up.",
|
|
33495
|
+
"ui.schedules.scheduled_task_dialog.send_me_an_email_with_a_detailed_world_news_breakdown": "Send me an email with a detailed world news breakdown",
|
|
33496
|
+
"ui.schedules.scheduled_task_dialog.starts_in": "Starts in ",
|
|
33497
|
+
"ui.schedules.scheduled_task_dialog.this_is_the_message_the_conversation_receives_when_it_wakes_up": "This is the message the conversation receives when it wakes up.",
|
|
33498
|
+
"ui.schedules.scheduled_task_dialog.tomorrow_at_9_00_am": "Tomorrow at 9:00 AM",
|
|
33499
|
+
"ui.schedules.scheduled_task_dialog.tonight_at_8_00_pm": "Tonight at 8:00 PM",
|
|
33500
|
+
"ui.schedules.scheduled_task_dialog.untitled_slice_0_8": "Untitled {slice_0__8}",
|
|
33501
|
+
"ui.schedules.scheduled_task_dialog.value1_message": "{value1}: {message}",
|
|
33502
|
+
"ui.schedules.scheduled_task_dialog.wake": " · wake ",
|
|
33503
|
+
"ui.schedules.scheduled_task_dialog.wake_updated_trim": "Wake updated — {trim}",
|
|
33504
|
+
"ui.schedules.scheduled_task_dialog.weeks": "Weeks",
|
|
33505
|
+
"ui.schedules.scheduled_task_dialog.with_your_default_model": " with your default model.",
|
|
33506
|
+
"ui.schedules.scheduled_task_model.a_terminal_stop_parks_a_conversation_s_wakes_until_its_next_turn": "A terminal stop parks a conversation's wakes until its next turn; stopping one from this window leaves them armed.",
|
|
33507
|
+
"ui.schedules.scheduled_task_model.cadence_starts_value2": "{cadence} · starts {value2}",
|
|
33508
|
+
"ui.schedules.scheduled_task_model.cadence_until_value2": "{cadence} · until {value2}",
|
|
33509
|
+
"ui.schedules.scheduled_task_model.every_needs_a_positive_whole_number_how_many_minutes_hours_days_o": "Every needs a positive whole number — how many minutes, hours, days or weeks between runs.",
|
|
33510
|
+
"ui.schedules.scheduled_task_model.keep_as_once": "Keep as once",
|
|
33511
|
+
"ui.schedules.scheduled_task_model.keep_ending_until_at_nowms": "Keep ending {until_at__nowMs}",
|
|
33512
|
+
"ui.schedules.scheduled_task_model.keep_every_ms_null": "Keep {every_ms__null}",
|
|
33513
|
+
"ui.schedules.scheduled_task_model.keep_it_parked": "Keep it parked",
|
|
33514
|
+
"ui.schedules.scheduled_task_model.keep_never_ending": "Keep never ending",
|
|
33515
|
+
"ui.schedules.scheduled_task_model.keep_next_due_at_nowms": "Keep {next_due_at__nowMs}",
|
|
33516
|
+
"ui.schedules.scheduled_task_model.keep_the_current_time": "Keep the current time",
|
|
33517
|
+
"ui.schedules.scheduled_task_model.length_next_duelabel": "{length} · next {dueLabel}",
|
|
33518
|
+
"ui.schedules.scheduled_task_model.nothing_supervises_the_wakes_below_so_they_only_fire_while_their": "Nothing supervises the wakes below, so they only fire while their conversation is running.",
|
|
33519
|
+
"ui.schedules.scheduled_task_model.once_at_value1": "once · at {value1}",
|
|
33520
|
+
"ui.schedules.scheduled_task_model.parked_wakes_resume_after_its_next_turn": "Parked — wakes resume after its next turn",
|
|
33521
|
+
"ui.schedules.scheduled_task_model.pick_a_conversation": "Pick a conversation.",
|
|
33522
|
+
"ui.schedules.scheduled_task_model.the_list_below_is_the_last_one_that_loaded_so_it_may_be_out_of_da": "The list below is the last one that loaded, so it may be out of date.",
|
|
33523
|
+
"ui.schedules.scheduled_task_model.the_wake_supervisor_is_installed_but_not_running_so_the_wakes_bel": "The wake supervisor is installed but not running, so the wakes below will not fire.",
|
|
33524
|
+
"ui.schedules.scheduled_task_model.wakes_are_not_supervised_on_this_platform_yet_so_the_wakes_below": "Wakes are not supervised on this platform yet, so the wakes below only fire while a conversation is running.",
|
|
33525
|
+
"ui.schedules.scheduled_task_model.wakes_repeat_no_more_often_than_once_a_minute": "Wakes repeat no more often than once a minute.",
|
|
33526
|
+
"ui.schedules.scheduled_task_model.your_home_folder": "your home folder",
|
|
33527
|
+
"ui.schedules.schedules_page.ask_an_agent_in_chat_to_do_something_on_a_regular_basis_send_me_t": "Ask an agent in chat to do something on a regular basis — “send me the news at 8am every day” — and it will appear here. You can also set one up by hand.",
|
|
33528
|
+
"ui.schedules.schedules_page.could_not_cancel_the_wake": "Could not cancel the wake.",
|
|
33529
|
+
"ui.schedules.schedules_page.could_not_cancel_the_wake_message": "Could not cancel the wake: {message}",
|
|
33530
|
+
"ui.schedules.schedules_page.could_not_load_legacy_schedules": "Could not load legacy schedules. ",
|
|
33531
|
+
"ui.schedules.schedules_page.could_not_load_scheduled_tasks": "Could not load scheduled tasks.",
|
|
33532
|
+
"ui.schedules.schedules_page.could_not_read_this_machine_s_scheduled_tasks_so_the_list_below_m": "Could not read this machine's scheduled tasks, so the list below may be incomplete.",
|
|
33533
|
+
"ui.schedules.schedules_page.could_not_remove_the_schedule": "Could not remove the schedule.",
|
|
33534
|
+
"ui.schedules.schedules_page.could_not_remove_the_schedule_message": "Could not remove the schedule: {message}",
|
|
33535
|
+
"ui.schedules.schedules_page.could_not_save_the_schedule": "Could not save the schedule.",
|
|
33536
|
+
"ui.schedules.schedules_page.could_not_save_the_schedule_message": "Could not save the schedule: {message}",
|
|
33537
|
+
"ui.schedules.schedules_page.could_not_toggle_the_schedule": "Could not toggle the schedule.",
|
|
33538
|
+
"ui.schedules.schedules_page.could_not_toggle_the_schedule_message": "Could not toggle the schedule: {message}",
|
|
33539
|
+
"ui.schedules.schedules_page.keep": "Keep",
|
|
33540
|
+
"ui.schedules.schedules_page.legacy_schedules": "Legacy schedules",
|
|
33541
|
+
"ui.schedules.schedules_page.loading_scheduled_tasks": "Loading scheduled tasks",
|
|
33542
|
+
"ui.schedules.schedules_page.new_scheduled_task": "New scheduled task",
|
|
33543
|
+
"ui.schedules.schedules_page.no_scheduled_tasks_yet": "No scheduled tasks yet",
|
|
33544
|
+
"ui.schedules.schedules_page.open_conversation": "Open conversation",
|
|
33545
|
+
"ui.schedules.schedules_page.refresh_scheduled_tasks": "Refresh scheduled tasks",
|
|
33546
|
+
"ui.schedules.schedules_page.schedule_removed": "Schedule removed",
|
|
33547
|
+
"ui.schedules.schedules_page.schedule_updated": "Schedule updated",
|
|
33548
|
+
"ui.schedules.schedules_page.schedules": "Schedules",
|
|
33549
|
+
"ui.schedules.schedules_page.these_run_on_the_older_agent_schedule_engine_new_scheduled_tasks": "These run on the older agent-schedule engine. New scheduled tasks are created as wakes, in a conversation.",
|
|
33550
|
+
"ui.schedules.schedules_page.try_again": "Try again",
|
|
33551
|
+
"ui.schedules.schedules_page.wake_cancelled": "Wake cancelled",
|
|
33552
|
+
"ui.schedules.schedules_page.wakes_fire_whether_or_not_this_window_is_open": "Wakes fire whether or not this window is open. ",
|
|
33553
|
+
"ui.schedules.schedules_page.work_your_conversations_do_on_a_schedule_repeating_or_once": "Work your conversations do on a schedule, repeating or once.",
|
|
33554
|
+
"ui.schedules.validation.prompt_length": "This prompt is {length, plural, one {{length, number} characters} other {{length, number} characters}}, and a wake holds at most {max, number}. Shorten it to save.",
|
|
33555
|
+
"ui.schedules.validation.run_budget": "This wake has already run {alreadyRun, plural, one {{alreadyRun, number, ::group-off} time} other {{alreadyRun, number, ::group-off} times}}, so the run budget has to be at least {budget, number, ::group-off}.",
|
|
33556
|
+
"ui.schedules.validation.wake_ceiling": "This conversation already has {count, plural, one {{count, number, ::group-off} wakes} other {{count, number, ::group-off} wakes}}, the most it can hold. Cancel one to add another.",
|
|
33557
|
+
"ui.schedules.wake_conversation_row.cancel_wake": "Cancel wake",
|
|
33558
|
+
"ui.schedules.wake_conversation_row.edit_wake": "Edit wake",
|
|
33559
|
+
"ui.schedules.wake_conversation_row.open_conversation": "Open conversation",
|
|
33560
|
+
"ui.schedules.wake_conversation_row.show_fewer": "Show fewer"
|
|
33561
|
+
};
|
|
33562
|
+
const enUiSettingsAccount = {
|
|
33563
|
+
"ui.settings.account.radient_account_section.status": "Status",
|
|
33564
|
+
"ui.settings.account.radient_account_section.connected": "Connected",
|
|
33565
|
+
"ui.settings.account.radient_account_section.name": "Name",
|
|
33566
|
+
"ui.settings.account.radient_account_section.email": "Email",
|
|
33567
|
+
"ui.settings.account.radient_account_section.account_id": "Account ID",
|
|
33568
|
+
"ui.settings.account.radient_account_section.tenant_id": "Tenant ID",
|
|
33569
|
+
"ui.settings.account.radient_account_section.provider": "Provider",
|
|
33570
|
+
"ui.settings.account.radient_account_section.created": "Created",
|
|
33571
|
+
"ui.settings.account.radient_account_section.need_to_sign_out_or_switch_accounts": "Need to sign out or switch accounts?",
|
|
33572
|
+
"ui.settings.account.radient_account_section.sign_out_from_radient": "Sign out from Radient",
|
|
33573
|
+
"ui.settings.account.radient_account_section.sign_in_to_access_your_account_details_or_sign_up_to_get_free_cre": "Sign in to access your account details or sign up to get free credits and unified access to models, tools, and more with Radient Pass. Radient's automatic model router will automatically select the best model for your agents to balance cost and performance. It is often cheaper to use Radient Pass than to use single AI providers due to automatic cost optimization.",
|
|
33574
|
+
"ui.settings.account.radient_account_section.loading_account": "Loading account",
|
|
33575
|
+
"ui.settings.account.radient_account_section.loading_your_radient_account_details": "Loading your Radient account details…",
|
|
33576
|
+
"ui.settings.account.radient_account_section.not_provided": "Not provided",
|
|
33577
|
+
"ui.settings.account.radient_account_section.radient_refused_the_sign_in_this_app_is_holding_so_your_account_d": "Radient refused the sign-in this app is holding, so your account details could not be read. Signing in again below replaces it.",
|
|
33578
|
+
"ui.settings.account.radient_account_section.your_radient_account_could_not_be_read_so_this_app_cannot_show_yo": "Your Radient account could not be read, so this app cannot show your account details.",
|
|
33579
|
+
"ui.settings.account.radient_account_section.you_are_not_currently_signed_in_to_radient": "You are not currently signed in to Radient.",
|
|
33580
|
+
"ui.settings.account.settings_page.radient_pass": "Radient Pass",
|
|
33581
|
+
"ui.settings.account.settings_page.available_credits": "Available credits",
|
|
33582
|
+
"ui.settings.account.settings_page.add_credits": "Add credits",
|
|
33583
|
+
"ui.settings.account.settings_page.usage_last_30_days": "Usage (last 30 days)",
|
|
33584
|
+
"ui.settings.account.settings_page.usage_metric": "Usage metric",
|
|
33585
|
+
"ui.settings.account.settings_page.no_usage_recorded_in_the_last_30_days": "No usage recorded in the last 30 days.",
|
|
33586
|
+
"ui.settings.account.settings_page.radient_account": "Radient account",
|
|
33587
|
+
"ui.settings.account.settings_page.go_to_radient_console": "Go to Radient console",
|
|
33588
|
+
"ui.settings.account.settings_page.your_radient_account_radient_pass_details_and_credits_to_use_radi": "Your Radient account, Radient Pass details and credits. To use Radient models, sign in under Model providers.",
|
|
33589
|
+
"ui.settings.account.settings_page.credits": "Credits",
|
|
33590
|
+
"ui.settings.account.settings_page.tokens": "Tokens",
|
|
33591
|
+
"ui.settings.account.settings_usage_chart.credits_consumed": "Credits consumed",
|
|
33592
|
+
"ui.settings.account.settings_usage_chart.tokens_used": "Tokens used",
|
|
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}}.",
|
|
33595
|
+
"ui.settings.account.settings_page.credit_balance_load_failed": "Could not load your credit balance. {reason}",
|
|
33596
|
+
"ui.settings.account.settings_page.usage_load_failed": "Could not load your usage data. {reason}"
|
|
33597
|
+
};
|
|
33598
|
+
const enUiSettingsAppearance = {
|
|
33599
|
+
"ui.settings.appearance.settings_page.appearance": "Appearance",
|
|
33600
|
+
"ui.settings.appearance.settings_page.customize_the_look_and_feel_of_local_operator": "Customize the look and feel of Local Operator",
|
|
33601
|
+
"ui.settings.appearance.settings_page.show_agent_reasoning": "Show agent reasoning",
|
|
33602
|
+
"ui.settings.appearance.settings_page.adds_the_agent_s_reasoning_and_thinking_rows_to_conversations_the": "Adds the agent's Reasoning and Thinking rows to conversations. They stay closed until you open one. Reasoning only: narration the agent writes as prose mid-turn is transcript content, not reasoning — never removed by either display mode (by turn folds it behind the turn's bars, by response keeps it on screen).",
|
|
33603
|
+
"ui.settings.appearance.theme_selector.dark": "Dark",
|
|
33604
|
+
"ui.settings.appearance.theme_selector.light": "Light",
|
|
33605
|
+
"ui.settings.appearance.transcript_display_mode_setting.transcript_display": "Transcript display",
|
|
33606
|
+
"ui.settings.appearance.transcript_display_mode_setting.by_turn_condenses_each_turn_to_its_answer_by_response_keeps_every": "By turn condenses each turn to its answer. By response keeps every settled response on screen, with the turn's final answer still marked.",
|
|
33607
|
+
"ui.settings.appearance.transcript_display_mode_setting.by_turn": "By turn",
|
|
33608
|
+
"ui.settings.appearance.transcript_display_mode_setting.by_response": "By response"
|
|
33609
|
+
};
|
|
33610
|
+
const enUiSettingsConfiguration = {
|
|
33611
|
+
"ui.settings.configuration.backend_setting_row.read_only": "Read-only",
|
|
33612
|
+
"ui.settings.configuration.backend_setting_row.use_default": "Use default",
|
|
33613
|
+
"ui.settings.configuration.backend_setting_row.set_in_the_credential_manager_this_value_carries_inline_credentia": "Set in the credential manager: this value carries inline credentials or query parameters.",
|
|
33614
|
+
"ui.settings.configuration.backend_setting_row.retry": "Retry",
|
|
33615
|
+
"ui.settings.configuration.backend_setting_row.saving": "Saving",
|
|
33616
|
+
"ui.settings.configuration.backend_setting_row.save": "Save",
|
|
33617
|
+
"ui.settings.configuration.backend_setting_row.not_set": "Not set",
|
|
33618
|
+
"ui.settings.configuration.backend_setting_row.use_default_for_label": "Use default for {label}",
|
|
33619
|
+
"ui.settings.configuration.backend_settings_drafts.enter_a_whole_number": "Enter a whole number.",
|
|
33620
|
+
"ui.settings.configuration.backend_settings_drafts.enter_a_finite_number": "Enter a finite number.",
|
|
33621
|
+
"ui.settings.configuration.backend_settings_drafts.nothing_has_been_edited_yet": "Nothing has been edited yet.",
|
|
33622
|
+
"ui.settings.configuration.backend_settings_section.searchable_settings_need_a_newer_local_operator_server_update_the": "Searchable settings need a newer Local Operator server. Update the server and restart the app to manage these settings here.",
|
|
33623
|
+
"ui.settings.configuration.backend_settings_section.loading_settings": "Loading settings",
|
|
33624
|
+
"ui.settings.configuration.backend_settings_section.no_settings_match_this_search_clear_the_search_field_to_see_every": "No settings match this search. Clear the search field to see every setting again.",
|
|
33625
|
+
"ui.settings.configuration.backend_settings_section.takes_effect_immediately": "Takes effect immediately",
|
|
33626
|
+
"ui.settings.configuration.backend_settings_section.takes_effect_the_next_time_the_app_starts": "Takes effect the next time the app starts",
|
|
33627
|
+
"ui.settings.configuration.backend_settings_section.takes_effect_for_new_conversations": "Takes effect for new conversations",
|
|
33628
|
+
"ui.settings.configuration.backend_settings_section.the_setting_could_not_be_saved": "The setting could not be saved.",
|
|
33629
|
+
"ui.settings.configuration.backend_settings_section.the_setting_could_not_be_reset": "The setting could not be reset.",
|
|
33630
|
+
"ui.settings.configuration.backend_settings_section.your_settings_could_not_be_loaded": "Your settings could not be loaded.",
|
|
33631
|
+
"ui.settings.configuration.backend_settings_section.retry": "Retry",
|
|
33632
|
+
"ui.settings.configuration.backend_settings_section.advanced_settings_are_hidden_here": "Advanced settings are hidden here.",
|
|
33633
|
+
"ui.settings.configuration.backend_settings_section.nothing_in_this_section_matches": "Nothing in this section matches.",
|
|
33634
|
+
"ui.settings.configuration.delegated_cleanup_notice.open_settings": "Open settings",
|
|
33635
|
+
"ui.settings.configuration.delegated_cleanup_notice.dismiss_this_notice": "Dismiss this notice",
|
|
33636
|
+
"ui.settings.configuration.delegated_retention_copy.sessions_started_by_subagents_agent_shells_and_background_runs_su": "sessions started by subagents, agent shells and background runs such as",
|
|
33637
|
+
"ui.settings.configuration.delegated_retention_copy.never_your_own_conversations_or_the_workstreams_in_your_sidebar": ". Never your own conversations or the workstreams in your sidebar.",
|
|
33638
|
+
"ui.settings.configuration.delegated_retention_copy.anything_running_or_waiting_anything_whose_parent_conversation_wa": "anything running or waiting, anything whose parent conversation was active recently, anything linked to an open project, and folders with unsaved git work.",
|
|
33639
|
+
"ui.settings.configuration.delegated_retention_copy.after_the_time_below_with_no_activity_checked_when_the_app_starts": "after the time below with no activity. Checked when the app starts, a limited batch at a time, so a large backlog can take several launches to clear.",
|
|
33640
|
+
"ui.settings.configuration.language_dialog.the_language_could_not_be_saved": "The language could not be saved.",
|
|
33641
|
+
"ui.settings.configuration.language_dialog.your_settings_could_not_be_loaded": "Your settings could not be loaded.",
|
|
33642
|
+
"ui.settings.configuration.retention_duration.enter_a_whole_number_of_hours_or_days": "Enter a whole number of hours or 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}})",
|
|
33647
|
+
"ui.settings.configuration.retention_duration.range": "between {minimum} and {maximum}",
|
|
33648
|
+
"ui.settings.configuration.retention_duration.too_long": "{duration} is too long. Choose a time {range}.",
|
|
33649
|
+
"ui.settings.configuration.retention_duration.too_short": "{duration} is too short. Choose a time {range}.",
|
|
33650
|
+
"ui.settings.configuration.retention_duration_control.exact_time": "Exact time",
|
|
33651
|
+
"ui.settings.configuration.retention_duration_control.hours": "hours",
|
|
33652
|
+
"ui.settings.configuration.retention_duration_control.days": "days",
|
|
33653
|
+
"ui.settings.configuration.retention_duration_control.label_common_choices": "{label}: common choices",
|
|
33654
|
+
"ui.settings.configuration.retention_duration_control.label_unit": "{label}: unit",
|
|
33655
|
+
"ui.settings.configuration.setting_combobox.could_not_list_models": "Could not list models.",
|
|
33656
|
+
"ui.settings.configuration.setting_combobox.could_not_list_providers": "Could not list providers",
|
|
33657
|
+
"ui.settings.configuration.setting_combobox.no_providers": "No providers",
|
|
33658
|
+
"ui.settings.configuration.setting_combobox.provider_list_unavailable": "Provider list unavailable",
|
|
33659
|
+
"ui.settings.configuration.setting_combobox.could_not_list_models_2": "Could not list models",
|
|
33660
|
+
"ui.settings.configuration.setting_combobox.nothing_matches_that_model": "Nothing matches that model",
|
|
33661
|
+
"ui.settings.configuration.setting_combobox.model_list_unavailable": "Model list unavailable",
|
|
33662
|
+
"ui.settings.configuration.setting_combobox.loading_providers": "Loading providers",
|
|
33663
|
+
"ui.settings.configuration.setting_combobox.loading_models": "Loading models",
|
|
33664
|
+
"ui.settings.configuration.setting_combobox.use_text": 'Use "{text}"',
|
|
33665
|
+
"ui.settings.configuration.setting_control.press_the_keys_you_want_esc_cancels": "Press the keys you want; Esc cancels.",
|
|
33666
|
+
"ui.settings.configuration.setting_control.one_hop_per_line_as_provider_model_effort_an_empty_chain_moves_to": "One hop per line, as provider/model (effort). An empty chain moves to the next provider.",
|
|
33667
|
+
"ui.settings.configuration.setting_control.label_press_the_key_you_want": "{label}: press the key you want",
|
|
33668
|
+
"ui.settings.configuration.settings_filter_bar.search_settings_by_name_description_or_key": "Search settings by name, description or key",
|
|
33669
|
+
"ui.settings.configuration.settings_filter_bar.search_settings": "Search settings",
|
|
33670
|
+
"ui.settings.configuration.settings_filter_bar.clear_search": "Clear search",
|
|
33671
|
+
"ui.settings.configuration.settings_filter_bar.settings_filters": "Settings filters",
|
|
33672
|
+
"ui.settings.configuration.settings_filter_bar.modified": "Modified",
|
|
33673
|
+
"ui.settings.configuration.settings_filter_bar.show_advanced": "Show advanced",
|
|
33674
|
+
"ui.settings.configuration.settings_filter_bar.discard_all": "Discard all",
|
|
33675
|
+
"ui.settings.configuration.settings_filter_bar.expand_all": "Expand all",
|
|
33676
|
+
"ui.settings.configuration.settings_filter_bar.collapse_all": "Collapse all",
|
|
33677
|
+
"ui.settings.configuration.settings_filter_bar.saving": "Saving",
|
|
33678
|
+
"ui.settings.configuration.settings_filter_bar.save_all": "Save all",
|
|
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}}",
|
|
33682
|
+
"ui.settings.configuration.settings_group_header.changed_from_the_default": "Changed from the default",
|
|
33683
|
+
"ui.settings.configuration.settings_group_header.setting_count": "{count, plural, one {{count, number, ::group-off} setting} other {{count, number, ::group-off} settings}}",
|
|
33684
|
+
"ui.settings.configuration.settings_page.configuration_information": "Configuration information",
|
|
33685
|
+
"ui.settings.configuration.settings_page.system_information_about_the_current_configuration": "System information about the current configuration.",
|
|
33686
|
+
"ui.settings.configuration.settings_page.version": "Version",
|
|
33687
|
+
"ui.settings.configuration.settings_page.created": "Created",
|
|
33688
|
+
"ui.settings.configuration.settings_page.last_modified": "Last modified",
|
|
33689
|
+
"ui.settings.configuration.settings_page.description": "Description",
|
|
33690
|
+
"ui.settings.configuration.settings_page.no_description_available": "No description available",
|
|
33691
|
+
"ui.settings.configuration.backend_settings_section.retrying": "Retrying",
|
|
33692
|
+
"ui.settings.configuration.delegated_retention_copy.removed": "Removed:",
|
|
33693
|
+
"ui.settings.configuration.delegated_retention_copy.kept": "Kept:",
|
|
33694
|
+
"ui.settings.configuration.delegated_retention_copy.when": "When:",
|
|
33695
|
+
"ui.settings.configuration.backend_setting_row.gate_note": "Needs {gate} on. Nothing here is saved while it is off.",
|
|
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}}",
|
|
33698
|
+
"ui.settings.configuration.retention_duration_control.idle_window_status": "{duration} with no activity{isDefault, select, yes { (default)} other {}}",
|
|
33699
|
+
"ui.settings.configuration.retention_duration_control.use_duration": "Use {duration}",
|
|
33700
|
+
"ui.settings.configuration.retention_duration_control.duration_default": "{duration} (default)",
|
|
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}}"
|
|
33703
|
+
};
|
|
33704
|
+
const enUiSettingsIntegrations = {
|
|
33705
|
+
"ui.settings.integrations.add_integration_form.add_integration": "Add integration",
|
|
33706
|
+
"ui.settings.integrations.add_integration_form.name": "Name",
|
|
33707
|
+
"ui.settings.integrations.add_integration_form.e_g_notion": "e.g. notion",
|
|
33708
|
+
"ui.settings.integrations.add_integration_form.how_it_runs": "How it runs",
|
|
33709
|
+
"ui.settings.integrations.add_integration_form.local_command": "Local command",
|
|
33710
|
+
"ui.settings.integrations.add_integration_form.remote_url": "Remote URL",
|
|
33711
|
+
"ui.settings.integrations.add_integration_form.command": "Command",
|
|
33712
|
+
"ui.settings.integrations.add_integration_form.e_g_npx": "e.g. npx",
|
|
33713
|
+
"ui.settings.integrations.add_integration_form.arguments": "Arguments",
|
|
33714
|
+
"ui.settings.integrations.add_integration_form.one_per_line": "(one per line)",
|
|
33715
|
+
"ui.settings.integrations.add_integration_form.url": "URL",
|
|
33716
|
+
"ui.settings.integrations.add_integration_form.https_mcp_example_com_mcp": "https://mcp.example.com/mcp",
|
|
33717
|
+
"ui.settings.integrations.add_integration_form.if_it_needs_a_sign_in_or_a_key_you_ll_be_asked_after_it_s_added": "If it needs a sign-in or a key, you'll be asked after it's added.",
|
|
33718
|
+
"ui.settings.integrations.add_integration_form.available_in": "Available in",
|
|
33719
|
+
"ui.settings.integrations.add_integration_form.all_chats": "All chats",
|
|
33720
|
+
"ui.settings.integrations.add_integration_form.this_project": "This project",
|
|
33721
|
+
"ui.settings.integrations.add_integration_form.cancel": "Cancel",
|
|
33722
|
+
"ui.settings.integrations.add_integration_form.enter_the_command_to_run": "Enter the command to run.",
|
|
33723
|
+
"ui.settings.integrations.add_integration_form.every_chat_in_any_folder": "Every chat, in any folder.",
|
|
33724
|
+
"ui.settings.integrations.add_integration_form.only_chats_working_in_projectlabel": "Only chats working in {projectLabel}.",
|
|
33725
|
+
"ui.settings.integrations.credential_manifest.api_key_for_your_radient_pass_radient_pass_provides_you_unified_a": "API key for your Radient Pass. Radient Pass provides you unified access to models, tools, agents, automatic optimization, and many more features with a single key. Get one by signing in above with Gmail or Microsoft.",
|
|
33726
|
+
"ui.settings.integrations.credential_manifest.api_key_for_accessing_openai_models_like_gpt_4o_o3_mini_and_gpt_4": "API key for accessing OpenAI models like GPT-4o, o3-mini, and GPT-4.5.",
|
|
33727
|
+
"ui.settings.integrations.credential_manifest.api_key_for_openrouter_which_provides_access_to_various_ai_models": "API key for OpenRouter, which provides access to various AI models from different providers. Getting an openrouter key allows you to simultaneously access many models from different providers.",
|
|
33728
|
+
"ui.settings.integrations.credential_manifest.api_key_for_deepseek_ai_models_specialized_in_code_generation_and": "API key for DeepSeek AI models, specialized in code generation and understanding.",
|
|
33729
|
+
"ui.settings.integrations.credential_manifest.api_key_for_mistral_ai_models_known_for_efficient_and_powerful_la": "API key for Mistral AI models, known for efficient and powerful language processing.",
|
|
33730
|
+
"ui.settings.integrations.credential_manifest.api_key_for_kimi_ai_providing_advanced_language_models_with_stron": "API key for Kimi AI, providing advanced language models with strong reasoning capabilities.",
|
|
33731
|
+
"ui.settings.integrations.credential_manifest.api_key_for_alibaba_cloud_ai_models_offering_a_range_of_language_": "API key for Alibaba Cloud AI models, offering a range of language and vision capabilities such as Qwen.",
|
|
33732
|
+
"ui.settings.integrations.credential_manifest.api_key_for_google_ai_studio_providing_access_to_gemini_and_other": "API key for Google AI Studio, providing access to Gemini and other Google AI models.",
|
|
33733
|
+
"ui.settings.integrations.credential_manifest.oauth_2_0_access_token_for_google_apis_used_by_local_operator_for": "OAuth 2.0 access token for Google APIs. Used by Local Operator for authenticated requests to Google services such as Gmail, Calendar, and Drive. This token is short-lived and automatically refreshed.",
|
|
33734
|
+
"ui.settings.integrations.credential_manifest.timestamp_in_milliseconds_since_epoch_indicating_when_the_current": "Timestamp (in milliseconds since epoch) indicating when the current Google access token will expire. Used internally to manage token refresh.",
|
|
33735
|
+
"ui.settings.integrations.credential_manifest.oauth_2_0_refresh_token_for_google_apis_used_to_obtain_new_access": "OAuth 2.0 refresh token for Google APIs. Used to obtain new access tokens when the current one expires. This is managed securely and automatically.",
|
|
33736
|
+
"ui.settings.integrations.credential_manifest.api_key_for_anthropic_s_claude_models_known_for_agentic_code_gene": "API key for Anthropic's Claude models, known for agentic code generation capabilities.",
|
|
33737
|
+
"ui.settings.integrations.credential_manifest.api_key_for_search_engine_results_page_api_allowing_access_to_sea": "API key for Search Engine Results Page API, allowing access to search engine data. Allows your agents to search the web for information.",
|
|
33738
|
+
"ui.settings.integrations.credential_manifest.api_key_for_tavily_a_search_api_designed_specifically_for_ai_appl": "API key for Tavily, a search API designed specifically for AI applications. Allows your agents to search the web for information.",
|
|
33739
|
+
"ui.settings.integrations.credential_manifest.api_key_for_brave_search_an_independent_web_index_with_its_own_cr": "API key for Brave Search, an independent web index with its own crawler. Allows your agents to search the web for information.",
|
|
33740
|
+
"ui.settings.integrations.credential_manifest.api_key_for_exa_a_search_api_built_for_ai_applications_agents_can": "API key for Exa, a search API built for AI applications. Agents can search Exa's keyless MCP tier for free, rate-limited; a key switches to the REST API with query summaries.",
|
|
33741
|
+
"ui.settings.integrations.credential_manifest.api_key_for_parallel_a_web_search_api_for_ai_agents_agents_can_al": "API key for Parallel, a web search API for AI agents. Agents can also search through Parallel's free tier without a key; a key raises its rate limits.",
|
|
33742
|
+
"ui.settings.integrations.credential_manifest.api_key_for_perplexity_s_sonar_search_perplexity_is_best_effort_a": "API key for Perplexity's Sonar search. Perplexity is best-effort: availability varies, so agents may fall back to another provider.",
|
|
33743
|
+
"ui.settings.integrations.credential_manifest.api_key_for_fal_used_by_agents_for_generating_interpreting_and_un": "API key for FAL, used by agents for generating, interpreting, and understanding images.",
|
|
33744
|
+
"ui.settings.integrations.credential_manifest.api_key_for_xai_providing_access_to_grok_and_other_advanced_xai_m": "API key for xAI, providing access to Grok and other advanced xAI models for language and reasoning tasks.",
|
|
33745
|
+
"ui.settings.integrations.credential_manifest.name_openai_api_key": "OpenAI API key",
|
|
33746
|
+
"ui.settings.integrations.credential_manifest.name_openrouter_api_key": "OpenRouter API key",
|
|
33747
|
+
"ui.settings.integrations.credential_manifest.name_deepseek_api_key": "DeepSeek API key",
|
|
33748
|
+
"ui.settings.integrations.credential_manifest.name_mistral_api_key": "Mistral API key",
|
|
33749
|
+
"ui.settings.integrations.credential_manifest.name_kimi_api_key": "Kimi API key",
|
|
33750
|
+
"ui.settings.integrations.credential_manifest.name_alibaba_cloud_api_key": "Alibaba Cloud API key",
|
|
33751
|
+
"ui.settings.integrations.credential_manifest.name_google_ai_studio_api_key": "Google AI Studio API key",
|
|
33752
|
+
"ui.settings.integrations.credential_manifest.name_google_access_token": "Google access token",
|
|
33753
|
+
"ui.settings.integrations.credential_manifest.name_google_token_expiry_timestamp": "Google token expiry timestamp",
|
|
33754
|
+
"ui.settings.integrations.credential_manifest.name_google_refresh_token": "Google refresh token",
|
|
33755
|
+
"ui.settings.integrations.credential_manifest.name_anthropic_api_key": "Anthropic API key",
|
|
33756
|
+
"ui.settings.integrations.credential_manifest.name_serp_api_key": "SERP API key",
|
|
33757
|
+
"ui.settings.integrations.credential_manifest.name_tavily_api_key": "Tavily API key",
|
|
33758
|
+
"ui.settings.integrations.credential_manifest.name_brave_api_key": "Brave API key",
|
|
33759
|
+
"ui.settings.integrations.credential_manifest.name_exa_api_key": "Exa API key",
|
|
33760
|
+
"ui.settings.integrations.credential_manifest.name_parallel_api_key": "Parallel API key",
|
|
33761
|
+
"ui.settings.integrations.credential_manifest.name_perplexity_api_key": "Perplexity API key",
|
|
33762
|
+
"ui.settings.integrations.credential_manifest.name_fal_api_key": "FAL API key",
|
|
33763
|
+
"ui.settings.integrations.credential_manifest.name_xai_api_key": "xAI API key",
|
|
33764
|
+
"ui.settings.integrations.integration_key_dialog.cancel": "Cancel",
|
|
33765
|
+
"ui.settings.integrations.integration_key_dialog.the_header_this_server_wants_the_key_in": "The header this server wants the key in",
|
|
33766
|
+
"ui.settings.integrations.integration_key_dialog.e_g_authorization_or_x_api_key": "e.g. Authorization or X-Api-Key",
|
|
33767
|
+
"ui.settings.integrations.integration_key_dialog.this_server_declares_no_key_of_its_own_so_local_operator_adds_one": "This server declares no key of its own, so Local Operator adds one to its config for you.",
|
|
33768
|
+
"ui.settings.integrations.integration_key_dialog.save_and_test": "Save and test",
|
|
33769
|
+
"ui.settings.integrations.integration_key_dialog.keys_are_saved_encrypted_on_this_computer_this_one_is_stored_unde": "Keys are saved encrypted on this computer. This one is stored under a name derived from this integration, so no other server shares it.",
|
|
33770
|
+
"ui.settings.integrations.integration_key_dialog.keys_are_saved_encrypted_on_this_computer_other_integrations_that": "Keys are saved encrypted on this computer. Other integrations that use the same key name share it.",
|
|
33771
|
+
"ui.settings.integrations.integration_model.just_now": "just now",
|
|
33772
|
+
"ui.settings.integrations.integration_model.signing_in": "Signing in…",
|
|
33773
|
+
"ui.settings.integrations.integration_model.signing_out": "Signing out…",
|
|
33774
|
+
"ui.settings.integrations.integration_model.status_unavailable": "Status unavailable",
|
|
33775
|
+
"ui.settings.integrations.integration_model.not_connected": "Not connected",
|
|
33776
|
+
"ui.settings.integrations.integration_model.connected": "Connected",
|
|
33777
|
+
"ui.settings.integrations.integration_model.connecting": "Connecting…",
|
|
33778
|
+
"ui.settings.integrations.integration_model.needs_a_key": "Needs a key",
|
|
33779
|
+
"ui.settings.integrations.integration_model.needs_sign_in": "Needs sign-in",
|
|
33780
|
+
"ui.settings.integrations.integration_model.couldn_t_start": "Couldn't start",
|
|
33781
|
+
"ui.settings.integrations.integration_model.no_reason_was_given": "No reason was given.",
|
|
33782
|
+
"ui.settings.integrations.integration_model.signed_out": "Signed out",
|
|
33783
|
+
"ui.settings.integrations.integration_model.sign_out_didn_t_finish": "Sign-out didn't finish",
|
|
33784
|
+
"ui.settings.integrations.integration_model.the_sign_in_is_still_saved": "The sign-in is still saved.",
|
|
33785
|
+
"ui.settings.integrations.integration_model.sign_in_didn_t_finish": "Sign-in didn't finish",
|
|
33786
|
+
"ui.settings.integrations.integration_model.local_command": "Local command",
|
|
33787
|
+
"ui.settings.integrations.integration_model.remote_url": "Remote URL",
|
|
33788
|
+
"ui.settings.integrations.integration_model.claude_code": "Claude Code",
|
|
33789
|
+
"ui.settings.integrations.integration_model.vs_code": "VS Code",
|
|
33790
|
+
"ui.settings.integrations.integration_model.codex_cli": "Codex CLI",
|
|
33791
|
+
"ui.settings.integrations.integration_model.this_project": "This project",
|
|
33792
|
+
"ui.settings.integrations.integration_model.imported_from_a_project_file": "Imported from a project file",
|
|
33793
|
+
"ui.settings.integrations.integration_model.continue_sign_in": "Continue sign-in",
|
|
33794
|
+
"ui.settings.integrations.integration_model.check_again": "Check again",
|
|
33795
|
+
"ui.settings.integrations.integration_model.add_key": "Add key",
|
|
33796
|
+
"ui.settings.integrations.integration_model.sign_in": "Sign in",
|
|
33797
|
+
"ui.settings.integrations.integration_model.sign_in_again": "Sign in again",
|
|
33798
|
+
"ui.settings.integrations.integration_model.reconnect": "Reconnect",
|
|
33799
|
+
"ui.settings.integrations.integration_model.retry": "Retry",
|
|
33800
|
+
"ui.settings.integrations.integration_model.sign_out_again": "Sign out again",
|
|
33801
|
+
"ui.settings.integrations.integration_model.try_again": "Try again",
|
|
33802
|
+
"ui.settings.integrations.integration_model.cancel": "Cancel",
|
|
33803
|
+
"ui.settings.integrations.integration_model.test_connection": "Test connection",
|
|
33804
|
+
"ui.settings.integrations.integration_model.update_key": "Update key",
|
|
33805
|
+
"ui.settings.integrations.integration_model.sign_out": "Sign out",
|
|
33806
|
+
"ui.settings.integrations.integration_model.copy_setup_prompt": "Copy setup prompt",
|
|
33807
|
+
"ui.settings.integrations.integration_model.open_config_file": "Open config file",
|
|
33808
|
+
"ui.settings.integrations.integration_model.remove": "Remove",
|
|
33809
|
+
"ui.settings.integrations.integration_model.remove_in_its_own_file": "Remove in its own file",
|
|
33810
|
+
"ui.settings.integrations.integration_model.defined_in_a_file_this_app_doesn_t_write_remove_it_there": "Defined in a file this app doesn't write. Remove it there.",
|
|
33811
|
+
"ui.settings.integrations.integration_model.needs_attention": "Needs attention",
|
|
33812
|
+
"ui.settings.integrations.integration_model.give_it_a_name": "Give it a name.",
|
|
33813
|
+
"ui.settings.integrations.integration_model.use_letters_numbers_dots_dashes_underscores_or_colons_with_no_spa": "Use letters, numbers, dots, dashes, underscores or colons, with no spaces.",
|
|
33814
|
+
"ui.settings.integrations.integration_model.enter_the_server_s_url": "Enter the server's URL.",
|
|
33815
|
+
"ui.settings.integrations.integration_model.enter_a_full_url_like_https_mcp_example_com_mcp": "Enter a full URL, like https://mcp.example.com/mcp.",
|
|
33816
|
+
"ui.settings.integrations.integration_model.the_url_must_start_with_https_or_http": "The URL must start with https:// or http://.",
|
|
33817
|
+
"ui.settings.integrations.integration_model.the_url_needs_a_host_name": "The URL needs a host name.",
|
|
33818
|
+
"ui.settings.integrations.integration_model.remove_the_username_or_password_from_the_url_keys_are_added_after": "Remove the username or password from the URL. Keys are added after it's saved.",
|
|
33819
|
+
"ui.settings.integrations.integration_model.remove_the_or_part_of_the_url_keys_are_added_after_it_s_saved": "Remove the ? or # part of the URL. Keys are added after it's saved.",
|
|
33820
|
+
"ui.settings.integrations.integration_model.this_looks_like_two_urls_pasted_together_enter_just_one": "This looks like two URLs pasted together. Enter just one.",
|
|
33821
|
+
"ui.settings.integrations.integration_model.that_configuration_isn_t_valid_check_the_command_or_the_url_then_": "That configuration isn't valid. Check the command or the URL, then try again.",
|
|
33822
|
+
"ui.settings.integrations.integration_model.that_sign_in_or_test_isn_t_running_any_more_try_again": "That sign-in or test isn't running any more. Try again.",
|
|
33823
|
+
"ui.settings.integrations.integration_model.an_integration_with_this_name_already_exists_choose_another_name": "An integration with this name already exists. Choose another name.",
|
|
33824
|
+
"ui.settings.integrations.integration_model.it_s_defined_in_another_tool_s_config_so_it_can_t_be_changed_here": "It's defined in another tool's config, so it can't be changed here. Edit it in that file.",
|
|
33825
|
+
"ui.settings.integrations.integration_model.there_s_no_separate_project_config_here_so_it_can_only_be_added_g": "There's no separate project config here, so it can only be added globally.",
|
|
33826
|
+
"ui.settings.integrations.integration_model.it_no_longer_exists_the_list_has_been_refreshed": "It no longer exists. The list has been refreshed.",
|
|
33827
|
+
"ui.settings.integrations.integration_model.it_doesn_t_use_browser_sign_in": "It doesn't use browser sign-in.",
|
|
33828
|
+
"ui.settings.integrations.integration_model.a_sign_in_or_test_is_already_running_wait_for_it_to_finish_or_can": "A sign-in or test is already running. Wait for it to finish, or cancel it.",
|
|
33829
|
+
"ui.settings.integrations.integration_model.too_many_sign_ins_and_tests_are_waiting_try_again_in_a_moment": "Too many sign-ins and tests are waiting. Try again in a moment.",
|
|
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.",
|
|
33831
|
+
"ui.settings.integrations.integration_model.integrations_are_still_starting_try_again_in_a_moment": "Integrations are still starting. Try again in a moment.",
|
|
33832
|
+
"ui.settings.integrations.integration_model.the_server_refused_it_so_nothing_was_changed": "The server refused it, so nothing was changed.",
|
|
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}}",
|
|
33837
|
+
"ui.settings.integrations.integration_model.imported_from_origin": "Imported from {origin}",
|
|
33838
|
+
"ui.settings.integrations.integration_model.remove_in_origin": "Remove in {origin}",
|
|
33839
|
+
"ui.settings.integrations.integration_model.defined_in_origin_s_config_remove_it_there": "Defined in {origin}'s config. Remove it there.",
|
|
33840
|
+
"ui.settings.integrations.integration_model.an_integration_named_trimmed_already_exists": "An integration named {trimmed} already exists.",
|
|
33841
|
+
"ui.settings.integrations.integration_model.available": "Available",
|
|
33842
|
+
"ui.settings.integrations.integration_model.ready": "Ready",
|
|
33843
|
+
"ui.settings.integrations.integration_model.replace_keys": "{count, plural, one {Replace the saved key} other {Replace saved keys}}",
|
|
33844
|
+
"ui.settings.integrations.integration_row.keep": "Keep",
|
|
33845
|
+
"ui.settings.integrations.integration_row.the_saved_sign_in_is_removed_too": "The saved sign-in is removed too.",
|
|
33846
|
+
"ui.settings.integrations.integration_row.its_saved_credential_is_removed_too": "Its saved credential is removed too.",
|
|
33847
|
+
"ui.settings.integrations.integration_row.remove": "Remove",
|
|
33848
|
+
"ui.settings.integrations.integration_row.sign_out": "Sign out",
|
|
33849
|
+
"ui.settings.integrations.integration_row.more_actions_for_name": "More actions for {name}",
|
|
33850
|
+
"ui.settings.integrations.integration_row.remove_name": "Remove {name}?",
|
|
33851
|
+
"ui.settings.integrations.integration_row.sign_out_of_name": "Sign out of {name}?",
|
|
33852
|
+
"ui.settings.integrations.integration_row.agents_in_every_chat_lose_access_to_name": "Agents in every chat lose access to {name}.",
|
|
33853
|
+
"ui.settings.integrations.integration_sign_in_dialog.cancel_sign_in": "Cancel sign-in",
|
|
33854
|
+
"ui.settings.integrations.integration_sign_in_dialog.continue_in_browser": "Continue in browser",
|
|
33855
|
+
"ui.settings.integrations.integration_sign_in_dialog.try_again": "Try again",
|
|
33856
|
+
"ui.settings.integrations.integration_sign_in_dialog.starting_sign_in": "Starting sign-in…",
|
|
33857
|
+
"ui.settings.integrations.integration_sign_in_dialog.copy_the_sign_in_link": "Copy the sign-in link",
|
|
33858
|
+
"ui.settings.integrations.integration_sign_in_dialog.open_the_sign_in_page": "Open the sign-in page",
|
|
33859
|
+
"ui.settings.integrations.integration_sign_in_dialog.your_browser_didn_t_open_open_this_link_to_approve_access": "Your browser didn't open. Open this link to approve access:",
|
|
33860
|
+
"ui.settings.integrations.integration_sign_in_dialog.your_browser_didn_t_open_and_no_link_was_provided_cancel_and_try_": "Your browser didn't open, and no link was provided. Cancel and try again.",
|
|
33861
|
+
"ui.settings.integrations.integration_sign_in_dialog.sign_in_cancelled": "Sign-in cancelled.",
|
|
33862
|
+
"ui.settings.integrations.integration_sign_in_dialog.press_try_again_when_you_are_ready": "Press Try again when you are ready.",
|
|
33863
|
+
"ui.settings.integrations.integration_sign_in_dialog.sign_in_didn_t_finish": "Sign-in didn't finish.",
|
|
33864
|
+
"ui.settings.integrations.integration_sign_in_dialog.the_server_didn_t_say_why": "The server didn't say why.",
|
|
33865
|
+
"ui.settings.integrations.integration_sign_in_dialog.this_server_may_not_accept_sign_ins_from_local_operator_check_the": "This server may not accept sign-ins from Local Operator. Check the server's settings, or add a key instead.",
|
|
33866
|
+
"ui.settings.integrations.integration_sign_in_dialog.this_server_may_not_accept_sign_ins_from_local_operator_check_the_2": "This server may not accept sign-ins from Local Operator. Check the server's settings, then try again.",
|
|
33867
|
+
"ui.settings.integrations.integration_sign_in_dialog.this_server_doesn_t_publish_a_browser_sign_in_add_its_key_instead": "This server doesn't publish a browser sign-in. Add its key instead.",
|
|
33868
|
+
"ui.settings.integrations.integration_sign_in_dialog.this_server_doesn_t_publish_a_browser_sign_in_check_the_server_s_": "This server doesn't publish a browser sign-in. Check the server's settings, then try again.",
|
|
33869
|
+
"ui.settings.integrations.integration_sign_in_dialog.check_the_server_s_url_and_your_network_then_try_again": "Check the server's URL and your network, then try again.",
|
|
33870
|
+
"ui.settings.integrations.integration_sign_in_dialog.check_the_server_s_settings_then_try_again": "Check the server's settings, then try again.",
|
|
33871
|
+
"ui.settings.integrations.integration_sign_in_dialog.close": "Close",
|
|
33872
|
+
"ui.settings.integrations.integration_sign_in_dialog.sign_in_link_copied": "Sign-in link copied.",
|
|
33873
|
+
"ui.settings.integrations.integration_sign_in_dialog.your_browser_opened_approve_access_to_name_there_then_come_back_h": "Your browser opened. Approve access to {name} there, then come back here.",
|
|
33874
|
+
"ui.settings.integrations.integration_sign_in_dialog.waiting_for_you_to_approve_access_to_name": "Waiting for you to approve access to {name}…",
|
|
33875
|
+
"ui.settings.integrations.integration_sign_in_dialog.signed_in_to_name_agents_can_use_it_now": "Signed in to {name}. Agents can use it now.",
|
|
33876
|
+
"ui.settings.integrations.integration_sign_in_dialog.sign_in_to_name": "Sign in to {name}",
|
|
33877
|
+
"ui.settings.integrations.mcp_management_section.add_integration": "Add integration",
|
|
33878
|
+
"ui.settings.integrations.mcp_management_section.integrations_need_a_newer_local_operator_backend_update_it_and_re": "Integrations need a newer Local Operator backend. Update it and restart the app to manage them here.",
|
|
33879
|
+
"ui.settings.integrations.mcp_management_section.integrations_can_be_managed_here_once_a_chat_has_started": "Integrations can be managed here once a chat has started.",
|
|
33880
|
+
"ui.settings.integrations.mcp_management_section.start_a_chat": "Start a chat",
|
|
33881
|
+
"ui.settings.integrations.mcp_management_section.updating_local_operator_removes_this_step": "Updating Local Operator removes this step.",
|
|
33882
|
+
"ui.settings.integrations.mcp_management_section.loading_integrations": "Loading integrations",
|
|
33883
|
+
"ui.settings.integrations.mcp_management_section.this_chat_s_folder_no_longer_exists_so_only_global_integrations_a": "This chat's folder no longer exists, so only global integrations are shown.",
|
|
33884
|
+
"ui.settings.integrations.mcp_management_section.integrations_couldn_t_be_loaded": "Integrations couldn't be loaded.",
|
|
33885
|
+
"ui.settings.integrations.mcp_management_section.retry": "Retry",
|
|
33886
|
+
"ui.settings.integrations.mcp_management_section.dismiss": "Dismiss",
|
|
33887
|
+
"ui.settings.integrations.mcp_management_section.search_integrations": "Search integrations",
|
|
33888
|
+
"ui.settings.integrations.mcp_management_section.no_integrations_yet": "No integrations yet",
|
|
33889
|
+
"ui.settings.integrations.mcp_management_section.integrations_let_agents_read_and_act_in_your_other_tools_like_not": "Integrations let agents read and act in your other tools, like Notion or Linear. Add one with a command that runs on this computer, or a server's URL.",
|
|
33890
|
+
"ui.settings.integrations.mcp_management_section.no_integrations_match_this_search": "No integrations match this search.",
|
|
33891
|
+
"ui.settings.integrations.mcp_management_section.clear_search": "Clear search",
|
|
33892
|
+
"ui.settings.integrations.mcp_management_section.setup_steps_copied_paste_them_into_a_chat": "Setup steps copied. Paste them into a chat.",
|
|
33893
|
+
"ui.settings.integrations.mcp_management_section.removed_name": "Removed {name}.",
|
|
33894
|
+
"ui.settings.integrations.use_integrations.that_header_can_t_carry_this_key_it_may_already_be_set_on_the_ser": "That header can't carry this key. It may already be set on the server, or belong to the transport - try a different header name. Nothing was saved.",
|
|
33895
|
+
"ui.settings.integrations.use_integrations.a_saved_value_already_exists_for_this_key_tick_label_to_overwrite": "A saved value already exists for this key. Tick “{label}” to overwrite it.",
|
|
33896
|
+
"ui.settings.integrations.mcp_management_section.copy_section_title": "Integrations",
|
|
33897
|
+
"ui.settings.integrations.mcp_management_section.copy_section_description": "Let agents use your tools and accounts, like Notion, Linear or GitHub.",
|
|
33898
|
+
"ui.settings.integrations.integration_model.copy_ready_explanation": "Nothing is wrong. It starts when a chat uses it.",
|
|
33899
|
+
"ui.settings.integrations.integration_model.copy_not_connected_explanation": "Not running in this chat.",
|
|
33900
|
+
"ui.settings.integrations.integration_model.copy_catalog_refusal_fallback": "The server refused it, so nothing was changed. Try again.",
|
|
33901
|
+
"ui.settings.integrations.add_integration_form.copy_add_integration_pickup_note": "New chats can use it right away. Open chats pick it up when you start a new chat or reload integrations there.",
|
|
33902
|
+
"ui.settings.integrations.add_integration_form.copy_transport_hint": "Most services give you a URL. Use Local command when their setup says npx or uvx.",
|
|
33903
|
+
"ui.settings.integrations.integration_sign_in_dialog.done": "Done",
|
|
33904
|
+
"ui.settings.integrations.integration_model.fix": "Fix",
|
|
33905
|
+
"ui.settings.integrations.integration_model.connect": "Connect",
|
|
33906
|
+
"ui.settings.integrations.integration_model.test": "Test",
|
|
33907
|
+
"ui.settings.integrations.integration_model.reload": "Reload",
|
|
33908
|
+
"ui.settings.integrations.integration_model.disconnect": "Disconnect",
|
|
33909
|
+
"ui.settings.integrations.integration_model.global": "Global",
|
|
33910
|
+
"ui.settings.integrations.integration_key_dialog.add_keys_heading": "{count, plural, one {Add the key for {name}} other {Add keys for {name}}}",
|
|
33911
|
+
"ui.settings.integrations.integration_key_dialog.saving": "Saving…",
|
|
33912
|
+
"ui.settings.integrations.mcp_management_section.borrowed_chat_notice": "Showing the integrations for {chat}, your most recent chat.",
|
|
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 {}}",
|
|
33914
|
+
"ui.settings.integrations.integration_model.days_ago": "{days, plural, one {{days, number, ::group-off} d ago} other {{days, number, ::group-off} d ago}}",
|
|
33915
|
+
"ui.settings.integrations.integration_model.connected_with_tools": "Connected · {tools}",
|
|
33916
|
+
"ui.settings.integrations.integration_model.worked_when_with_tools": "Worked {when} · {tools}",
|
|
33917
|
+
"ui.settings.integrations.integration_model.worked_earlier_with_tools": "Worked earlier · {tools}",
|
|
33918
|
+
"ui.settings.integrations.integration_model.tools_when_last_checked": "{tools} when last checked",
|
|
33919
|
+
"ui.settings.integrations.mcp_management_section.no_match_for_name": 'No integration matches "{asked}".',
|
|
33920
|
+
"ui.settings.integrations.mcp_management_section.showing_fallback_for_unknown": 'Showing "{shown}" — "{asked}" is not one of your integrations.',
|
|
33921
|
+
"ui.settings.integrations.use_integrations.keys_not_saved": "Not saved: {keys}. The encrypted store may be locked.",
|
|
33922
|
+
"ui.settings.integrations.mcp_management_section.search_integrations_placeholder": "Search {integrations}"
|
|
32031
33923
|
};
|
|
32032
|
-
const enUiSchedules = {};
|
|
32033
33924
|
const enUiSettings = {
|
|
32034
33925
|
"ui.settings.language.dialog.description": "Applies across the app and the terminal — the same setting the settings page edits.",
|
|
32035
33926
|
"ui.settings.language.dialog.loading": "Loading the current setting...",
|
|
@@ -32071,7 +33962,180 @@ const enUiSettings = {
|
|
|
32071
33962
|
"ui.settings.profile.retry": "Retry",
|
|
32072
33963
|
"ui.settings.profile.retrying": "Retrying"
|
|
32073
33964
|
};
|
|
32074
|
-
const
|
|
33965
|
+
const enUiSettingsModel = {
|
|
33966
|
+
"ui.settings.model.backend_setting_combos.search_providers": "Search providers",
|
|
33967
|
+
"ui.settings.model.backend_setting_combos.search_models": "Search models",
|
|
33968
|
+
"ui.settings.model.model_setting_options.signed_in": "Signed in",
|
|
33969
|
+
"ui.settings.model.model_setting_options.needs_sign_in": "Needs sign-in",
|
|
33970
|
+
"ui.settings.model.model_setting_options.custom_model": "Custom model",
|
|
33971
|
+
"ui.settings.model.model_setting_options.custom_value": "Custom value",
|
|
33972
|
+
"ui.settings.model.model_setting_options.models_for_name": "Models for {name}",
|
|
33973
|
+
"ui.settings.model.model_setting_options.no_models_listed_for_name_showing_all_models": "No models listed for {name}. Showing all models.",
|
|
33974
|
+
"ui.settings.model.model_setting_options.provider_group_0": "Ready to use",
|
|
33975
|
+
"ui.settings.model.model_setting_options.provider_group_1": "Needs a running server",
|
|
33976
|
+
"ui.settings.model.model_setting_options.provider_group_2": "Needs sign-in",
|
|
33977
|
+
"ui.settings.model.settings_page.model_settings": "Model settings",
|
|
33978
|
+
"ui.settings.model.settings_page.configure_the_default_ai_model_and_hosting_providers_used_for_gen": "Configure the default AI model and hosting providers used for generating responses. This will be used for all agents that don't have a specific model or hosting provider configured. You can override these settings for individual agents in the agent settings.",
|
|
33979
|
+
"ui.settings.model.settings_page.you_need_a_radient_account_or_your_own_api_keys_to_reach_cloud_pr": "You need a Radient account or your own API keys to reach cloud providers. If you don't see more hosting providers and models here, sign in to Radient, or add a provider's API key below, under Providers.",
|
|
33980
|
+
"ui.settings.model.settings_page.model_providers": "Model providers",
|
|
33981
|
+
"ui.settings.model.settings_page.no_hosting_options": "No hosting providers available. Sign in to a provider, or add a provider's API key below, under Providers.",
|
|
33982
|
+
"ui.settings.model.system_prompt.instructions": "Instructions",
|
|
33983
|
+
"ui.settings.model.system_prompt.enter_instructions_for_how_all_agents_should_behave_and_respond_t": "Enter instructions for how all agents should behave and respond to your requests...",
|
|
33984
|
+
"ui.settings.model.system_prompt.cancel": "Cancel",
|
|
33985
|
+
"ui.settings.model.system_prompt.last_modified": "Last modified:",
|
|
33986
|
+
"ui.settings.model.system_prompt.system_prompt": "System prompt",
|
|
33987
|
+
"ui.settings.model.system_prompt.every_local_operator_agent_receives_this_prompt_in_addition_to_it": "Every Local Operator agent receives this prompt in addition to its own instructions, so it is the place for baseline expectations and for details you want every agent to know about you, such as your name, location, or preferences. It is sent to your selected hosting provider.",
|
|
33988
|
+
"ui.settings.model.system_prompt.loading_system_prompt": "Loading system prompt",
|
|
33989
|
+
"ui.settings.model.system_prompt.save_changes": "Save changes",
|
|
33990
|
+
"ui.settings.model.system_prompt.unknown_error": "Unknown error",
|
|
33991
|
+
"ui.settings.model.model_setting_options.copy_sign_in_unknown_group": "Sign-in state unknown",
|
|
33992
|
+
"ui.settings.model.model_setting_options.copy_current_value_group": "Current value",
|
|
33993
|
+
"ui.settings.model.model_setting_options.copy_signed_in_group": "Signed in",
|
|
33994
|
+
"ui.settings.model.model_setting_options.copy_needs_sign_in_group": "Needs sign-in",
|
|
33995
|
+
"ui.settings.model.system_prompt.saving": "Saving...",
|
|
33996
|
+
"ui.settings.model.model_setting_options.provider_detail": "{provider}{aggregated, select, yes {, aggregated} other {}}{credential, select, signed_in {, signed in} missing {, no credential} other {}}",
|
|
33997
|
+
"ui.settings.model.system_prompt.load_failed": "Failed to load system prompt: {reason}"
|
|
33998
|
+
};
|
|
33999
|
+
const enUiSettingsNavigation = {
|
|
34000
|
+
"ui.settings.navigation.settings_page.the_local_operator_server_is_taking_longer_than_usual_to_answer_i": "The Local Operator server is taking longer than usual to answer. If it does not respond, you will be able to retry from here.",
|
|
34001
|
+
"ui.settings.navigation.settings_page.your_settings_could_not_be_loaded": "Your settings could not be loaded.",
|
|
34002
|
+
"ui.settings.navigation.settings_page.sign_in_to_the_services_your_agents_think_with_new_chats_use_your": "Sign in to the services your agents think with. New chats use your default model.",
|
|
34003
|
+
"ui.settings.navigation.settings_page.backend_settings": "Backend settings",
|
|
34004
|
+
"ui.settings.navigation.settings_page.every_setting_the_backend_registry_owns_searchable_with_typed_edi": "Every setting the backend registry owns, searchable, with typed editors and scopes.",
|
|
34005
|
+
"ui.settings.navigation.settings_page.retry": "Retry",
|
|
34006
|
+
"ui.settings.navigation.settings_page.loading_settings": "Loading settings",
|
|
34007
|
+
"ui.settings.navigation.settings_sidebar.settings_sections": "Settings sections",
|
|
34008
|
+
"ui.settings.navigation.settings_sidebar.general": "General",
|
|
34009
|
+
"ui.settings.navigation.settings_sidebar.backend": "Backend",
|
|
34010
|
+
"ui.settings.navigation.settings_sidebar.system": "System",
|
|
34011
|
+
"ui.settings.navigation.settings_sidebar.general_settings": "General settings",
|
|
34012
|
+
"ui.settings.navigation.settings_sidebar.radient_account": "Radient account",
|
|
34013
|
+
"ui.settings.navigation.settings_sidebar.integrations": "Integrations",
|
|
34014
|
+
"ui.settings.navigation.settings_sidebar.appearance": "Appearance",
|
|
34015
|
+
"ui.settings.navigation.settings_sidebar.speech_voicing": "Speech voicing",
|
|
34016
|
+
"ui.settings.navigation.settings_sidebar.keyboard_shortcuts": "Keyboard shortcuts",
|
|
34017
|
+
"ui.settings.navigation.settings_sidebar.model_providers": "Model providers",
|
|
34018
|
+
"ui.settings.navigation.settings_sidebar.backend_settings": "Backend settings",
|
|
34019
|
+
"ui.settings.navigation.settings_sidebar.application_updates": "Application updates",
|
|
34020
|
+
"ui.settings.navigation.settings_sidebar.account": "Account",
|
|
34021
|
+
"ui.settings.navigation.settings_page.retrying": "Retrying"
|
|
34022
|
+
};
|
|
34023
|
+
const enUiSettingsShortcuts = {
|
|
34024
|
+
"ui.settings.shortcuts.keyboard_shortcuts_section.clear": "Clear",
|
|
34025
|
+
"ui.settings.shortcuts.keyboard_shortcuts_section.reset": "Reset",
|
|
34026
|
+
"ui.settings.shortcuts.keyboard_shortcuts_section.press_the_keys_you_want_esc_cancels": "Press the keys you want; Esc cancels.",
|
|
34027
|
+
"ui.settings.shortcuts.keyboard_shortcuts_section.keyboard_shortcuts": "Keyboard shortcuts",
|
|
34028
|
+
"ui.settings.shortcuts.keyboard_shortcuts_section.shortcuts_for_the_panel_rail_focus_a_field_and_press_the_keys_you": "Shortcuts for the panel rail. Focus a field and press the keys you want; Esc cancels, Reset restores an action's default, and Clear leaves it unbound.",
|
|
34029
|
+
"ui.settings.shortcuts.keyboard_shortcuts_section.no_shortcut": "No shortcut",
|
|
34030
|
+
"ui.settings.shortcuts.keyboard_shortcuts_section.label_press_the_keys_you_want": "{label}: press the keys you want",
|
|
34031
|
+
"ui.settings.shortcuts.keyboard_shortcuts_section.clear_label_s_shortcut": "Clear {label}'s shortcut",
|
|
34032
|
+
"ui.settings.shortcuts.keyboard_shortcuts_section.reset_label_to_its_default": "Reset {label} to its default"
|
|
34033
|
+
};
|
|
34034
|
+
const enUiSettingsSpeech = {
|
|
34035
|
+
"ui.settings.speech.speech_section.try_again": "Try again",
|
|
34036
|
+
"ui.settings.speech.speech_section.retry": "Retry",
|
|
34037
|
+
"ui.settings.speech.speech_section.speaks_through": "Speaks through",
|
|
34038
|
+
"ui.settings.speech.speech_section.availability": "Availability",
|
|
34039
|
+
"ui.settings.speech.speech_section.the_setting_could_not_be_saved": "The setting could not be saved.",
|
|
34040
|
+
"ui.settings.speech.speech_section.the_setting_could_not_be_reset": "The setting could not be reset.",
|
|
34041
|
+
"ui.settings.speech.speech_section.speech_voicing": "Speech voicing",
|
|
34042
|
+
"ui.settings.speech.speech_section.how_the_assistant_sounds_when_it_speaks_aloud": "How the assistant sounds when it speaks aloud.",
|
|
34043
|
+
"ui.settings.speech.speech_section.speech_settings_could_not_be_loaded": "Speech settings could not be loaded.",
|
|
34044
|
+
"ui.settings.speech.speech_section.nothing_yet": "Nothing yet",
|
|
34045
|
+
"ui.settings.speech.speech_section.no_provider": "No provider",
|
|
34046
|
+
"ui.settings.speech.speech_section.available": "(available)",
|
|
34047
|
+
"ui.settings.speech.speech_section.not_available": "(not available)",
|
|
34048
|
+
"ui.settings.speech.speech_settings_model.radient_pass": "Radient Pass",
|
|
34049
|
+
"ui.settings.speech.speech_settings_model.no_provider": "No provider",
|
|
34050
|
+
"ui.settings.speech.speech_section.copy_backend_older_sentence": "This backend does not serve the voicing surface. Update the backend to tune how the assistant sounds.",
|
|
34051
|
+
"ui.settings.speech.speech_section.copy_unavailable_sentence": "Speech availability could not be read.",
|
|
34052
|
+
"ui.settings.speech.speech_section.ready": "Ready",
|
|
34053
|
+
"ui.settings.speech.speech_section.missing_voice_rows": "{count, plural, one {This backend does not register {rows} yet, so that row is not shown.} other {This backend does not register {rows} yet, so those rows are not shown.}}"
|
|
34054
|
+
};
|
|
34055
|
+
const enUiSettingsUpdates = {
|
|
34056
|
+
"ui.settings.updates.app_updates_section.application_updates_and_info": "Application updates and info",
|
|
34057
|
+
"ui.settings.updates.app_updates_section.check_for_updates_and_view_information_about_your_local_operator_": "Check for updates and view information about your Local Operator installation.",
|
|
34058
|
+
"ui.settings.updates.app_updates_section.application_version": "Application version",
|
|
34059
|
+
"ui.settings.updates.app_updates_section.the_version_of_the_local_operator_user_interface_application": "The version of the Local Operator user interface application.",
|
|
34060
|
+
"ui.settings.updates.app_updates_section.server_version": "Server version",
|
|
34061
|
+
"ui.settings.updates.app_updates_section.the_version_of_the_local_operator_api_server_backend_and_the_addr": "The version of the Local Operator API server backend, and the address of the daemon it was read from.",
|
|
34062
|
+
"ui.settings.updates.app_updates_section.not_answering": "Not answering",
|
|
34063
|
+
"ui.settings.updates.app_updates_section.platform": "Platform",
|
|
34064
|
+
"ui.settings.updates.app_updates_section.the_operating_system_and_architecture_your_application_is_running": "The operating system and architecture your application is running on.",
|
|
34065
|
+
"ui.settings.updates.app_updates_section.node_js_version": "Node.js version",
|
|
34066
|
+
"ui.settings.updates.app_updates_section.the_javascript_runtime_environment_version": "The JavaScript runtime environment version.",
|
|
34067
|
+
"ui.settings.updates.app_updates_section.electron_version": "Electron version",
|
|
34068
|
+
"ui.settings.updates.app_updates_section.the_framework_version_enabling_this_desktop_application": "The framework version enabling this desktop application.",
|
|
34069
|
+
"ui.settings.updates.app_updates_section.state_loading": "Loading...",
|
|
34070
|
+
"ui.settings.updates.app_updates_section.state_not_connected": "Not connected",
|
|
34071
|
+
"ui.settings.updates.app_updates_section.state_not_attached": "Not attached",
|
|
34072
|
+
"ui.settings.updates.app_updates_section.state_version_unknown": "Version unknown",
|
|
34073
|
+
"ui.settings.updates.app_updates_section.state_unavailable": "Unavailable",
|
|
34074
|
+
"ui.settings.updates.update_following.update_notifications": "Update notifications",
|
|
34075
|
+
"ui.settings.updates.update_following.how_much_of_a_version_change_shows_the_update_notice_at_the_botto": "How much of a version change shows the update notice at the bottom of the window. A check you run yourself always reports what it finds.",
|
|
34076
|
+
"ui.settings.updates.update_following.application_updates": "Application updates",
|
|
34077
|
+
"ui.settings.updates.update_following.server_updates": "Server updates",
|
|
34078
|
+
"ui.settings.updates.update_following.patch_label": "Every release",
|
|
34079
|
+
"ui.settings.updates.update_following.patch_help": "Patch, minor and major versions.",
|
|
34080
|
+
"ui.settings.updates.update_following.minor_label": "Minor and major only",
|
|
34081
|
+
"ui.settings.updates.update_following.minor_help": "Skips patch releases.",
|
|
34082
|
+
"ui.settings.updates.update_following.major_label": "Breaking changes only",
|
|
34083
|
+
"ui.settings.updates.update_following.major_help": "Skips patches and minors. Before 1.0 a new minor is a breaking change.",
|
|
34084
|
+
"ui.settings.updates.update_following.surface_choice": "{surface}: {choice}"
|
|
34085
|
+
};
|
|
34086
|
+
const enUiShell = {
|
|
34087
|
+
"ui.shell.collapsible_app_logo.local_operator": "Local Operator",
|
|
34088
|
+
"ui.shell.panel_rail.panels": "Panels",
|
|
34089
|
+
"ui.shell.sidebar_navigation.agent_hub": "Agent hub",
|
|
34090
|
+
"ui.shell.sidebar_navigation.agents": "Agents",
|
|
34091
|
+
"ui.shell.sidebar_navigation.aida_missed": "{name}, {count, plural, one {{count, number, ::group-off} missed message} other {{count, number, ::group-off} missed messages}}",
|
|
34092
|
+
"ui.shell.sidebar_navigation.aida_working": "{name}, working",
|
|
34093
|
+
"ui.shell.sidebar_navigation.browser": "Browser",
|
|
34094
|
+
"ui.shell.sidebar_navigation.browser_waiting": "Browser, {count, plural, one {{countText} waiting} other {{countText} waiting}}",
|
|
34095
|
+
"ui.shell.sidebar_navigation.close_sidebar": "Close sidebar",
|
|
34096
|
+
"ui.shell.sidebar_navigation.collapse_sidebar": "Collapse sidebar",
|
|
34097
|
+
"ui.shell.sidebar_navigation.expand_sidebar": "Expand sidebar",
|
|
34098
|
+
"ui.shell.sidebar_navigation.mesh": "Mesh",
|
|
34099
|
+
"ui.shell.sidebar_navigation.mesh_waiting": "Mesh, {count, plural, one {{countText} waiting} other {{countText} waiting}}",
|
|
34100
|
+
"ui.shell.sidebar_navigation.new_chat": "New chat",
|
|
34101
|
+
"ui.shell.sidebar_navigation.new_chat_shortcut": "New chat ({shortcut})",
|
|
34102
|
+
"ui.shell.sidebar_navigation.projects": "Projects",
|
|
34103
|
+
"ui.shell.sidebar_navigation.schedules": "Schedules",
|
|
34104
|
+
"ui.shell.sidebar_navigation.search": "Search",
|
|
34105
|
+
"ui.shell.sidebar_navigation.search_accessible": "Search ({everything}) — chats ({chats})",
|
|
34106
|
+
"ui.shell.sidebar_navigation.search_tooltip": "Search everything ({everything}) · your chats ({chats})",
|
|
34107
|
+
"ui.shell.sidebar_navigation.settings": "Settings",
|
|
34108
|
+
"ui.shell.user_profile_sidebar.account_settings": "Account settings",
|
|
34109
|
+
"ui.shell.user_profile_sidebar.account_unavailable": "Account unavailable",
|
|
34110
|
+
"ui.shell.user_profile_sidebar.checking_account": "Checking account…",
|
|
34111
|
+
"ui.shell.user_profile_sidebar.privacy_and_security": "Privacy and security",
|
|
34112
|
+
"ui.shell.user_profile_sidebar.reconnect_radient": "Reconnect Radient",
|
|
34113
|
+
"ui.shell.user_profile_sidebar.settings": "Settings",
|
|
34114
|
+
"ui.shell.user_profile_sidebar.sign_out": "Sign out",
|
|
34115
|
+
"ui.shell.user_profile_sidebar.user": "User"
|
|
34116
|
+
};
|
|
34117
|
+
const enUiShellRail = {
|
|
34118
|
+
"ui.shell.rail.ask.aria": "Asks{chord}, {subject}",
|
|
34119
|
+
"ui.shell.rail.ask.aria_count": "Asks{chord}, {subject}, {count, plural, one {{countText} waiting} other {{countText} waiting}}",
|
|
34120
|
+
"ui.shell.rail.browser.aria": "Browser{chord}",
|
|
34121
|
+
"ui.shell.rail.browser.aria_count": "Browser{chord}, {count, plural, one {{countText} waiting} other {{countText} waiting}}",
|
|
34122
|
+
"ui.shell.rail.browser.tooltip": "{state, select, open {Close browser{chord}} other {Open browser{chord}}}",
|
|
34123
|
+
"ui.shell.rail.browser.tooltip_count": "{state, select, open {Close browser{chord}} other {Open browser{chord}}} — {count, plural, one {{countText} approval} other {{countText} approvals}} waiting",
|
|
34124
|
+
"ui.shell.rail.canvas.aria": "Canvas{chord}",
|
|
34125
|
+
"ui.shell.rail.canvas.aria_count": "Canvas{chord}, {count, plural, one {{countText} file} other {{countText} files}}",
|
|
34126
|
+
"ui.shell.rail.canvas.tooltip": "{state, select, open {Close canvas{chord}} other {Open canvas{chord}}}",
|
|
34127
|
+
"ui.shell.rail.canvas.tooltip_count": "{state, select, open {Close canvas{chord}} other {Open canvas{chord}}} — {count, plural, one {{countText} file} other {{countText} files}}",
|
|
34128
|
+
"ui.shell.rail.code.aria": "Code review{chord}{mark}",
|
|
34129
|
+
"ui.shell.rail.code.aria_details": "Code review{chord}, {details}{mark}",
|
|
34130
|
+
"ui.shell.rail.code.mentioned": "{count, plural, one {{countText} mentioned} other {{countText} mentioned}}",
|
|
34131
|
+
"ui.shell.rail.code.opened": "{count, plural, one {{countText} opened} other {{countText} opened}}",
|
|
34132
|
+
"ui.shell.rail.code.tooltip": "{state, select, open {Close code review{chord}} other {Open code review{chord}}}{mark}",
|
|
34133
|
+
"ui.shell.rail.code.tooltip_details": "{state, select, open {Close code review{chord}} other {Open code review{chord}}} — {details}{mark}",
|
|
34134
|
+
"ui.shell.rail.console.aria": "Console{chord}",
|
|
34135
|
+
"ui.shell.rail.console.aria_count": "Console{chord}, {count, plural, one {{countText} finished since you looked} other {{countText} finished since you looked}}",
|
|
34136
|
+
"ui.shell.rail.console.tooltip": "{state, select, open {Close console{chord}} other {Open console{chord}}}",
|
|
34137
|
+
"ui.shell.rail.console.tooltip_count": "{state, select, open {Close console{chord}} other {Open console{chord}}} — {count, plural, one {{countText} finished since you looked} other {{countText} finished since you looked}}"
|
|
34138
|
+
};
|
|
32075
34139
|
const frUiConsole = {
|
|
32076
34140
|
"ui.console.close.body": "Le programme en cours sera arrêté et son onglet supprimé.",
|
|
32077
34141
|
"ui.console.close.busy": "Fermeture…",
|
|
@@ -32103,16 +34167,16 @@ const frUiConsole = {
|
|
|
32103
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.",
|
|
32104
34168
|
"ui.console.unavailable.title": "La console est indisponible dans cette application",
|
|
32105
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.",
|
|
32106
|
-
"ui.console.capacity.summary": "{live, number} sur {limit, number} actifs dans l’app",
|
|
32107
|
-
"ui.console.capacity.summary_compact": "{live, number}/{limit, number} · {archived, plural, one {
|
|
32108
|
-
"ui.console.capacity.summary_compact_bare": "{live, number}/{limit, number}",
|
|
32109
|
-
"ui.console.capacity.archived": " · {archived, plural, one {
|
|
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}}",
|
|
32110
34174
|
"ui.console.capacity.full": " · plein",
|
|
32111
34175
|
"ui.console.capacity.help": "Compteurs pour toute l’application, toutes conversations confondues. L’historique conservé n’occupe pas d’emplacement de processus.",
|
|
32112
|
-
"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.",
|
|
32113
34177
|
"ui.console.cleanup.label": "Effacer les terminaux d’agent terminés",
|
|
32114
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.",
|
|
32115
|
-
"ui.console.cleanup.result": "Effacé : {released, plural, one {
|
|
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.}}",
|
|
32116
34180
|
"ui.console.cleanup.result_none": "Rien à effacer — aucun terminal d’agent terminé dans cette conversation.",
|
|
32117
34181
|
"ui.console.dismiss_history": "Effacer le terminal et supprimer la sortie conservée",
|
|
32118
34182
|
"ui.console.dismiss.body": "Effacer ce terminal supprime sa sortie conservée sur le disque ; une relance ne pourra pas la restaurer.",
|
|
@@ -32121,9 +34185,9 @@ const frUiConsole = {
|
|
|
32121
34185
|
"ui.console.tab.ended": "terminé",
|
|
32122
34186
|
"ui.console.tab.agent_opened": "Un agent a ouvert cette console",
|
|
32123
34187
|
"ui.console.tab.agent_typed": "Un agent a saisi du texte dans cette console",
|
|
32124
|
-
"ui.console.tab.close_label": "Fermer {title}, onglet {index, number} sur {total, number}",
|
|
32125
|
-
"ui.console.tab.clear_label": "Effacer {title}, onglet {index, number} sur {total, number}",
|
|
32126
|
-
"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",
|
|
32127
34191
|
"ui.console.secure_toggle.stop": "Arrêter la saisie sécurisée",
|
|
32128
34192
|
"ui.console.secure_toggle.start": "Saisie sécurisée",
|
|
32129
34193
|
"ui.console.secure_toggle.start_tooltip": "Saisie sécurisée : arrêter l’enregistrement de ce terminal",
|
|
@@ -32177,8 +34241,8 @@ const frUiOnboarding = {
|
|
|
32177
34241
|
"ui.onboarding.search.row.save_failed": "La clé n’a pas pu être enregistrée.",
|
|
32178
34242
|
"ui.onboarding.search.row.saved": "Enregistré",
|
|
32179
34243
|
"ui.onboarding.search.row.saving": "Enregistrement : {name}",
|
|
32180
|
-
"ui.onboarding.modal.step_of": "Étape {current, number} sur {total, number}",
|
|
32181
|
-
"ui.onboarding.modal.steps_total": "{total, plural, one {
|
|
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}}"
|
|
32182
34246
|
};
|
|
32183
34247
|
const frUiSettings = {
|
|
32184
34248
|
"ui.settings.language.dialog.description": "S’applique à l’application et au terminal — le même réglage que dans les paramètres.",
|
|
@@ -32222,20 +34286,52 @@ const frUiSettings = {
|
|
|
32222
34286
|
"ui.settings.profile.retrying": "Nouvel essai"
|
|
32223
34287
|
};
|
|
32224
34288
|
const bundledEnglish = {
|
|
34289
|
+
...enUiAgentsDialogs,
|
|
32225
34290
|
...enUiAgents,
|
|
34291
|
+
...enUiAgentsModels,
|
|
34292
|
+
...enUiAgentsNavigation,
|
|
34293
|
+
...enUiAgentsRefusals,
|
|
34294
|
+
...enUiAgentsSettings,
|
|
34295
|
+
...enUiAgentsStarters,
|
|
32226
34296
|
...enUiBrowserChrome,
|
|
32227
34297
|
...enUiBrowser,
|
|
32228
34298
|
...enUiCanvas,
|
|
34299
|
+
...enUiChatComposerMedia,
|
|
32229
34300
|
...enUiChat,
|
|
34301
|
+
...enUiChatSidebarView,
|
|
34302
|
+
...enUiCodeReview,
|
|
34303
|
+
...enUiCommandPalette,
|
|
34304
|
+
...enUiCommonAccount,
|
|
34305
|
+
...enUiCommonActions,
|
|
34306
|
+
...enUiCommonConnection,
|
|
34307
|
+
...enUiCommonEditing,
|
|
34308
|
+
...enUiCommonErrors,
|
|
34309
|
+
...enUiCommonForms,
|
|
34310
|
+
...enUiCommonLoading,
|
|
34311
|
+
...enUiCommonModels,
|
|
34312
|
+
...enUiCommonUpdates,
|
|
32230
34313
|
...enUiConsole,
|
|
34314
|
+
...enUiHubComments,
|
|
32231
34315
|
...enUiHub,
|
|
34316
|
+
...enUiHubTaxonomy,
|
|
34317
|
+
...enUiInstaller,
|
|
32232
34318
|
...enUiMesh,
|
|
32233
34319
|
...enUiOnboarding,
|
|
32234
34320
|
...enUiProjects,
|
|
32235
34321
|
...enUiProviders,
|
|
32236
34322
|
...enUiSchedules,
|
|
34323
|
+
...enUiSettingsAccount,
|
|
34324
|
+
...enUiSettingsAppearance,
|
|
34325
|
+
...enUiSettingsConfiguration,
|
|
34326
|
+
...enUiSettingsIntegrations,
|
|
32237
34327
|
...enUiSettings,
|
|
32238
|
-
...
|
|
34328
|
+
...enUiSettingsModel,
|
|
34329
|
+
...enUiSettingsNavigation,
|
|
34330
|
+
...enUiSettingsShortcuts,
|
|
34331
|
+
...enUiSettingsSpeech,
|
|
34332
|
+
...enUiSettingsUpdates,
|
|
34333
|
+
...enUiShell,
|
|
34334
|
+
...enUiShellRail
|
|
32239
34335
|
};
|
|
32240
34336
|
const bundledCatalogues = {
|
|
32241
34337
|
en: bundledEnglish,
|
|
@@ -33297,19 +35393,51 @@ const CLICK_FUNCTION = `function () {
|
|
|
33297
35393
|
const r = this.getBoundingClientRect();
|
|
33298
35394
|
const cx = r.left + r.width / 2, cy = r.top + r.height / 2;
|
|
33299
35395
|
const opts = { bubbles: true, cancelable: true, view: window, clientX: cx, clientY: cy, button: 0 };
|
|
33300
|
-
|
|
33301
|
-
|
|
33302
|
-
|
|
33303
|
-
|
|
33304
|
-
//
|
|
33305
|
-
//
|
|
33306
|
-
//
|
|
33307
|
-
//
|
|
33308
|
-
|
|
33309
|
-
|
|
33310
|
-
|
|
33311
|
-
|
|
33312
|
-
|
|
35396
|
+
const doc = this.ownerDocument;
|
|
35397
|
+
const root = this.getRootNode();
|
|
35398
|
+
const roots = root === doc ? [doc] : [doc, root];
|
|
35399
|
+
let focusChanged = false, cancelled = false;
|
|
35400
|
+
// Comparing only final activeElement misses intentional blur or focus-away-
|
|
35401
|
+
// and-back. Observe the target's own tree as well as its document (shadow
|
|
35402
|
+
// retargeting), never a cross-origin parent document. Listeners live only for
|
|
35403
|
+
// this synchronous down phase and are removed even if a handler detaches us.
|
|
35404
|
+
const changed = () => { focusChanged = true; };
|
|
35405
|
+
const release = () => {
|
|
35406
|
+
for (const tree of roots) {
|
|
35407
|
+
tree.removeEventListener('focusin', changed, true);
|
|
35408
|
+
tree.removeEventListener('focusout', changed, true);
|
|
35409
|
+
}
|
|
35410
|
+
};
|
|
35411
|
+
for (const tree of roots) {
|
|
35412
|
+
tree.addEventListener('focusin', changed, true);
|
|
35413
|
+
tree.addEventListener('focusout', changed, true);
|
|
35414
|
+
}
|
|
35415
|
+
try {
|
|
35416
|
+
for (const type of ['pointerover','pointerenter','pointerdown','mousedown','pointerup','mouseup','click']) {
|
|
35417
|
+
const Ctor = type.startsWith('pointer') ? PointerEvent : MouseEvent;
|
|
35418
|
+
const accepted = this.dispatchEvent(new Ctor(type, opts));
|
|
35419
|
+
if ((type === 'pointerdown' || type === 'mousedown') && !accepted) cancelled = true;
|
|
35420
|
+
if (type === 'mousedown') {
|
|
35421
|
+
release();
|
|
35422
|
+
// Native focus respects disabled/nonfocusable targets. Also retain the
|
|
35423
|
+
// inert ancestor boundary across shadow hosts; never force tabindex or
|
|
35424
|
+
// remove a disabled/inert attribute to make a click appear successful.
|
|
35425
|
+
let inert = false;
|
|
35426
|
+
for (let node = this; node; node = node.parentElement || node.getRootNode().host) {
|
|
35427
|
+
if (node.hasAttribute('inert')) { inert = true; break; }
|
|
35428
|
+
}
|
|
35429
|
+
const focusFn = this.focus;
|
|
35430
|
+
// Element focus inside the page is NOT window activation. Keep the local
|
|
35431
|
+
// binding required by the window-focus guard, without widening that guard.
|
|
35432
|
+
// The resolver already scrolled the target; do not undo handler scrolling.
|
|
35433
|
+
if (!cancelled && !focusChanged && !inert && this.isConnected && typeof focusFn === 'function') {
|
|
35434
|
+
focusFn.call(this, { preventScroll: true });
|
|
35435
|
+
}
|
|
35436
|
+
}
|
|
35437
|
+
}
|
|
35438
|
+
} finally {
|
|
35439
|
+
release();
|
|
35440
|
+
}
|
|
33313
35441
|
}`;
|
|
33314
35442
|
const FOCUS_AND_SELECT_FUNCTION = `function () {
|
|
33315
35443
|
const focusFn = this.focus;
|
|
@@ -33998,6 +36126,13 @@ class TabRegistry {
|
|
|
33998
36126
|
}
|
|
33999
36127
|
return null;
|
|
34000
36128
|
}
|
|
36129
|
+
/** Native shortcut eligibility needs the main-owned chrome visibility fact,
|
|
36130
|
+
* not an active page's presentation bit: blank browser chrome still owns
|
|
36131
|
+
* New tab, while a real blocking overlay must refuse it. Read-only and
|
|
36132
|
+
* main-internal; no layout behavior or agent projection changes. */
|
|
36133
|
+
get chromeVisible() {
|
|
36134
|
+
return this.visible && this.contentRect !== null;
|
|
36135
|
+
}
|
|
34001
36136
|
get activeTab() {
|
|
34002
36137
|
return this.activeTabId === null ? null : this.tabs.get(this.activeTabId) ?? null;
|
|
34003
36138
|
}
|
|
@@ -35975,6 +38110,51 @@ class BrowserHost {
|
|
|
35975
38110
|
this.onChanged();
|
|
35976
38111
|
return this.chromeState();
|
|
35977
38112
|
}
|
|
38113
|
+
/**
|
|
38114
|
+
* Home (LOH-13 slice A): return the ACTIVE tab to the browser's start
|
|
38115
|
+
* state. The start state is `about:blank` — what `createUserTab` opens a
|
|
38116
|
+
* new tab on and what the URL bar renders as an empty bar — so Home is a
|
|
38117
|
+
* load of that one allowed `about:` URL, not a navigation to an origin.
|
|
38118
|
+
* It deliberately bypasses `navigateActive`'s http(s)-only rule: that rule
|
|
38119
|
+
* guards typed/agent-reachable origins, and `about:blank` reaches no
|
|
38120
|
+
* origin at all (the same exception `refusesNavigation` makes in
|
|
38121
|
+
* `index.ts`). No consent is involved, for the same reason a typed URL
|
|
38122
|
+
* needs none: this is the user's own press.
|
|
38123
|
+
*/
|
|
38124
|
+
async goHomeActive() {
|
|
38125
|
+
const record = this.registry.activeTab;
|
|
38126
|
+
if (!record)
|
|
38127
|
+
throw new BridgeCommandError("tab_closed", "no browser tab is open");
|
|
38128
|
+
await record.view.webContents.loadURL("about:blank");
|
|
38129
|
+
this.onChanged();
|
|
38130
|
+
return this.chromeState();
|
|
38131
|
+
}
|
|
38132
|
+
/**
|
|
38133
|
+
* Open a link the user right-clicked in a NEW user tab (LOH-13 slice A,
|
|
38134
|
+
* page context menu). Human-only by construction: it is reached from the
|
|
38135
|
+
* native context menu in `index.ts`, never from IPC or the agent RPC, and
|
|
38136
|
+
* the tab it creates is a plain user tab (no nonce, no handover), so an
|
|
38137
|
+
* agent still cannot drive it without an explicit hand-over. The scheme
|
|
38138
|
+
* rule is the typed-navigation rule (`permittedScheme`): only http(s)
|
|
38139
|
+
* links open, so a `file:`/`javascript:` link cannot ride this path onto
|
|
38140
|
+
* the local filesystem.
|
|
38141
|
+
*/
|
|
38142
|
+
async openLinkInNewTab(rawUrl) {
|
|
38143
|
+
let url;
|
|
38144
|
+
try {
|
|
38145
|
+
url = new URL(rawUrl);
|
|
38146
|
+
} catch {
|
|
38147
|
+
throw new BridgeCommandError("nav_failed", "that is not a URL");
|
|
38148
|
+
}
|
|
38149
|
+
if (!permittedScheme(url)) {
|
|
38150
|
+
throw new BridgeCommandError(
|
|
38151
|
+
"nav_failed",
|
|
38152
|
+
"only http:// and https:// can be opened"
|
|
38153
|
+
);
|
|
38154
|
+
}
|
|
38155
|
+
await this.createUserTab(null, url.href);
|
|
38156
|
+
return this.chromeState();
|
|
38157
|
+
}
|
|
35978
38158
|
reloadActive(hard = false) {
|
|
35979
38159
|
const contents = this.registry.activeTab?.view.webContents;
|
|
35980
38160
|
if (hard && contents?.reloadIgnoringCache) contents.reloadIgnoringCache();
|
|
@@ -36926,6 +39106,7 @@ const BROWSER_IPC_CHANNELS = [
|
|
|
36926
39106
|
"browser-close-tabs",
|
|
36927
39107
|
"browser-activate-tab",
|
|
36928
39108
|
"browser-navigate",
|
|
39109
|
+
"browser-home",
|
|
36929
39110
|
"browser-reload",
|
|
36930
39111
|
"browser-stop",
|
|
36931
39112
|
"browser-history",
|
|
@@ -37058,6 +39239,10 @@ function registerBrowserIpc(options) {
|
|
|
37058
39239
|
authorize(event);
|
|
37059
39240
|
options.focusPage?.();
|
|
37060
39241
|
});
|
|
39242
|
+
electron.ipcMain.handle("browser-home", async (event) => {
|
|
39243
|
+
const host = authorize(event);
|
|
39244
|
+
return host.goHomeActive();
|
|
39245
|
+
});
|
|
37061
39246
|
electron.ipcMain.handle("browser-reload", (event, hard) => {
|
|
37062
39247
|
const host = authorize(event);
|
|
37063
39248
|
if (hard !== void 0 && typeof hard !== "boolean")
|
|
@@ -37530,6 +39715,85 @@ class OwnershipLedger {
|
|
|
37530
39715
|
return { scopes: this.scopes.size, retained, terminal };
|
|
37531
39716
|
}
|
|
37532
39717
|
}
|
|
39718
|
+
function isOpenableLink(rawUrl) {
|
|
39719
|
+
try {
|
|
39720
|
+
const url = new URL(rawUrl);
|
|
39721
|
+
return url.protocol === "http:" || url.protocol === "https:";
|
|
39722
|
+
} catch {
|
|
39723
|
+
return false;
|
|
39724
|
+
}
|
|
39725
|
+
}
|
|
39726
|
+
const SEPARATOR = {
|
|
39727
|
+
id: "separator",
|
|
39728
|
+
label: "",
|
|
39729
|
+
enabled: false
|
|
39730
|
+
};
|
|
39731
|
+
function buildPageContextMenuItems(input) {
|
|
39732
|
+
if (input.isEditable) {
|
|
39733
|
+
const flags = input.editFlags ?? {};
|
|
39734
|
+
return [
|
|
39735
|
+
{
|
|
39736
|
+
id: "cut",
|
|
39737
|
+
label: t("ui.browser.page_context_menu.cut"),
|
|
39738
|
+
enabled: flags.canCut ?? true
|
|
39739
|
+
},
|
|
39740
|
+
{
|
|
39741
|
+
id: "copy",
|
|
39742
|
+
label: t("ui.browser.page_context_menu.copy"),
|
|
39743
|
+
enabled: flags.canCopy ?? true
|
|
39744
|
+
},
|
|
39745
|
+
{
|
|
39746
|
+
id: "paste",
|
|
39747
|
+
label: t("ui.browser.page_context_menu.paste"),
|
|
39748
|
+
enabled: flags.canPaste ?? true
|
|
39749
|
+
},
|
|
39750
|
+
{
|
|
39751
|
+
id: "select-all",
|
|
39752
|
+
label: t("ui.browser.page_context_menu.select_all"),
|
|
39753
|
+
enabled: flags.canSelectAll ?? true
|
|
39754
|
+
}
|
|
39755
|
+
];
|
|
39756
|
+
}
|
|
39757
|
+
const items = [
|
|
39758
|
+
{
|
|
39759
|
+
id: "back",
|
|
39760
|
+
label: t("ui.browser.browser_url_bar.back"),
|
|
39761
|
+
enabled: input.canGoBack
|
|
39762
|
+
},
|
|
39763
|
+
{
|
|
39764
|
+
id: "forward",
|
|
39765
|
+
label: t("ui.browser.browser_url_bar.forward"),
|
|
39766
|
+
enabled: input.canGoForward
|
|
39767
|
+
},
|
|
39768
|
+
{
|
|
39769
|
+
id: "reload",
|
|
39770
|
+
label: t("ui.browser.browser_url_bar.reload"),
|
|
39771
|
+
enabled: true
|
|
39772
|
+
}
|
|
39773
|
+
];
|
|
39774
|
+
if (input.linkUrl) {
|
|
39775
|
+
items.push(
|
|
39776
|
+
SEPARATOR,
|
|
39777
|
+
{
|
|
39778
|
+
id: "copy-link",
|
|
39779
|
+
label: t("ui.browser.page_context_menu.copy_link_address"),
|
|
39780
|
+
enabled: true
|
|
39781
|
+
},
|
|
39782
|
+
{
|
|
39783
|
+
id: "open-link",
|
|
39784
|
+
label: t("ui.browser.page_context_menu.open_link_in_new_tab"),
|
|
39785
|
+
enabled: isOpenableLink(input.linkUrl)
|
|
39786
|
+
}
|
|
39787
|
+
);
|
|
39788
|
+
} else if (input.pageUrl) {
|
|
39789
|
+
items.push(SEPARATOR, {
|
|
39790
|
+
id: "copy-page",
|
|
39791
|
+
label: t("ui.browser.page_context_menu.copy_page_address"),
|
|
39792
|
+
enabled: true
|
|
39793
|
+
});
|
|
39794
|
+
}
|
|
39795
|
+
return items;
|
|
39796
|
+
}
|
|
37533
39797
|
const MAX_POPUP_CHILDREN_PER_VIEW = 4;
|
|
37534
39798
|
function effectivePresentation(mode, disposition) {
|
|
37535
39799
|
if (mode === "never") return "never";
|
|
@@ -38952,12 +41216,7 @@ function routeBrowserZoomInput(event, input) {
|
|
|
38952
41216
|
process.platform
|
|
38953
41217
|
);
|
|
38954
41218
|
if (!candidate?.startsWith("zoom-") || !activeHost) return false;
|
|
38955
|
-
return activeHost.chords.input
|
|
38956
|
-
event,
|
|
38957
|
-
input,
|
|
38958
|
-
"chrome",
|
|
38959
|
-
activeHost.host.chordFocus
|
|
38960
|
-
);
|
|
41219
|
+
return activeHost.chords.chromeInput(event, input);
|
|
38961
41220
|
}
|
|
38962
41221
|
function routeBrowserMenu(intent) {
|
|
38963
41222
|
return activeHost?.chords.menu(intent) ?? false;
|
|
@@ -39192,6 +41451,43 @@ async function initializeBrowserHost(options, bindings) {
|
|
|
39192
41451
|
};
|
|
39193
41452
|
contents.on("will-navigate", onWillNavigate);
|
|
39194
41453
|
contents.on("will-redirect", onWillNavigate);
|
|
41454
|
+
contents.on("context-menu", (_event, params) => {
|
|
41455
|
+
const navigation = contents.navigationHistory;
|
|
41456
|
+
const items = buildPageContextMenuItems({
|
|
41457
|
+
linkUrl: params.linkURL ?? "",
|
|
41458
|
+
pageUrl: contents.getURL(),
|
|
41459
|
+
canGoBack: navigation ? navigation.canGoBack() : false,
|
|
41460
|
+
canGoForward: navigation ? navigation.canGoForward() : false,
|
|
41461
|
+
isEditable: params.isEditable,
|
|
41462
|
+
editFlags: params.editFlags
|
|
41463
|
+
});
|
|
41464
|
+
const menu = electron.Menu.buildFromTemplate(
|
|
41465
|
+
items.map((item) => {
|
|
41466
|
+
if (item.id === "separator") return { type: "separator" };
|
|
41467
|
+
return {
|
|
41468
|
+
label: item.label,
|
|
41469
|
+
enabled: item.enabled,
|
|
41470
|
+
click: () => {
|
|
41471
|
+
if (item.id === "back") navigation?.goBack();
|
|
41472
|
+
else if (item.id === "forward") navigation?.goForward();
|
|
41473
|
+
else if (item.id === "reload") contents.reload();
|
|
41474
|
+
else if (item.id === "copy-link")
|
|
41475
|
+
electron.clipboard.writeText(params.linkURL ?? "");
|
|
41476
|
+
else if (item.id === "copy-page")
|
|
41477
|
+
electron.clipboard.writeText(contents.getURL());
|
|
41478
|
+
else if (item.id === "cut") contents.cut();
|
|
41479
|
+
else if (item.id === "copy") contents.copy();
|
|
41480
|
+
else if (item.id === "paste") contents.paste();
|
|
41481
|
+
else if (item.id === "select-all") contents.selectAll();
|
|
41482
|
+
else if (item.id === "open-link")
|
|
41483
|
+
void host.openLinkInNewTab(params.linkURL ?? "").catch(() => {
|
|
41484
|
+
});
|
|
41485
|
+
}
|
|
41486
|
+
};
|
|
41487
|
+
})
|
|
41488
|
+
);
|
|
41489
|
+
menu.popup({ window: options.window });
|
|
41490
|
+
});
|
|
39195
41491
|
contents.on("before-input-event", (event, input) => {
|
|
39196
41492
|
const record = registry.get(tabId);
|
|
39197
41493
|
const owns = record === registry.activeTab && record?.presented === true;
|
|
@@ -39500,9 +41796,14 @@ async function initializeBrowserHost(options, bindings) {
|
|
|
39500
41796
|
facts: () => facts,
|
|
39501
41797
|
forgetSiteData: (origin) => clearOriginData(browserSession, origin)
|
|
39502
41798
|
});
|
|
41799
|
+
const ownsChrome = () => browserChromeOwnsChord({
|
|
41800
|
+
logicalFocus: host.chordFocus,
|
|
41801
|
+
chromeVisible: registry.chromeVisible,
|
|
41802
|
+
window: options.window
|
|
41803
|
+
});
|
|
39503
41804
|
const chords = createBrowserChordRouter({
|
|
39504
41805
|
platform: process.platform,
|
|
39505
|
-
ownsChrome
|
|
41806
|
+
ownsChrome,
|
|
39506
41807
|
ownsPage: () => {
|
|
39507
41808
|
const record = registry.activeTab;
|
|
39508
41809
|
return Boolean(
|
|
@@ -39533,18 +41834,21 @@ async function initializeBrowserHost(options, bindings) {
|
|
|
39533
41834
|
});
|
|
39534
41835
|
const onChromeInput = (event, input) => {
|
|
39535
41836
|
if (event.defaultPrevented) return;
|
|
39536
|
-
const handled = chords.
|
|
41837
|
+
const handled = chords.chromeInput(event, input);
|
|
39537
41838
|
options.window.webContents.setIgnoreMenuShortcuts(handled);
|
|
39538
41839
|
};
|
|
39539
41840
|
const resetChordFocus = () => {
|
|
39540
41841
|
host.setChordFocus(false);
|
|
39541
41842
|
};
|
|
39542
|
-
|
|
39543
|
-
if (!
|
|
41843
|
+
const resetMenuShortcutSuppression = () => {
|
|
41844
|
+
if (!options.window.webContents.isDestroyed())
|
|
39544
41845
|
options.window.webContents.setIgnoreMenuShortcuts(false);
|
|
39545
41846
|
};
|
|
41847
|
+
host.onChordFocusChanged = (focused) => {
|
|
41848
|
+
if (!focused) resetMenuShortcutSuppression();
|
|
41849
|
+
};
|
|
39546
41850
|
options.window.webContents.on("before-input-event", onChromeInput);
|
|
39547
|
-
options.window.on("blur",
|
|
41851
|
+
options.window.on("blur", resetMenuShortcutSuppression);
|
|
39548
41852
|
options.window.on("closed", resetChordFocus);
|
|
39549
41853
|
const resetOnNavigation = (details) => {
|
|
39550
41854
|
if (details.isMainFrame && !details.isSameDocument) resetChordFocus();
|
|
@@ -39557,7 +41861,7 @@ async function initializeBrowserHost(options, bindings) {
|
|
|
39557
41861
|
"before-input-event",
|
|
39558
41862
|
onChromeInput
|
|
39559
41863
|
);
|
|
39560
|
-
options.window.removeListener("blur",
|
|
41864
|
+
options.window.removeListener("blur", resetMenuShortcutSuppression);
|
|
39561
41865
|
options.window.removeListener("closed", resetChordFocus);
|
|
39562
41866
|
options.window.webContents.removeListener(
|
|
39563
41867
|
"did-start-navigation",
|