local-operator-ui 0.39.9 → 0.41.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/main/index.js +450 -37
- package/out/preload/index.js +24 -2
- package/out/renderer/assets/{_basePickBy-op663AbZ.js → _basePickBy--UFblcLV.js} +1 -1
- package/out/renderer/assets/{_baseUniq-BmA1_2me.js → _baseUniq-Ct7pRnI4.js} +1 -1
- package/out/renderer/assets/{agent-details-page-DD95Pj8m.js → agent-details-page-Col1VcjS.js} +2 -2
- package/out/renderer/assets/{agent-hub-page-KqbaZ4jt.js → agent-hub-page-CTPn6yGs.js} +2 -2
- package/out/renderer/assets/agents-page-CBWj1DTr.js +7 -0
- package/out/renderer/assets/arc-B-YNVaQW.js +1 -0
- package/out/renderer/assets/architectureDiagram-IEHRJDOE-DCzmuMLj.js +36 -0
- package/out/renderer/assets/{blockDiagram-JOT3LUYC-BbL6rC8t.js → blockDiagram-JOT3LUYC-f1GS2_U0.js} +6 -6
- package/out/renderer/assets/{book-open-C5VnLNlM.js → book-open-Cb4F-cRs.js} +1 -1
- package/out/renderer/assets/browser-page-BfJd3-qS.js +1 -0
- package/out/renderer/assets/browser-webauthn-prompt-ghcPWp0R.js +1 -0
- package/out/renderer/assets/{building-2-BinkVpHL.js → building-2-C_YBTC7O.js} +1 -1
- package/out/renderer/assets/{c4Diagram-VJAJSXHY-TY6fUFKt.js → c4Diagram-VJAJSXHY-BlePs8Im.js} +1 -1
- package/out/renderer/assets/channel-BFAjMbH6.js +1 -0
- package/out/renderer/assets/{chunk-4BMEZGHF-dLL3W7IZ.js → chunk-4BMEZGHF-Bse1IaHb.js} +1 -1
- package/out/renderer/assets/{chunk-A2AXSNBT-D78WiLnh.js → chunk-A2AXSNBT-CncpJ5It.js} +1 -1
- package/out/renderer/assets/{chunk-AEK57VVT-BKmfkMGW.js → chunk-AEK57VVT-37Z6jWz2.js} +1 -1
- package/out/renderer/assets/{chunk-D6G4REZN-CZre37TG.js → chunk-D6G4REZN-BR9ZpBMV.js} +1 -1
- package/out/renderer/assets/{chunk-RZ5BOZE2-BVFKaoz8.js → chunk-RZ5BOZE2-KrZ6g0pV.js} +1 -1
- package/out/renderer/assets/{chunk-XZIHB7SX-C4B9nFg3.js → chunk-XZIHB7SX-BUwRYMe9.js} +1 -1
- package/out/renderer/assets/classDiagram-GIVACNV2-CmW0Ezdi.js +1 -0
- package/out/renderer/assets/classDiagram-v2-COTLJTTW-CmW0Ezdi.js +1 -0
- package/out/renderer/assets/clone-B_pc7cSP.js +1 -0
- package/out/renderer/assets/console-mirror-DPVG6sWK.js +44 -0
- package/out/renderer/assets/consoleCapture-Coky9UhD.js +1 -0
- package/out/renderer/assets/{conversation-input-sync-Drf7pG8h.js → conversation-input-sync-C2vqs6ad.js} +252 -309
- package/out/renderer/assets/dagre-OKDRZEBW-CGv1CEcm.js +4 -0
- package/out/renderer/assets/diagram-SSKATNLV-u_zFGYu8.js +43 -0
- package/out/renderer/assets/diagram-VNBRO52H-Bme6bFvQ.js +24 -0
- package/out/renderer/assets/{erDiagram-Q7BY3M3F-CbYsJOXr.js → erDiagram-Q7BY3M3F-B-KkjVtc.js} +1 -1
- package/out/renderer/assets/error-boundary-DJSaJHcb.js +126 -0
- package/out/renderer/assets/{flowDiagram-4HSFHLVR-xksRM4qL.js → flowDiagram-4HSFHLVR-CSZy2b_d.js} +1 -1
- package/out/renderer/assets/ganttDiagram-APWFNJXF-CpYOSVKU.js +257 -0
- package/out/renderer/assets/gitGraphDiagram-7IBYFJ6S-WOOSBsBb.js +65 -0
- package/out/renderer/assets/{graph-F4dHmEZ9.js → graph-Du8nFp-Q.js} +1 -1
- package/out/renderer/assets/hash--PQTQMu2.js +6 -0
- package/out/renderer/assets/heart-CVGkdUzT.js +6 -0
- package/out/renderer/assets/index-AGCqaeOI.js +7 -0
- package/out/renderer/assets/index-ALGblIL0.css +1 -0
- package/out/renderer/assets/index-BYeiLB51.js +57 -0
- package/out/renderer/assets/index-D8L83jtw.js +835 -0
- package/out/renderer/assets/index-fw54FEnm.js +1 -0
- package/out/renderer/assets/infoDiagram-PH2N3AL5-BprulvMk.js +2 -0
- package/out/renderer/assets/{installer-AUhVnro1.js → installer-muZhWyyS.js} +1 -1
- package/out/renderer/assets/{journeyDiagram-U35MCT3I-BKYQCvNS.js → journeyDiagram-U35MCT3I-DfdLRQAF.js} +1 -1
- package/out/renderer/assets/{kanban-definition-NDS4AKOZ-Af9PLtCI.js → kanban-definition-NDS4AKOZ-R6IsuYWB.js} +1 -1
- package/out/renderer/assets/{layout-DArRUuWc.js → layout-05Xak_7z.js} +1 -1
- package/out/renderer/assets/legacy-agents-page-Dpl33Kla.js +33 -0
- package/out/renderer/assets/library-page-BNrffbLi.js +157 -0
- package/out/renderer/assets/{mermaid.core-DeacZbEh.js → mermaid.core-BzKfajYZ.js} +5 -5
- package/out/renderer/assets/mesh-page-D6ZzFOeG.js +1 -0
- package/out/renderer/assets/mindmap-definition-ALO5MXBD-Dn_l0i7j.js +95 -0
- package/out/renderer/assets/mini-BgJE9L7J.js +1 -0
- package/out/renderer/assets/{notebook-pen-CAaIu5ma.js → notebook-pen-CtAKsfVm.js} +1 -1
- package/out/renderer/assets/org-access-BHt55LAw.js +1 -0
- package/out/renderer/assets/org-surface-gate-CqFJQYmV.js +1 -0
- package/out/renderer/assets/{page-header-DxdkMDUw.js → page-header-BlIvE-Ti.js} +1 -1
- package/out/renderer/assets/path-utils-CYBk4q7C.js +58 -0
- package/out/renderer/assets/{pieDiagram-IB7DONF6-BAijqzhx.js → pieDiagram-IB7DONF6-_W_OzAAk.js} +2 -2
- package/out/renderer/assets/{projects-page-CyQadeH9.js → projects-page-DtZ_g9gZ.js} +4 -4
- package/out/renderer/assets/publication-validation-D7f3xAgF.js +1 -0
- package/out/renderer/assets/{quadrantDiagram-7GDLP6J5-B9gsMu2n.js → quadrantDiagram-7GDLP6J5-FQ5Wvxqm.js} +1 -1
- package/out/renderer/assets/{radar-MK3ICKWK-f4VBDN4e.js → radar-MK3ICKWK-BRufXucA.js} +1 -1
- package/out/renderer/assets/radient-auth-buttons-7i7blC-7.js +1 -0
- package/out/renderer/assets/{requirementDiagram-KVF5MWMF-CPNfG1Zx.js → requirementDiagram-KVF5MWMF-CHO8Cq1H.js} +1 -1
- package/out/renderer/assets/sankeyDiagram-QLVOVGJD-C4JDJOwX.js +10 -0
- package/out/renderer/assets/{schedules-page-CroQduzq.js → schedules-page-6tPgFgS_.js} +4 -4
- package/out/renderer/assets/{sequenceDiagram-X6HHIX6F-BptLOcCw.js → sequenceDiagram-X6HHIX6F-BFf3HnKw.js} +1 -1
- package/out/renderer/assets/settings-page-CXOFCx8w.js +287 -0
- package/out/renderer/assets/smartart-crAq3DvJ.js +1 -0
- package/out/renderer/assets/stateDiagram-DGXRK772-BqFVSIKA.js +1 -0
- package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-aaVC-oiG.js +1 -0
- package/out/renderer/assets/team-bridge-page-BgjJrT3v.js +26 -0
- package/out/renderer/assets/{timeline-definition-BDJGKUSR-mfxv2tvk.js → timeline-definition-BDJGKUSR-Cp3uYUSs.js} +1 -1
- package/out/renderer/assets/use-download-agent-mutation-C_W8yx0C.js +56 -0
- package/out/renderer/assets/use-session-snapshot-vFZD5qIO.js +1 -0
- package/out/renderer/assets/{xychartDiagram-VJFVF3MP-DU7xqK3g.js → xychartDiagram-VJFVF3MP-DFcICu1Q.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 +2 -2
- package/out/renderer/assets/agents-page-BuW5YXsO.js +0 -7
- package/out/renderer/assets/arc-BDKgui3b.js +0 -1
- package/out/renderer/assets/architectureDiagram-IEHRJDOE-DQ-ywUWn.js +0 -36
- package/out/renderer/assets/browser-page-Blp9VxzI.js +0 -1
- package/out/renderer/assets/browser-webauthn-prompt-CIVC5zZy.js +0 -1
- package/out/renderer/assets/channel-BXgHvdBf.js +0 -1
- package/out/renderer/assets/classDiagram-GIVACNV2-DqhUybG_.js +0 -1
- package/out/renderer/assets/classDiagram-v2-COTLJTTW-DqhUybG_.js +0 -1
- package/out/renderer/assets/clone-Dy0JmXpj.js +0 -1
- package/out/renderer/assets/console-mirror-CPwb8uF3.js +0 -44
- package/out/renderer/assets/consoleCapture-HmARhax8.js +0 -1
- package/out/renderer/assets/dagre-OKDRZEBW-Dh0W2jNu.js +0 -4
- package/out/renderer/assets/diagram-SSKATNLV-DRCrONrr.js +0 -43
- package/out/renderer/assets/diagram-VNBRO52H-BV4nGPJx.js +0 -24
- package/out/renderer/assets/error-boundary-Cxrbe_jr.js +0 -126
- package/out/renderer/assets/ganttDiagram-APWFNJXF-mPElU2p8.js +0 -257
- package/out/renderer/assets/gitGraphDiagram-7IBYFJ6S-GsnNXRGz.js +0 -65
- package/out/renderer/assets/hash-DY3q9E3o.js +0 -6
- package/out/renderer/assets/index-D2xD4O43.js +0 -835
- package/out/renderer/assets/index-DOY6mKnp.js +0 -1
- package/out/renderer/assets/index-DecxvzI1.js +0 -57
- package/out/renderer/assets/index-OxbcfWJz.css +0 -1
- package/out/renderer/assets/index-n0UKEmyA.js +0 -7
- package/out/renderer/assets/infoDiagram-PH2N3AL5-Bj2irJ1P.js +0 -2
- package/out/renderer/assets/legacy-agents-page-DoDPY_st.js +0 -33
- package/out/renderer/assets/library-page-CCZamoeo.js +0 -157
- package/out/renderer/assets/mesh-page-b0Arx7SZ.js +0 -1
- package/out/renderer/assets/mindmap-definition-ALO5MXBD-D7Dx3AOZ.js +0 -95
- package/out/renderer/assets/mini-BCNMkGXS.js +0 -1
- package/out/renderer/assets/org-access-BnJqhAjv.js +0 -1
- package/out/renderer/assets/org-surface-gate-C2iuuUmY.js +0 -1
- package/out/renderer/assets/publication-validation-BLE_XzAT.js +0 -1
- package/out/renderer/assets/radient-auth-buttons-ukARjoyK.js +0 -1
- package/out/renderer/assets/sankeyDiagram-QLVOVGJD-BlICGCPu.js +0 -10
- package/out/renderer/assets/settings-page-B6GsvZtx.js +0 -287
- package/out/renderer/assets/smartart-54M0TKRG.js +0 -1
- package/out/renderer/assets/stateDiagram-DGXRK772-LIFxYM21.js +0 -1
- package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-DfyWsnvp.js +0 -1
- package/out/renderer/assets/team-bridge-page-CG0IpAuo.js +0 -16
- package/out/renderer/assets/ui-preferences-store-BA52R-Fw.js +0 -1
- package/out/renderer/assets/use-download-agent-mutation-BxernpiS.js +0 -61
- package/out/renderer/assets/use-session-snapshot-sSI_vLQL.js +0 -1
package/out/main/index.js
CHANGED
|
@@ -2499,13 +2499,35 @@ const desktopRequestUnion = zod.z.discriminatedUnion("op", [
|
|
|
2499
2499
|
before_seq: zod.z.number().int().nonnegative().optional(),
|
|
2500
2500
|
endpoint_id: id$1.optional()
|
|
2501
2501
|
}).strict(),
|
|
2502
|
+
zod.z.object({
|
|
2503
|
+
op: zod.z.literal("team_bridge.reactions.toggle"),
|
|
2504
|
+
conversation_id: id$1,
|
|
2505
|
+
message_id: id$1,
|
|
2506
|
+
tenant_id: id$1.optional(),
|
|
2507
|
+
emoji: zod.z.string().min(1),
|
|
2508
|
+
active: zod.z.boolean()
|
|
2509
|
+
}).strict(),
|
|
2502
2510
|
zod.z.object({
|
|
2503
2511
|
op: zod.z.literal("team_bridge.messages.send"),
|
|
2504
2512
|
conversation_id: id$1,
|
|
2505
2513
|
tenant_id: id$1.optional(),
|
|
2506
2514
|
client_ref: id$1,
|
|
2507
2515
|
body: zod.z.string().min(1),
|
|
2508
|
-
agent_label: zod.z.string().min(1).max(64).optional()
|
|
2516
|
+
agent_label: zod.z.string().min(1).max(64).optional(),
|
|
2517
|
+
/* Reply in this root message's thread; the hub validates the root. */
|
|
2518
|
+
thread_root_id: id$1.optional()
|
|
2519
|
+
}).strict(),
|
|
2520
|
+
/*
|
|
2521
|
+
* One thread (root + replies, oldest-first) under the history gate. Paging
|
|
2522
|
+
* runs FORWARD with an inclusive `after_seq`, because a thread reads top-down.
|
|
2523
|
+
*/
|
|
2524
|
+
zod.z.object({
|
|
2525
|
+
op: zod.z.literal("team_bridge.messages.replies"),
|
|
2526
|
+
conversation_id: id$1,
|
|
2527
|
+
message_id: id$1,
|
|
2528
|
+
tenant_id: id$1.optional(),
|
|
2529
|
+
limit: zod.z.number().int().min(1).max(100).optional(),
|
|
2530
|
+
after_seq: zod.z.number().int().nonnegative().optional()
|
|
2509
2531
|
}).strict(),
|
|
2510
2532
|
zod.z.object({
|
|
2511
2533
|
op: zod.z.literal("team_bridge.read"),
|
|
@@ -3420,6 +3442,7 @@ const READ_ONLY_OPS = /* @__PURE__ */ new Set([
|
|
|
3420
3442
|
"team_bridge.conversations.list",
|
|
3421
3443
|
"team_bridge.conversations.get",
|
|
3422
3444
|
"team_bridge.messages.list",
|
|
3445
|
+
"team_bridge.messages.replies",
|
|
3423
3446
|
"team_bridge.unread",
|
|
3424
3447
|
"team_bridge.directory",
|
|
3425
3448
|
"team_bridge.status",
|
|
@@ -5073,6 +5096,17 @@ function desktopEndpoint(request) {
|
|
|
5073
5096
|
method: "GET"
|
|
5074
5097
|
};
|
|
5075
5098
|
}
|
|
5099
|
+
case "team_bridge.reactions.toggle": {
|
|
5100
|
+
const path2 = `/v1/desktop/team-bridge/conversations/${encodeURIComponent(request.conversation_id)}/messages/${encodeURIComponent(request.message_id)}/reactions/${encodeURIComponent(request.emoji)}`;
|
|
5101
|
+
return request.active ? {
|
|
5102
|
+
path: path2,
|
|
5103
|
+
method: "PUT",
|
|
5104
|
+
body: request.tenant_id ? { tenant_id: request.tenant_id } : {}
|
|
5105
|
+
} : {
|
|
5106
|
+
path: `${path2}${tenantQuery(request.tenant_id)}`,
|
|
5107
|
+
method: "DELETE"
|
|
5108
|
+
};
|
|
5109
|
+
}
|
|
5076
5110
|
case "team_bridge.messages.send":
|
|
5077
5111
|
return {
|
|
5078
5112
|
path: `/v1/desktop/team-bridge/conversations/${encodeURIComponent(request.conversation_id)}/messages`,
|
|
@@ -5081,9 +5115,23 @@ function desktopEndpoint(request) {
|
|
|
5081
5115
|
...request.tenant_id ? { tenant_id: request.tenant_id } : {},
|
|
5082
5116
|
client_ref: request.client_ref,
|
|
5083
5117
|
body: request.body,
|
|
5084
|
-
...request.agent_label ? { agent_label: request.agent_label } : {}
|
|
5118
|
+
...request.agent_label ? { agent_label: request.agent_label } : {},
|
|
5119
|
+
...request.thread_root_id ? { thread_root_id: request.thread_root_id } : {}
|
|
5085
5120
|
}
|
|
5086
5121
|
};
|
|
5122
|
+
case "team_bridge.messages.replies": {
|
|
5123
|
+
const query = new URLSearchParams();
|
|
5124
|
+
if (request.tenant_id) query.set("tenant_id", request.tenant_id);
|
|
5125
|
+
if (request.limit !== void 0)
|
|
5126
|
+
query.set("limit", String(request.limit));
|
|
5127
|
+
if (request.after_seq !== void 0)
|
|
5128
|
+
query.set("after_seq", String(request.after_seq));
|
|
5129
|
+
const suffix = query.size > 0 ? `?${query.toString()}` : "";
|
|
5130
|
+
return {
|
|
5131
|
+
path: `/v1/desktop/team-bridge/conversations/${encodeURIComponent(request.conversation_id)}/messages/${encodeURIComponent(request.message_id)}/replies${suffix}`,
|
|
5132
|
+
method: "GET"
|
|
5133
|
+
};
|
|
5134
|
+
}
|
|
5087
5135
|
case "team_bridge.read":
|
|
5088
5136
|
return {
|
|
5089
5137
|
path: `/v1/desktop/team-bridge/conversations/${encodeURIComponent(request.conversation_id)}/read`,
|
|
@@ -9060,6 +9108,19 @@ const mediaRequestSchema = zod.z.discriminatedUnion("op", [
|
|
|
9060
9108
|
op: zod.z.literal("library.thumbnail"),
|
|
9061
9109
|
assetId: zod.z.string().regex(/^la_[0-9a-f]{16}$/),
|
|
9062
9110
|
width: zod.z.number().int().min(1).max(480).optional()
|
|
9111
|
+
}).strict(),
|
|
9112
|
+
/*
|
|
9113
|
+
* A Library audio asset's PRE-RENDER peaks sidecar, the same `{version,
|
|
9114
|
+
* bars, peaks}` document a generated sound's attachment route serves. It
|
|
9115
|
+
* rides this relay for the reason `library.content` does: the renderer must
|
|
9116
|
+
* not learn the store's layout or hold the bearer, and the asset id has to
|
|
9117
|
+
* be validated before it becomes a path segment. The route answers 404 when
|
|
9118
|
+
* the catalog has no sidecar for the asset (a path-backed file imported
|
|
9119
|
+
* rather than generated), which the renderer draws as its flat scrubber.
|
|
9120
|
+
*/
|
|
9121
|
+
zod.z.object({
|
|
9122
|
+
op: zod.z.literal("library.waveform"),
|
|
9123
|
+
assetId: zod.z.string().regex(/^la_[0-9a-f]{16}$/)
|
|
9063
9124
|
}).strict()
|
|
9064
9125
|
]);
|
|
9065
9126
|
function endpoint(request) {
|
|
@@ -9104,6 +9165,11 @@ function endpoint(request) {
|
|
|
9104
9165
|
path: `/v1/desktop/library/assets/${request.assetId}/thumbnail?w=${request.width ?? 480}`,
|
|
9105
9166
|
method: "GET"
|
|
9106
9167
|
};
|
|
9168
|
+
case "library.waveform":
|
|
9169
|
+
return {
|
|
9170
|
+
path: `/v1/desktop/library/assets/${request.assetId}/waveform`,
|
|
9171
|
+
method: "GET"
|
|
9172
|
+
};
|
|
9107
9173
|
}
|
|
9108
9174
|
}
|
|
9109
9175
|
async function requestDesktopMediaOutcome(input, bytes, backendUrl, token) {
|
|
@@ -9143,7 +9209,7 @@ async function requestDesktopMediaOutcome(input, bytes, backendUrl, token) {
|
|
|
9143
9209
|
const target2 = endpoint(request);
|
|
9144
9210
|
let body;
|
|
9145
9211
|
let contentType;
|
|
9146
|
-
if (request.op === "agent.export" || request.op === "sessions.attachment" || request.op === "subagents.attachment" || request.op === "sessions.attachment.waveform" || request.op === "sessions.supplementDocument" || request.op === "library.content" || request.op === "library.thumbnail") {
|
|
9212
|
+
if (request.op === "agent.export" || request.op === "sessions.attachment" || request.op === "subagents.attachment" || request.op === "sessions.attachment.waveform" || request.op === "sessions.supplementDocument" || request.op === "library.content" || request.op === "library.thumbnail" || request.op === "library.waveform") {
|
|
9147
9213
|
body = void 0;
|
|
9148
9214
|
} else if (request.op === "speech.create" || request.op === "speech.agent") {
|
|
9149
9215
|
body = JSON.stringify(request.request);
|
|
@@ -38688,6 +38754,10 @@ const enUiTeamBridge = {
|
|
|
38688
38754
|
"ui.teamBridge.notify.title": "{conversation} ({organization})",
|
|
38689
38755
|
"ui.teamBridge.notify.body": "{sender} sent a message",
|
|
38690
38756
|
"ui.teamBridge.notify.body_fallback": "New message",
|
|
38757
|
+
"ui.teamBridge.notify.channel": "#{channel}",
|
|
38758
|
+
"ui.teamBridge.notify.subtitle": "{place} · {organization}",
|
|
38759
|
+
"ui.teamBridge.notify.count": "{count, plural, one {# new message} other {# new messages}}",
|
|
38760
|
+
"ui.teamBridge.notify.count_preview": "{count, plural, one {# new message: {preview}} other {# new messages: {preview}}}",
|
|
38691
38761
|
"ui.teamBridge.people.title": "People",
|
|
38692
38762
|
"ui.teamBridge.people.loading": "Loading people",
|
|
38693
38763
|
"ui.teamBridge.people.error": "People could not be loaded.",
|
|
@@ -38720,6 +38790,9 @@ const enUiTeamBridge = {
|
|
|
38720
38790
|
"ui.teamBridge.section.chiefs_empty": "No teammate has an agent on Team Bridge yet.",
|
|
38721
38791
|
"ui.teamBridge.chief.label": "{agent} ({person})",
|
|
38722
38792
|
"ui.teamBridge.chief.fallback": "Chief of staff",
|
|
38793
|
+
"ui.teamBridge.chief.unnamed": "{person}’s chief of staff",
|
|
38794
|
+
"ui.teamBridge.message.sending": "Sending…",
|
|
38795
|
+
"ui.teamBridge.message.failed": "Not sent",
|
|
38723
38796
|
"ui.teamBridge.people.self_named": "{name} (you)",
|
|
38724
38797
|
"ui.teamBridge.row.menu": "More actions for {name}",
|
|
38725
38798
|
"ui.teamBridge.row.start_group": "Start a group conversation",
|
|
@@ -38743,6 +38816,35 @@ const enUiTeamBridge = {
|
|
|
38743
38816
|
"ui.teamBridge.thread.intro_chief": "This is the beginning of your conversation with {name}, a teammate's chief of staff agent. It reads your messages as untrusted input and its owner decides what it acts on.",
|
|
38744
38817
|
"ui.teamBridge.thread.intro_group": "Your first message starts a conversation with {names}.",
|
|
38745
38818
|
"ui.teamBridge.list.error_pane": "Conversations couldn’t be loaded. Try again from the list on the left.",
|
|
38819
|
+
"ui.teamBridge.reactions.add": "Add reaction",
|
|
38820
|
+
"ui.teamBridge.reactions.search": "Search emoji",
|
|
38821
|
+
"ui.teamBridge.reactions.categories": "Emoji categories",
|
|
38822
|
+
"ui.teamBridge.reactions.all": "All emoji",
|
|
38823
|
+
"ui.teamBridge.reactions.frequent": "Frequently used",
|
|
38824
|
+
"ui.teamBridge.reactions.tone": "Skin tone",
|
|
38825
|
+
"ui.teamBridge.reactions.toneDefault": "Default skin tone",
|
|
38826
|
+
"ui.teamBridge.reactions.empty": "No emoji found",
|
|
38827
|
+
"ui.teamBridge.reactions.failed": "Reaction could not be saved. Try again.",
|
|
38828
|
+
"ui.teamBridge.reactions.category0": "Smileys and emotion",
|
|
38829
|
+
"ui.teamBridge.reactions.category1": "People and body",
|
|
38830
|
+
"ui.teamBridge.reactions.category2": "Animals and nature",
|
|
38831
|
+
"ui.teamBridge.reactions.category3": "Food and drink",
|
|
38832
|
+
"ui.teamBridge.reactions.category4": "Travel and places",
|
|
38833
|
+
"ui.teamBridge.reactions.category5": "Activities",
|
|
38834
|
+
"ui.teamBridge.reactions.category6": "Objects",
|
|
38835
|
+
"ui.teamBridge.reactions.category7": "Symbols",
|
|
38836
|
+
"ui.teamBridge.reactions.category8": "Flags",
|
|
38837
|
+
"ui.teamBridge.reactions.choose": "Choose an emoji",
|
|
38838
|
+
"ui.teamBridge.reactions.noResults": "No emoji found",
|
|
38839
|
+
"ui.teamBridge.replies.action": "Reply in thread",
|
|
38840
|
+
"ui.teamBridge.replies.title": "Thread",
|
|
38841
|
+
"ui.teamBridge.replies.close": "Close thread",
|
|
38842
|
+
"ui.teamBridge.replies.count": "{count, plural, one {# reply} other {# replies}}",
|
|
38843
|
+
"ui.teamBridge.replies.last": "last reply {time}",
|
|
38844
|
+
"ui.teamBridge.replies.empty": "No replies yet. Start the thread.",
|
|
38845
|
+
"ui.teamBridge.replies.placeholder": "Reply in thread",
|
|
38846
|
+
"ui.teamBridge.replies.more": "Load more replies",
|
|
38847
|
+
"ui.teamBridge.actions.label": "Message actions",
|
|
38746
38848
|
"ui.teamBridge.sender.unknown_person": "Unknown person",
|
|
38747
38849
|
"ui.teamBridge.sender.unknown_agent": "Unknown agent"
|
|
38748
38850
|
};
|
|
@@ -42296,6 +42398,10 @@ const esUiTeamBridge = {
|
|
|
42296
42398
|
"ui.teamBridge.notify.title": "{conversation} ({organization})",
|
|
42297
42399
|
"ui.teamBridge.notify.body": "{sender} envió un mensaje",
|
|
42298
42400
|
"ui.teamBridge.notify.body_fallback": "Mensaje nuevo",
|
|
42401
|
+
"ui.teamBridge.notify.channel": "#{channel}",
|
|
42402
|
+
"ui.teamBridge.notify.subtitle": "{place} · {organization}",
|
|
42403
|
+
"ui.teamBridge.notify.count": "{count, plural, one {# mensaje nuevo} many {# de mensajes nuevos} other {# mensajes nuevos}}",
|
|
42404
|
+
"ui.teamBridge.notify.count_preview": "{count, plural, one {# mensaje nuevo: {preview}} many {# de mensajes nuevos: {preview}} other {# mensajes nuevos: {preview}}}",
|
|
42299
42405
|
"ui.teamBridge.people.title": "Personas",
|
|
42300
42406
|
"ui.teamBridge.people.loading": "Cargando personas",
|
|
42301
42407
|
"ui.teamBridge.people.error": "No se pudieron cargar las personas.",
|
|
@@ -42328,6 +42434,9 @@ const esUiTeamBridge = {
|
|
|
42328
42434
|
"ui.teamBridge.section.chiefs_empty": "Ningún miembro del equipo tiene todavía un agente en Team Bridge.",
|
|
42329
42435
|
"ui.teamBridge.chief.label": "{agent} ({person})",
|
|
42330
42436
|
"ui.teamBridge.chief.fallback": "Jefe de gabinete",
|
|
42437
|
+
"ui.teamBridge.chief.unnamed": "Jefe de gabinete de {person}",
|
|
42438
|
+
"ui.teamBridge.message.sending": "Enviando…",
|
|
42439
|
+
"ui.teamBridge.message.failed": "No enviado",
|
|
42331
42440
|
"ui.teamBridge.people.self_named": "{name} (tú)",
|
|
42332
42441
|
"ui.teamBridge.row.menu": "Más acciones para {name}",
|
|
42333
42442
|
"ui.teamBridge.row.start_group": "Iniciar una conversación grupal",
|
|
@@ -42351,6 +42460,35 @@ const esUiTeamBridge = {
|
|
|
42351
42460
|
"ui.teamBridge.thread.intro_chief": "Este es el comienzo de tu conversación con {name}, el agente jefe de gabinete de un miembro del equipo. Trata tus mensajes como información no confiable y su propietario decide qué hace con ellos.",
|
|
42352
42461
|
"ui.teamBridge.thread.intro_group": "Tu primer mensaje inicia una conversación con {names}.",
|
|
42353
42462
|
"ui.teamBridge.list.error_pane": "No se pudieron cargar las conversaciones. Inténtalo de nuevo desde la lista de la izquierda.",
|
|
42463
|
+
"ui.teamBridge.reactions.add": "Añadir reacción",
|
|
42464
|
+
"ui.teamBridge.reactions.search": "Buscar emojis",
|
|
42465
|
+
"ui.teamBridge.reactions.categories": "Categorías de emojis",
|
|
42466
|
+
"ui.teamBridge.reactions.all": "Todos los emojis",
|
|
42467
|
+
"ui.teamBridge.reactions.frequent": "Usados con frecuencia",
|
|
42468
|
+
"ui.teamBridge.reactions.tone": "Tono de piel",
|
|
42469
|
+
"ui.teamBridge.reactions.toneDefault": "Tono predeterminado",
|
|
42470
|
+
"ui.teamBridge.reactions.empty": "No se encontraron emojis",
|
|
42471
|
+
"ui.teamBridge.reactions.failed": "No se pudo guardar la reacción. Inténtalo de nuevo.",
|
|
42472
|
+
"ui.teamBridge.reactions.category0": "Caras y emociones",
|
|
42473
|
+
"ui.teamBridge.reactions.category1": "Personas y cuerpo",
|
|
42474
|
+
"ui.teamBridge.reactions.category2": "Animales y naturaleza",
|
|
42475
|
+
"ui.teamBridge.reactions.category3": "Comida y bebida",
|
|
42476
|
+
"ui.teamBridge.reactions.category4": "Viajes y lugares",
|
|
42477
|
+
"ui.teamBridge.reactions.category5": "Actividades",
|
|
42478
|
+
"ui.teamBridge.reactions.category6": "Objetos",
|
|
42479
|
+
"ui.teamBridge.reactions.category7": "Símbolos",
|
|
42480
|
+
"ui.teamBridge.reactions.category8": "Banderas",
|
|
42481
|
+
"ui.teamBridge.reactions.choose": "Elige un emoji",
|
|
42482
|
+
"ui.teamBridge.reactions.noResults": "No se encontraron emojis",
|
|
42483
|
+
"ui.teamBridge.replies.action": "Responder en el hilo",
|
|
42484
|
+
"ui.teamBridge.replies.title": "Hilo",
|
|
42485
|
+
"ui.teamBridge.replies.close": "Cerrar hilo",
|
|
42486
|
+
"ui.teamBridge.replies.count": "{count, plural, one {# respuesta} many {# de respuestas} other {# respuestas}}",
|
|
42487
|
+
"ui.teamBridge.replies.last": "última respuesta: {time}",
|
|
42488
|
+
"ui.teamBridge.replies.empty": "Aún no hay respuestas. Inicia el hilo.",
|
|
42489
|
+
"ui.teamBridge.replies.placeholder": "Responde en el hilo",
|
|
42490
|
+
"ui.teamBridge.replies.more": "Cargar más respuestas",
|
|
42491
|
+
"ui.teamBridge.actions.label": "Acciones del mensaje",
|
|
42354
42492
|
"ui.teamBridge.sender.unknown_person": "Persona desconocida",
|
|
42355
42493
|
"ui.teamBridge.sender.unknown_agent": "Agente desconocido"
|
|
42356
42494
|
};
|
|
@@ -45904,6 +46042,10 @@ const frUiTeamBridge = {
|
|
|
45904
46042
|
"ui.teamBridge.notify.title": "{conversation} ({organization})",
|
|
45905
46043
|
"ui.teamBridge.notify.body": "{sender} a envoyé un message",
|
|
45906
46044
|
"ui.teamBridge.notify.body_fallback": "Nouveau message",
|
|
46045
|
+
"ui.teamBridge.notify.channel": "#{channel}",
|
|
46046
|
+
"ui.teamBridge.notify.subtitle": "{place} · {organization}",
|
|
46047
|
+
"ui.teamBridge.notify.count": "{count, plural, one {# nouveau message} many {# de nouveaux messages} other {# nouveaux messages}}",
|
|
46048
|
+
"ui.teamBridge.notify.count_preview": "{count, plural, one {# nouveau message : {preview}} many {# de nouveaux messages : {preview}} other {# nouveaux messages : {preview}}}",
|
|
45907
46049
|
"ui.teamBridge.people.title": "Personnes",
|
|
45908
46050
|
"ui.teamBridge.people.loading": "Chargement des personnes",
|
|
45909
46051
|
"ui.teamBridge.people.error": "Les personnes n’ont pas pu être chargées.",
|
|
@@ -45936,6 +46078,9 @@ const frUiTeamBridge = {
|
|
|
45936
46078
|
"ui.teamBridge.section.chiefs_empty": "Aucun membre de l’équipe n’a encore d’agent sur Team Bridge.",
|
|
45937
46079
|
"ui.teamBridge.chief.label": "{agent} ({person})",
|
|
45938
46080
|
"ui.teamBridge.chief.fallback": "Cheffe de cabinet",
|
|
46081
|
+
"ui.teamBridge.chief.unnamed": "Cheffe de cabinet ({person})",
|
|
46082
|
+
"ui.teamBridge.message.sending": "Envoi…",
|
|
46083
|
+
"ui.teamBridge.message.failed": "Non envoyé",
|
|
45939
46084
|
"ui.teamBridge.people.self_named": "{name} (vous)",
|
|
45940
46085
|
"ui.teamBridge.row.menu": "Plus d’actions pour {name}",
|
|
45941
46086
|
"ui.teamBridge.row.start_group": "Démarrer une conversation de groupe",
|
|
@@ -45959,6 +46104,35 @@ const frUiTeamBridge = {
|
|
|
45959
46104
|
"ui.teamBridge.thread.intro_chief": "Voici le début de votre conversation avec {name}, la cheffe de cabinet d’un membre de l’équipe. Cet agent considère vos messages comme des entrées non fiables ; c’est son propriétaire qui décide des suites à donner.",
|
|
45960
46105
|
"ui.teamBridge.thread.intro_group": "Votre premier message démarrera une conversation avec {names}.",
|
|
45961
46106
|
"ui.teamBridge.list.error_pane": "Les conversations n’ont pas pu être chargées. Réessayez depuis la liste de gauche.",
|
|
46107
|
+
"ui.teamBridge.reactions.add": "Ajouter une réaction",
|
|
46108
|
+
"ui.teamBridge.reactions.search": "Rechercher un émoji",
|
|
46109
|
+
"ui.teamBridge.reactions.categories": "Catégories d’émojis",
|
|
46110
|
+
"ui.teamBridge.reactions.all": "Tous les émojis",
|
|
46111
|
+
"ui.teamBridge.reactions.frequent": "Fréquemment utilisés",
|
|
46112
|
+
"ui.teamBridge.reactions.tone": "Teint",
|
|
46113
|
+
"ui.teamBridge.reactions.toneDefault": "Teint par défaut",
|
|
46114
|
+
"ui.teamBridge.reactions.empty": "Aucun émoji trouvé",
|
|
46115
|
+
"ui.teamBridge.reactions.failed": "La réaction n’a pas été enregistrée. Réessayez.",
|
|
46116
|
+
"ui.teamBridge.reactions.category0": "Smileys et émotions",
|
|
46117
|
+
"ui.teamBridge.reactions.category1": "Personnes et corps",
|
|
46118
|
+
"ui.teamBridge.reactions.category2": "Animaux et nature",
|
|
46119
|
+
"ui.teamBridge.reactions.category3": "Nourriture et boissons",
|
|
46120
|
+
"ui.teamBridge.reactions.category4": "Voyages et lieux",
|
|
46121
|
+
"ui.teamBridge.reactions.category5": "Activités",
|
|
46122
|
+
"ui.teamBridge.reactions.category6": "Objets",
|
|
46123
|
+
"ui.teamBridge.reactions.category7": "Symboles",
|
|
46124
|
+
"ui.teamBridge.reactions.category8": "Drapeaux",
|
|
46125
|
+
"ui.teamBridge.reactions.choose": "Choisir un émoji",
|
|
46126
|
+
"ui.teamBridge.reactions.noResults": "Aucun émoji trouvé",
|
|
46127
|
+
"ui.teamBridge.replies.action": "Répondre dans le fil",
|
|
46128
|
+
"ui.teamBridge.replies.title": "Fil de discussion",
|
|
46129
|
+
"ui.teamBridge.replies.close": "Fermer le fil",
|
|
46130
|
+
"ui.teamBridge.replies.count": "{count, plural, one {# réponse} many {# de réponses} other {# réponses}}",
|
|
46131
|
+
"ui.teamBridge.replies.last": "dernière réponse à {time}",
|
|
46132
|
+
"ui.teamBridge.replies.empty": "Aucune réponse pour l’instant. Lancez le fil.",
|
|
46133
|
+
"ui.teamBridge.replies.placeholder": "Répondre dans le fil",
|
|
46134
|
+
"ui.teamBridge.replies.more": "Charger plus de réponses",
|
|
46135
|
+
"ui.teamBridge.actions.label": "Actions sur le message",
|
|
45962
46136
|
"ui.teamBridge.sender.unknown_person": "Personne inconnue",
|
|
45963
46137
|
"ui.teamBridge.sender.unknown_agent": "Agent inconnu"
|
|
45964
46138
|
};
|
|
@@ -49470,6 +49644,10 @@ const hiUiTeamBridge = {
|
|
|
49470
49644
|
"ui.teamBridge.notify.title": "{conversation} ({organization})",
|
|
49471
49645
|
"ui.teamBridge.notify.body": "{sender} ने एक संदेश भेजा",
|
|
49472
49646
|
"ui.teamBridge.notify.body_fallback": "नया संदेश",
|
|
49647
|
+
"ui.teamBridge.notify.channel": "#{channel}",
|
|
49648
|
+
"ui.teamBridge.notify.subtitle": "{place} · {organization}",
|
|
49649
|
+
"ui.teamBridge.notify.count": "{count, plural, one {# नया संदेश} other {# नए संदेश}}",
|
|
49650
|
+
"ui.teamBridge.notify.count_preview": "{count, plural, one {# नया संदेश: {preview}} other {# नए संदेश: {preview}}}",
|
|
49473
49651
|
"ui.teamBridge.people.title": "लोग",
|
|
49474
49652
|
"ui.teamBridge.people.loading": "लोगों की सूची लोड हो रही है",
|
|
49475
49653
|
"ui.teamBridge.people.error": "लोगों की सूची लोड नहीं हो सकी।",
|
|
@@ -49502,6 +49680,9 @@ const hiUiTeamBridge = {
|
|
|
49502
49680
|
"ui.teamBridge.section.chiefs_empty": "अभी किसी टीम सदस्य का एजेंट Team Bridge पर नहीं है।",
|
|
49503
49681
|
"ui.teamBridge.chief.label": "{agent} ({person})",
|
|
49504
49682
|
"ui.teamBridge.chief.fallback": "चीफ़ ऑफ़ स्टाफ़",
|
|
49683
|
+
"ui.teamBridge.chief.unnamed": "{person} के चीफ़ ऑफ़ स्टाफ़",
|
|
49684
|
+
"ui.teamBridge.message.sending": "भेजा जा रहा है…",
|
|
49685
|
+
"ui.teamBridge.message.failed": "भेजा नहीं गया",
|
|
49505
49686
|
"ui.teamBridge.people.self_named": "{name} (आप)",
|
|
49506
49687
|
"ui.teamBridge.row.menu": "{name} के लिए और कार्रवाइयाँ",
|
|
49507
49688
|
"ui.teamBridge.row.start_group": "समूह बातचीत शुरू करें",
|
|
@@ -49525,6 +49706,35 @@ const hiUiTeamBridge = {
|
|
|
49525
49706
|
"ui.teamBridge.thread.intro_chief": "{name} किसी टीम सदस्य का चीफ़ ऑफ़ स्टाफ़ एजेंट है, और उसके साथ आपकी बातचीत यहाँ से शुरू होती है। यह आपके संदेशों को भरोसेमंद इनपुट नहीं मानता, और यह किस पर अमल करेगा, यह इसका मालिक तय करता है।",
|
|
49526
49707
|
"ui.teamBridge.thread.intro_group": "आपके पहले संदेश से {names} के साथ बातचीत शुरू होगी।",
|
|
49527
49708
|
"ui.teamBridge.list.error_pane": "बातचीतें लोड नहीं हो सकीं। बाईं ओर की सूची से फिर कोशिश करें।",
|
|
49709
|
+
"ui.teamBridge.reactions.add": "प्रतिक्रिया जोड़ें",
|
|
49710
|
+
"ui.teamBridge.reactions.search": "इमोजी खोजें",
|
|
49711
|
+
"ui.teamBridge.reactions.categories": "इमोजी श्रेणियाँ",
|
|
49712
|
+
"ui.teamBridge.reactions.all": "सभी इमोजी",
|
|
49713
|
+
"ui.teamBridge.reactions.frequent": "अक्सर इस्तेमाल किए गए",
|
|
49714
|
+
"ui.teamBridge.reactions.tone": "त्वचा का रंग",
|
|
49715
|
+
"ui.teamBridge.reactions.toneDefault": "डिफ़ॉल्ट रंग",
|
|
49716
|
+
"ui.teamBridge.reactions.empty": "कोई इमोजी नहीं मिला",
|
|
49717
|
+
"ui.teamBridge.reactions.failed": "प्रतिक्रिया सहेजी नहीं गई। फिर कोशिश करें।",
|
|
49718
|
+
"ui.teamBridge.reactions.category0": "स्माइली और भावनाएँ",
|
|
49719
|
+
"ui.teamBridge.reactions.category1": "लोग और शरीर",
|
|
49720
|
+
"ui.teamBridge.reactions.category2": "पशु और प्रकृति",
|
|
49721
|
+
"ui.teamBridge.reactions.category3": "खान-पान",
|
|
49722
|
+
"ui.teamBridge.reactions.category4": "यात्रा और स्थान",
|
|
49723
|
+
"ui.teamBridge.reactions.category5": "गतिविधियाँ",
|
|
49724
|
+
"ui.teamBridge.reactions.category6": "वस्तुएँ",
|
|
49725
|
+
"ui.teamBridge.reactions.category7": "चिह्न",
|
|
49726
|
+
"ui.teamBridge.reactions.category8": "झंडे",
|
|
49727
|
+
"ui.teamBridge.reactions.choose": "इमोजी चुनें",
|
|
49728
|
+
"ui.teamBridge.reactions.noResults": "कोई इमोजी नहीं मिला",
|
|
49729
|
+
"ui.teamBridge.replies.action": "थ्रेड में जवाब दें",
|
|
49730
|
+
"ui.teamBridge.replies.title": "थ्रेड",
|
|
49731
|
+
"ui.teamBridge.replies.close": "थ्रेड बंद करें",
|
|
49732
|
+
"ui.teamBridge.replies.count": "{count, plural, one {# जवाब} other {# जवाब}}",
|
|
49733
|
+
"ui.teamBridge.replies.last": "अंतिम जवाब {time}",
|
|
49734
|
+
"ui.teamBridge.replies.empty": "अभी कोई जवाब नहीं। थ्रेड शुरू करें।",
|
|
49735
|
+
"ui.teamBridge.replies.placeholder": "थ्रेड में जवाब लिखें",
|
|
49736
|
+
"ui.teamBridge.replies.more": "और जवाब लोड करें",
|
|
49737
|
+
"ui.teamBridge.actions.label": "संदेश की कार्रवाइयाँ",
|
|
49528
49738
|
"ui.teamBridge.sender.unknown_person": "अज्ञात व्यक्ति",
|
|
49529
49739
|
"ui.teamBridge.sender.unknown_agent": "अज्ञात एजेंट"
|
|
49530
49740
|
};
|
|
@@ -53056,6 +53266,10 @@ const ruUiTeamBridge = {
|
|
|
53056
53266
|
"ui.teamBridge.notify.title": "{conversation} ({organization})",
|
|
53057
53267
|
"ui.teamBridge.notify.body": "{sender}: новое сообщение",
|
|
53058
53268
|
"ui.teamBridge.notify.body_fallback": "Новое сообщение",
|
|
53269
|
+
"ui.teamBridge.notify.channel": "#{channel}",
|
|
53270
|
+
"ui.teamBridge.notify.subtitle": "{place} · {organization}",
|
|
53271
|
+
"ui.teamBridge.notify.count": "{count, plural, one {# новое сообщение} few {# новых сообщения} many {# новых сообщений} other {# нового сообщения}}",
|
|
53272
|
+
"ui.teamBridge.notify.count_preview": "{count, plural, one {# новое сообщение: {preview}} few {# новых сообщения: {preview}} many {# новых сообщений: {preview}} other {# нового сообщения: {preview}}}",
|
|
53059
53273
|
"ui.teamBridge.people.title": "Люди",
|
|
53060
53274
|
"ui.teamBridge.people.loading": "Загрузка списка людей",
|
|
53061
53275
|
"ui.teamBridge.people.error": "Не удалось загрузить список людей.",
|
|
@@ -53088,6 +53302,9 @@ const ruUiTeamBridge = {
|
|
|
53088
53302
|
"ui.teamBridge.section.chiefs_empty": "Ни у одного участника команды пока нет агента в Team Bridge.",
|
|
53089
53303
|
"ui.teamBridge.chief.label": "{agent} ({person})",
|
|
53090
53304
|
"ui.teamBridge.chief.fallback": "Координатор",
|
|
53305
|
+
"ui.teamBridge.chief.unnamed": "Координатор ({person})",
|
|
53306
|
+
"ui.teamBridge.message.sending": "Отправка…",
|
|
53307
|
+
"ui.teamBridge.message.failed": "Не отправлено",
|
|
53091
53308
|
"ui.teamBridge.people.self_named": "{name} (вы)",
|
|
53092
53309
|
"ui.teamBridge.row.menu": "Другие действия для {name}",
|
|
53093
53310
|
"ui.teamBridge.row.start_group": "Начать групповой разговор",
|
|
@@ -53111,6 +53328,35 @@ const ruUiTeamBridge = {
|
|
|
53111
53328
|
"ui.teamBridge.thread.intro_chief": "Здесь начинается ваш разговор с агентом {name}, координатором одного из участников команды. Агент воспринимает ваши сообщения как недоверенные входные данные, а решения о действиях принимает его владелец.",
|
|
53112
53329
|
"ui.teamBridge.thread.intro_group": "Первым сообщением вы начнёте разговор. Кому: {names}.",
|
|
53113
53330
|
"ui.teamBridge.list.error_pane": "Не удалось загрузить разговоры. Повторите попытку в списке слева.",
|
|
53331
|
+
"ui.teamBridge.reactions.add": "Добавить реакцию",
|
|
53332
|
+
"ui.teamBridge.reactions.search": "Поиск эмодзи",
|
|
53333
|
+
"ui.teamBridge.reactions.categories": "Категории эмодзи",
|
|
53334
|
+
"ui.teamBridge.reactions.all": "Все эмодзи",
|
|
53335
|
+
"ui.teamBridge.reactions.frequent": "Часто используемые",
|
|
53336
|
+
"ui.teamBridge.reactions.tone": "Оттенок кожи",
|
|
53337
|
+
"ui.teamBridge.reactions.toneDefault": "По умолчанию",
|
|
53338
|
+
"ui.teamBridge.reactions.empty": "Эмодзи не найдены",
|
|
53339
|
+
"ui.teamBridge.reactions.failed": "Не удалось сохранить реакцию. Повторите попытку.",
|
|
53340
|
+
"ui.teamBridge.reactions.category0": "Смайлики и эмоции",
|
|
53341
|
+
"ui.teamBridge.reactions.category1": "Люди и части тела",
|
|
53342
|
+
"ui.teamBridge.reactions.category2": "Животные и природа",
|
|
53343
|
+
"ui.teamBridge.reactions.category3": "Еда и напитки",
|
|
53344
|
+
"ui.teamBridge.reactions.category4": "Путешествия и места",
|
|
53345
|
+
"ui.teamBridge.reactions.category5": "Занятия",
|
|
53346
|
+
"ui.teamBridge.reactions.category6": "Предметы",
|
|
53347
|
+
"ui.teamBridge.reactions.category7": "Символы",
|
|
53348
|
+
"ui.teamBridge.reactions.category8": "Флаги",
|
|
53349
|
+
"ui.teamBridge.reactions.choose": "Выберите эмодзи",
|
|
53350
|
+
"ui.teamBridge.reactions.noResults": "Эмодзи не найдены",
|
|
53351
|
+
"ui.teamBridge.replies.action": "Ответить в ветке",
|
|
53352
|
+
"ui.teamBridge.replies.title": "Ветка",
|
|
53353
|
+
"ui.teamBridge.replies.close": "Закрыть ветку",
|
|
53354
|
+
"ui.teamBridge.replies.count": "{count, plural, one {# ответ} few {# ответа} many {# ответов} other {# ответа}}",
|
|
53355
|
+
"ui.teamBridge.replies.last": "последний ответ: {time}",
|
|
53356
|
+
"ui.teamBridge.replies.empty": "Ответов пока нет. Начните ветку.",
|
|
53357
|
+
"ui.teamBridge.replies.placeholder": "Ответить в ветке",
|
|
53358
|
+
"ui.teamBridge.replies.more": "Загрузить ещё ответы",
|
|
53359
|
+
"ui.teamBridge.actions.label": "Действия с сообщением",
|
|
53114
53360
|
"ui.teamBridge.sender.unknown_person": "Неизвестный пользователь",
|
|
53115
53361
|
"ui.teamBridge.sender.unknown_agent": "Неизвестный агент"
|
|
53116
53362
|
};
|
|
@@ -56642,6 +56888,10 @@ const urUiTeamBridge = {
|
|
|
56642
56888
|
"ui.teamBridge.notify.title": "{conversation} ({organization})",
|
|
56643
56889
|
"ui.teamBridge.notify.body": "{sender} نے پیغام بھیجا",
|
|
56644
56890
|
"ui.teamBridge.notify.body_fallback": "نیا پیغام",
|
|
56891
|
+
"ui.teamBridge.notify.channel": "#{channel}",
|
|
56892
|
+
"ui.teamBridge.notify.subtitle": "{place} · {organization}",
|
|
56893
|
+
"ui.teamBridge.notify.count": "{count, plural, one {# نیا پیغام} other {# نئے پیغامات}}",
|
|
56894
|
+
"ui.teamBridge.notify.count_preview": "{count, plural, one {# نیا پیغام: {preview}} other {# نئے پیغامات: {preview}}}",
|
|
56645
56895
|
"ui.teamBridge.people.title": "لوگ",
|
|
56646
56896
|
"ui.teamBridge.people.loading": "لوگ لوڈ ہو رہے ہیں",
|
|
56647
56897
|
"ui.teamBridge.people.error": "لوگ لوڈ نہیں ہو سکے۔",
|
|
@@ -56674,6 +56924,9 @@ const urUiTeamBridge = {
|
|
|
56674
56924
|
"ui.teamBridge.section.chiefs_empty": "ابھی ٹیم کے کسی رکن کا ایجنٹ Team Bridge پر نہیں۔",
|
|
56675
56925
|
"ui.teamBridge.chief.label": "{agent} ({person})",
|
|
56676
56926
|
"ui.teamBridge.chief.fallback": "چیف آف اسٹاف",
|
|
56927
|
+
"ui.teamBridge.chief.unnamed": "{person} کے چیف آف اسٹاف",
|
|
56928
|
+
"ui.teamBridge.message.sending": "بھیجا جا رہا ہے…",
|
|
56929
|
+
"ui.teamBridge.message.failed": "بھیجا نہیں گیا",
|
|
56677
56930
|
"ui.teamBridge.people.self_named": "{name} (آپ)",
|
|
56678
56931
|
"ui.teamBridge.row.menu": "{name} کے مزید اقدامات",
|
|
56679
56932
|
"ui.teamBridge.row.start_group": "گروپ گفتگو شروع کریں",
|
|
@@ -56697,6 +56950,35 @@ const urUiTeamBridge = {
|
|
|
56697
56950
|
"ui.teamBridge.thread.intro_chief": "یہ {name} کے ساتھ آپ کی گفتگو کا آغاز ہے، جو ٹیم کے ایک رکن کا چیف آف اسٹاف ایجنٹ ہے۔ یہ آپ کے پیغامات کو غیر معتبر ان پٹ سمجھتا ہے، اور اس کا مالک طے کرتا ہے کہ یہ کس بات پر عمل کرے۔",
|
|
56698
56951
|
"ui.teamBridge.thread.intro_group": "آپ کا پہلا پیغام {names} کے ساتھ گفتگو شروع کرے گا۔",
|
|
56699
56952
|
"ui.teamBridge.list.error_pane": "گفتگوئیں لوڈ نہیں ہو سکیں۔ دائیں جانب کی فہرست سے دوبارہ کوشش کریں۔",
|
|
56953
|
+
"ui.teamBridge.reactions.add": "ردعمل شامل کریں",
|
|
56954
|
+
"ui.teamBridge.reactions.search": "ایموجی تلاش کریں",
|
|
56955
|
+
"ui.teamBridge.reactions.categories": "ایموجی کے زمرے",
|
|
56956
|
+
"ui.teamBridge.reactions.all": "تمام ایموجی",
|
|
56957
|
+
"ui.teamBridge.reactions.frequent": "اکثر استعمال ہونے والے",
|
|
56958
|
+
"ui.teamBridge.reactions.tone": "جلد کی رنگت",
|
|
56959
|
+
"ui.teamBridge.reactions.toneDefault": "ڈیفالٹ رنگت",
|
|
56960
|
+
"ui.teamBridge.reactions.empty": "کوئی ایموجی نہیں ملا",
|
|
56961
|
+
"ui.teamBridge.reactions.failed": "ردعمل محفوظ نہیں ہو سکا۔ دوبارہ کوشش کریں۔",
|
|
56962
|
+
"ui.teamBridge.reactions.category0": "اسمائلیز اور جذبات",
|
|
56963
|
+
"ui.teamBridge.reactions.category1": "لوگ اور جسم",
|
|
56964
|
+
"ui.teamBridge.reactions.category2": "جانور اور فطرت",
|
|
56965
|
+
"ui.teamBridge.reactions.category3": "کھانا اور مشروبات",
|
|
56966
|
+
"ui.teamBridge.reactions.category4": "سفر اور مقامات",
|
|
56967
|
+
"ui.teamBridge.reactions.category5": "سرگرمیاں",
|
|
56968
|
+
"ui.teamBridge.reactions.category6": "اشیاء",
|
|
56969
|
+
"ui.teamBridge.reactions.category7": "علامات",
|
|
56970
|
+
"ui.teamBridge.reactions.category8": "پرچم",
|
|
56971
|
+
"ui.teamBridge.reactions.choose": "ایموجی منتخب کریں",
|
|
56972
|
+
"ui.teamBridge.reactions.noResults": "کوئی ایموجی نہیں ملا",
|
|
56973
|
+
"ui.teamBridge.replies.action": "تھریڈ میں جواب دیں",
|
|
56974
|
+
"ui.teamBridge.replies.title": "تھریڈ",
|
|
56975
|
+
"ui.teamBridge.replies.close": "تھریڈ بند کریں",
|
|
56976
|
+
"ui.teamBridge.replies.count": "{count, plural, one {# جواب} other {# جوابات}}",
|
|
56977
|
+
"ui.teamBridge.replies.last": "آخری جواب {time}",
|
|
56978
|
+
"ui.teamBridge.replies.empty": "ابھی کوئی جواب نہیں۔ تھریڈ شروع کریں۔",
|
|
56979
|
+
"ui.teamBridge.replies.placeholder": "تھریڈ میں جواب دیں",
|
|
56980
|
+
"ui.teamBridge.replies.more": "مزید جوابات لوڈ کریں",
|
|
56981
|
+
"ui.teamBridge.actions.label": "پیغام کے اقدامات",
|
|
56700
56982
|
"ui.teamBridge.sender.unknown_person": "نامعلوم شخص",
|
|
56701
56983
|
"ui.teamBridge.sender.unknown_agent": "نامعلوم ایجنٹ"
|
|
56702
56984
|
};
|
|
@@ -60037,6 +60319,10 @@ const viUiTeamBridge = {
|
|
|
60037
60319
|
"ui.teamBridge.notify.title": "{conversation} ({organization})",
|
|
60038
60320
|
"ui.teamBridge.notify.body": "{sender} đã gửi một tin nhắn",
|
|
60039
60321
|
"ui.teamBridge.notify.body_fallback": "Tin nhắn mới",
|
|
60322
|
+
"ui.teamBridge.notify.channel": "#{channel}",
|
|
60323
|
+
"ui.teamBridge.notify.subtitle": "{place} · {organization}",
|
|
60324
|
+
"ui.teamBridge.notify.count": "{count, plural, other {# tin nhắn mới}}",
|
|
60325
|
+
"ui.teamBridge.notify.count_preview": "{count, plural, other {# tin nhắn mới: {preview}}}",
|
|
60040
60326
|
"ui.teamBridge.people.title": "Mọi người",
|
|
60041
60327
|
"ui.teamBridge.people.loading": "Đang tải danh sách mọi người",
|
|
60042
60328
|
"ui.teamBridge.people.error": "Không tải được danh sách mọi người.",
|
|
@@ -60069,6 +60355,9 @@ const viUiTeamBridge = {
|
|
|
60069
60355
|
"ui.teamBridge.section.chiefs_empty": "Chưa có đồng nghiệp nào đưa tác nhân lên Team Bridge.",
|
|
60070
60356
|
"ui.teamBridge.chief.label": "{agent} ({person})",
|
|
60071
60357
|
"ui.teamBridge.chief.fallback": "Chánh văn phòng",
|
|
60358
|
+
"ui.teamBridge.chief.unnamed": "Chánh văn phòng của {person}",
|
|
60359
|
+
"ui.teamBridge.message.sending": "Đang gửi…",
|
|
60360
|
+
"ui.teamBridge.message.failed": "Chưa gửi được",
|
|
60072
60361
|
"ui.teamBridge.people.self_named": "{name} (bạn)",
|
|
60073
60362
|
"ui.teamBridge.row.menu": "Thao tác khác cho {name}",
|
|
60074
60363
|
"ui.teamBridge.row.start_group": "Bắt đầu trò chuyện nhóm",
|
|
@@ -60092,6 +60381,35 @@ const viUiTeamBridge = {
|
|
|
60092
60381
|
"ui.teamBridge.thread.intro_chief": "Đây là khởi đầu cuộc trò chuyện của bạn với {name}, tác nhân chánh văn phòng của một đồng nghiệp. Tác nhân này coi tin nhắn của bạn là đầu vào không tin cậy, và chủ sở hữu sẽ quyết định tác nhân làm theo điều gì.",
|
|
60093
60382
|
"ui.teamBridge.thread.intro_group": "Tin nhắn đầu tiên của bạn sẽ bắt đầu cuộc trò chuyện với {names}.",
|
|
60094
60383
|
"ui.teamBridge.list.error_pane": "Không tải được danh sách cuộc trò chuyện. Hãy thử lại từ danh sách bên trái.",
|
|
60384
|
+
"ui.teamBridge.reactions.add": "Thêm cảm xúc",
|
|
60385
|
+
"ui.teamBridge.reactions.search": "Tìm biểu tượng cảm xúc",
|
|
60386
|
+
"ui.teamBridge.reactions.categories": "Danh mục biểu tượng cảm xúc",
|
|
60387
|
+
"ui.teamBridge.reactions.all": "Tất cả biểu tượng cảm xúc",
|
|
60388
|
+
"ui.teamBridge.reactions.frequent": "Thường dùng",
|
|
60389
|
+
"ui.teamBridge.reactions.tone": "Tông màu da",
|
|
60390
|
+
"ui.teamBridge.reactions.toneDefault": "Tông màu da mặc định",
|
|
60391
|
+
"ui.teamBridge.reactions.empty": "Không tìm thấy biểu tượng cảm xúc",
|
|
60392
|
+
"ui.teamBridge.reactions.failed": "Không lưu được cảm xúc. Hãy thử lại.",
|
|
60393
|
+
"ui.teamBridge.reactions.category0": "Mặt cười và cảm xúc",
|
|
60394
|
+
"ui.teamBridge.reactions.category1": "Người và cơ thể",
|
|
60395
|
+
"ui.teamBridge.reactions.category2": "Động vật và thiên nhiên",
|
|
60396
|
+
"ui.teamBridge.reactions.category3": "Đồ ăn và thức uống",
|
|
60397
|
+
"ui.teamBridge.reactions.category4": "Du lịch và địa điểm",
|
|
60398
|
+
"ui.teamBridge.reactions.category5": "Hoạt động",
|
|
60399
|
+
"ui.teamBridge.reactions.category6": "Đồ vật",
|
|
60400
|
+
"ui.teamBridge.reactions.category7": "Biểu tượng",
|
|
60401
|
+
"ui.teamBridge.reactions.category8": "Cờ",
|
|
60402
|
+
"ui.teamBridge.reactions.choose": "Chọn biểu tượng cảm xúc",
|
|
60403
|
+
"ui.teamBridge.reactions.noResults": "Không tìm thấy biểu tượng cảm xúc",
|
|
60404
|
+
"ui.teamBridge.replies.action": "Trả lời trong luồng",
|
|
60405
|
+
"ui.teamBridge.replies.title": "Luồng trò chuyện",
|
|
60406
|
+
"ui.teamBridge.replies.close": "Đóng luồng trò chuyện",
|
|
60407
|
+
"ui.teamBridge.replies.count": "{count, plural, other {# câu trả lời}}",
|
|
60408
|
+
"ui.teamBridge.replies.last": "trả lời gần nhất lúc {time}",
|
|
60409
|
+
"ui.teamBridge.replies.empty": "Chưa có câu trả lời nào. Hãy bắt đầu luồng trò chuyện.",
|
|
60410
|
+
"ui.teamBridge.replies.placeholder": "Trả lời trong luồng",
|
|
60411
|
+
"ui.teamBridge.replies.more": "Tải thêm câu trả lời",
|
|
60412
|
+
"ui.teamBridge.actions.label": "Thao tác với tin nhắn",
|
|
60095
60413
|
"ui.teamBridge.sender.unknown_person": "Người không xác định",
|
|
60096
60414
|
"ui.teamBridge.sender.unknown_agent": "Tác nhân không xác định"
|
|
60097
60415
|
};
|
|
@@ -63645,6 +63963,10 @@ const zhCNUiTeamBridge = {
|
|
|
63645
63963
|
"ui.teamBridge.notify.title": "{conversation}({organization})",
|
|
63646
63964
|
"ui.teamBridge.notify.body": "{sender}发来一条消息",
|
|
63647
63965
|
"ui.teamBridge.notify.body_fallback": "新消息",
|
|
63966
|
+
"ui.teamBridge.notify.channel": "#{channel}",
|
|
63967
|
+
"ui.teamBridge.notify.subtitle": "{place} · {organization}",
|
|
63968
|
+
"ui.teamBridge.notify.count": "{count, plural, other {#条新消息}}",
|
|
63969
|
+
"ui.teamBridge.notify.count_preview": "{count, plural, other {#条新消息:{preview}}}",
|
|
63648
63970
|
"ui.teamBridge.people.title": "成员",
|
|
63649
63971
|
"ui.teamBridge.people.loading": "正在加载成员",
|
|
63650
63972
|
"ui.teamBridge.people.error": "无法加载成员。",
|
|
@@ -63677,6 +63999,9 @@ const zhCNUiTeamBridge = {
|
|
|
63677
63999
|
"ui.teamBridge.section.chiefs_empty": "还没有团队成员将智能体接入Team Bridge。",
|
|
63678
64000
|
"ui.teamBridge.chief.label": "{agent}({person})",
|
|
63679
64001
|
"ui.teamBridge.chief.fallback": "首席助理",
|
|
64002
|
+
"ui.teamBridge.chief.unnamed": "{person}的首席助理",
|
|
64003
|
+
"ui.teamBridge.message.sending": "发送中……",
|
|
64004
|
+
"ui.teamBridge.message.failed": "未发送",
|
|
63680
64005
|
"ui.teamBridge.people.self_named": "{name}(你)",
|
|
63681
64006
|
"ui.teamBridge.row.menu": "{name}的更多操作",
|
|
63682
64007
|
"ui.teamBridge.row.start_group": "发起群组对话",
|
|
@@ -63700,6 +64025,35 @@ const zhCNUiTeamBridge = {
|
|
|
63700
64025
|
"ui.teamBridge.thread.intro_chief": "这是你与{name}对话的开始,对方是一位团队成员的首席助理。它会将你的消息视为不受信任的输入,是否据此行动由其所有者决定。",
|
|
63701
64026
|
"ui.teamBridge.thread.intro_group": "发送第一条消息即可开始与{names}的对话。",
|
|
63702
64027
|
"ui.teamBridge.list.error_pane": "无法加载对话。请在左侧列表中重试。",
|
|
64028
|
+
"ui.teamBridge.reactions.add": "添加表情回应",
|
|
64029
|
+
"ui.teamBridge.reactions.search": "搜索表情",
|
|
64030
|
+
"ui.teamBridge.reactions.categories": "表情类别",
|
|
64031
|
+
"ui.teamBridge.reactions.all": "全部表情",
|
|
64032
|
+
"ui.teamBridge.reactions.frequent": "常用",
|
|
64033
|
+
"ui.teamBridge.reactions.tone": "肤色",
|
|
64034
|
+
"ui.teamBridge.reactions.toneDefault": "默认肤色",
|
|
64035
|
+
"ui.teamBridge.reactions.empty": "未找到表情",
|
|
64036
|
+
"ui.teamBridge.reactions.failed": "表情回应未保存。请重试。",
|
|
64037
|
+
"ui.teamBridge.reactions.category0": "笑脸和情感",
|
|
64038
|
+
"ui.teamBridge.reactions.category1": "人物和身体",
|
|
64039
|
+
"ui.teamBridge.reactions.category2": "动物和自然",
|
|
64040
|
+
"ui.teamBridge.reactions.category3": "食物和饮料",
|
|
64041
|
+
"ui.teamBridge.reactions.category4": "旅行和地点",
|
|
64042
|
+
"ui.teamBridge.reactions.category5": "活动",
|
|
64043
|
+
"ui.teamBridge.reactions.category6": "物品",
|
|
64044
|
+
"ui.teamBridge.reactions.category7": "符号",
|
|
64045
|
+
"ui.teamBridge.reactions.category8": "旗帜",
|
|
64046
|
+
"ui.teamBridge.reactions.choose": "选择表情",
|
|
64047
|
+
"ui.teamBridge.reactions.noResults": "未找到表情",
|
|
64048
|
+
"ui.teamBridge.replies.action": "在讨论串中回复",
|
|
64049
|
+
"ui.teamBridge.replies.title": "讨论串",
|
|
64050
|
+
"ui.teamBridge.replies.close": "关闭讨论串",
|
|
64051
|
+
"ui.teamBridge.replies.count": "{count, plural, other {#条回复}}",
|
|
64052
|
+
"ui.teamBridge.replies.last": "最后回复于{time}",
|
|
64053
|
+
"ui.teamBridge.replies.empty": "还没有回复。发起讨论吧。",
|
|
64054
|
+
"ui.teamBridge.replies.placeholder": "在讨论串中回复",
|
|
64055
|
+
"ui.teamBridge.replies.more": "加载更多回复",
|
|
64056
|
+
"ui.teamBridge.actions.label": "消息操作",
|
|
63703
64057
|
"ui.teamBridge.sender.unknown_person": "未知用户",
|
|
63704
64058
|
"ui.teamBridge.sender.unknown_agent": "未知智能体"
|
|
63705
64059
|
};
|
|
@@ -74375,7 +74729,7 @@ async function runWithLimit(items, limit, worker) {
|
|
|
74375
74729
|
}
|
|
74376
74730
|
await Promise.all(runners);
|
|
74377
74731
|
}
|
|
74378
|
-
async function probeFiles(asked, cwd, home, deps = fsProbeDeps, cache = sharedProbeCache) {
|
|
74732
|
+
async function probeFiles(asked, cwd, home, deps = fsProbeDeps, cache = sharedProbeCache, fresh = false) {
|
|
74379
74733
|
const inputs = asked.slice(0, MAX_PROBE_PATHS);
|
|
74380
74734
|
const realRootPromise = cwd ? probeRealRoot(resolveUserPath$1(cwd, void 0, home), deps) : Promise.resolve(null);
|
|
74381
74735
|
const units = /* @__PURE__ */ new Map();
|
|
@@ -74389,8 +74743,9 @@ async function probeFiles(asked, cwd, home, deps = fsProbeDeps, cache = sharedPr
|
|
|
74389
74743
|
for (const [key, unit] of units) {
|
|
74390
74744
|
const entry = cache.get(key);
|
|
74391
74745
|
if (entry === void 0) continue;
|
|
74392
|
-
if (now - entry.at < entry.ttlMs)
|
|
74393
|
-
|
|
74746
|
+
if (now - entry.at < entry.ttlMs) {
|
|
74747
|
+
if (!fresh) unit.facts = entry;
|
|
74748
|
+
} else cache.delete(key);
|
|
74394
74749
|
}
|
|
74395
74750
|
await runWithLimit(
|
|
74396
74751
|
[...units.entries()].filter(([, unit]) => unit.facts === null),
|
|
@@ -75157,17 +75512,16 @@ function installSupplementProtocol(fetchDocument, log2) {
|
|
|
75157
75512
|
});
|
|
75158
75513
|
}
|
|
75159
75514
|
const TEAM_BRIDGE_NOTIFY_MAX_TITLE = 320;
|
|
75160
|
-
const TEAM_BRIDGE_NOTIFY_MAX_BODY =
|
|
75515
|
+
const TEAM_BRIDGE_NOTIFY_MAX_BODY = 360;
|
|
75516
|
+
const TEAM_BRIDGE_NOTIFY_MAX_SUBTITLE = 320;
|
|
75161
75517
|
const MAX_SEQ = Number.MAX_SAFE_INTEGER;
|
|
75162
75518
|
const SAFE_ID = /^[A-Za-z0-9_.:-]{1,128}$/;
|
|
75519
|
+
function unsafeBannerCharacter(character) {
|
|
75520
|
+
const code = character.codePointAt(0) ?? 0;
|
|
75521
|
+
return character === "<" || character === ">" || code < 32 || code >= 127 && code <= 159 || code === 1564 || code === 8206 || code === 8207 || code >= 8234 && code <= 8238 || code >= 8294 && code <= 8297 || code === 8232 || code === 8233;
|
|
75522
|
+
}
|
|
75163
75523
|
function hasUnsafeText(value) {
|
|
75164
|
-
|
|
75165
|
-
const code = character.codePointAt(0) ?? 0;
|
|
75166
|
-
if (character === "<" || character === ">" || code < 32 || code === 127) {
|
|
75167
|
-
return true;
|
|
75168
|
-
}
|
|
75169
|
-
}
|
|
75170
|
-
return false;
|
|
75524
|
+
return Array.from(value).some(unsafeBannerCharacter);
|
|
75171
75525
|
}
|
|
75172
75526
|
function cleanId(value) {
|
|
75173
75527
|
return typeof value === "string" && SAFE_ID.test(value) ? value : null;
|
|
@@ -75176,7 +75530,7 @@ function cleanText(value, max) {
|
|
|
75176
75530
|
if (typeof value !== "string") return null;
|
|
75177
75531
|
const trimmed = value.trim();
|
|
75178
75532
|
if (trimmed.length === 0 || trimmed.length > max) return null;
|
|
75179
|
-
if (hasUnsafeText(
|
|
75533
|
+
if (hasUnsafeText(value)) return null;
|
|
75180
75534
|
return trimmed;
|
|
75181
75535
|
}
|
|
75182
75536
|
function parseTeamBridgeNotifyRequest(value) {
|
|
@@ -75189,13 +75543,47 @@ function parseTeamBridgeNotifyRequest(value) {
|
|
|
75189
75543
|
const title = cleanText(input.title, TEAM_BRIDGE_NOTIFY_MAX_TITLE);
|
|
75190
75544
|
const body = cleanText(input.body, TEAM_BRIDGE_NOTIFY_MAX_BODY);
|
|
75191
75545
|
const seq2 = input.seq;
|
|
75546
|
+
const subtitle = input.subtitle === void 0 ? void 0 : cleanText(input.subtitle, TEAM_BRIDGE_NOTIFY_MAX_SUBTITLE);
|
|
75547
|
+
const threadId = input.threadId === void 0 ? void 0 : cleanId(input.threadId);
|
|
75548
|
+
const viewing = input.viewing;
|
|
75549
|
+
if (subtitle === null || threadId === null || viewing !== void 0 && typeof viewing !== "boolean") {
|
|
75550
|
+
return null;
|
|
75551
|
+
}
|
|
75192
75552
|
if (conversationId === null || tenantId === null || title === null || body === null || typeof seq2 !== "number" || !Number.isSafeInteger(seq2) || seq2 < 0 || seq2 > MAX_SEQ) {
|
|
75193
75553
|
return null;
|
|
75194
75554
|
}
|
|
75195
|
-
return {
|
|
75555
|
+
return {
|
|
75556
|
+
conversationId,
|
|
75557
|
+
tenantId,
|
|
75558
|
+
title,
|
|
75559
|
+
body,
|
|
75560
|
+
seq: seq2,
|
|
75561
|
+
...subtitle === void 0 ? {} : { subtitle },
|
|
75562
|
+
...threadId === void 0 ? {} : { threadId },
|
|
75563
|
+
...viewing === void 0 ? {} : { viewing }
|
|
75564
|
+
};
|
|
75565
|
+
}
|
|
75566
|
+
const TEAM_BRIDGE_COALESCE_MS = 1e4;
|
|
75567
|
+
function teamBridgeBannerId(conversationId) {
|
|
75568
|
+
return `team-bridge:${conversationId}`;
|
|
75569
|
+
}
|
|
75570
|
+
function teamBridgeBannerLines(request, platform) {
|
|
75571
|
+
if (!request.subtitle) return { title: request.title, body: request.body };
|
|
75572
|
+
if (platform === "darwin") {
|
|
75573
|
+
return {
|
|
75574
|
+
title: request.title,
|
|
75575
|
+
subtitle: request.subtitle,
|
|
75576
|
+
body: request.body
|
|
75577
|
+
};
|
|
75578
|
+
}
|
|
75579
|
+
return {
|
|
75580
|
+
title: request.title,
|
|
75581
|
+
body: `${request.subtitle} — ${request.body}`
|
|
75582
|
+
};
|
|
75196
75583
|
}
|
|
75197
|
-
function teamBridgeWindowIsQuiet(window) {
|
|
75584
|
+
function teamBridgeWindowIsQuiet(window, viewing) {
|
|
75198
75585
|
if (!window) return false;
|
|
75586
|
+
if (viewing === false) return false;
|
|
75199
75587
|
return !window.isDestroyed() && window.isVisible() && !window.isMinimized() && window.isFocused();
|
|
75200
75588
|
}
|
|
75201
75589
|
class TeamBridgeNotifier {
|
|
@@ -75206,6 +75594,8 @@ class TeamBridgeNotifier {
|
|
|
75206
75594
|
}
|
|
75207
75595
|
/** The live banner per conversation, so a new seq REPLACES it. */
|
|
75208
75596
|
banners = /* @__PURE__ */ new Map();
|
|
75597
|
+
/** When each conversation's live banner was raised, for `COALESCE_MS`. */
|
|
75598
|
+
raisedAt = /* @__PURE__ */ new Map();
|
|
75209
75599
|
/** The banners this process must keep reachable for their clicks to fire. */
|
|
75210
75600
|
lifetime = new NotificationLifetime();
|
|
75211
75601
|
pendingOpen = null;
|
|
@@ -75226,31 +75616,37 @@ class TeamBridgeNotifier {
|
|
|
75226
75616
|
}
|
|
75227
75617
|
if (this.options.show === "never") return { shown: false };
|
|
75228
75618
|
if (!this.canNotify()) return { shown: false };
|
|
75229
|
-
if (teamBridgeWindowIsQuiet(this.options.window())) {
|
|
75619
|
+
if (teamBridgeWindowIsQuiet(this.options.window(), request.viewing)) {
|
|
75230
75620
|
return { shown: false };
|
|
75231
75621
|
}
|
|
75232
75622
|
const previous = this.options.store.notifiedSeq(request.conversationId);
|
|
75233
75623
|
if (previous !== void 0 && request.seq <= previous) {
|
|
75234
75624
|
return { shown: false };
|
|
75235
75625
|
}
|
|
75626
|
+
const now = (this.options.now ?? Date.now)();
|
|
75627
|
+
const lastRaised = this.raisedAt.get(request.conversationId);
|
|
75628
|
+
const burst = this.banners.has(request.conversationId) && lastRaised !== void 0 && now - lastRaised < TEAM_BRIDGE_COALESCE_MS;
|
|
75236
75629
|
this.replace(request.conversationId);
|
|
75237
75630
|
const notification = this.createBanner({
|
|
75238
|
-
|
|
75239
|
-
|
|
75240
|
-
|
|
75631
|
+
id: teamBridgeBannerId(request.conversationId),
|
|
75632
|
+
groupId: teamBridgeBannerId(request.conversationId),
|
|
75633
|
+
...teamBridgeBannerLines(
|
|
75634
|
+
request,
|
|
75635
|
+
this.options.platform ?? process.platform
|
|
75636
|
+
),
|
|
75637
|
+
silent: burst,
|
|
75241
75638
|
...this.options.icon ? { icon: this.options.icon } : {}
|
|
75242
75639
|
});
|
|
75243
|
-
|
|
75244
|
-
|
|
75245
|
-
|
|
75246
|
-
|
|
75247
|
-
|
|
75248
|
-
|
|
75249
|
-
|
|
75250
|
-
}
|
|
75251
|
-
});
|
|
75640
|
+
const conversationId = request.conversationId;
|
|
75641
|
+
const target2 = {
|
|
75642
|
+
conversationId,
|
|
75643
|
+
tenantId: request.tenantId,
|
|
75644
|
+
...request.threadId ? { threadId: request.threadId } : {}
|
|
75645
|
+
};
|
|
75646
|
+
this.retainTarget(notification, target2);
|
|
75252
75647
|
notification.show();
|
|
75253
75648
|
this.banners.set(request.conversationId, notification);
|
|
75649
|
+
this.raisedAt.set(request.conversationId, now);
|
|
75254
75650
|
this.options.store.record(request.conversationId, request.seq);
|
|
75255
75651
|
return { shown: true };
|
|
75256
75652
|
}
|
|
@@ -75274,11 +75670,20 @@ class TeamBridgeNotifier {
|
|
|
75274
75670
|
this.banners.delete(conversationId);
|
|
75275
75671
|
previous.close?.();
|
|
75276
75672
|
}
|
|
75277
|
-
|
|
75278
|
-
|
|
75279
|
-
|
|
75280
|
-
|
|
75281
|
-
|
|
75673
|
+
/** Separate scope makes it impossible for handlers to retain the IPC request. */
|
|
75674
|
+
retainTarget(notification, target2) {
|
|
75675
|
+
const conversationId = target2.conversationId;
|
|
75676
|
+
this.lifetime.retain(notification, () => {
|
|
75677
|
+
this.banners.delete(conversationId);
|
|
75678
|
+
this.open(target2);
|
|
75679
|
+
});
|
|
75680
|
+
notification.once("close", () => {
|
|
75681
|
+
if (this.banners.get(conversationId) === notification) {
|
|
75682
|
+
this.banners.delete(conversationId);
|
|
75683
|
+
}
|
|
75684
|
+
});
|
|
75685
|
+
}
|
|
75686
|
+
open(target2) {
|
|
75282
75687
|
this.pendingOpen = target2;
|
|
75283
75688
|
const window = this.options.window();
|
|
75284
75689
|
if (window && !window.isDestroyed()) {
|
|
@@ -85096,10 +85501,18 @@ electron.app.whenReady().then(async () => {
|
|
|
85096
85501
|
};
|
|
85097
85502
|
electron.ipcMain.handle(
|
|
85098
85503
|
"probe-files",
|
|
85099
|
-
async (event, paths, cwd) => {
|
|
85504
|
+
async (event, paths, cwd, options) => {
|
|
85100
85505
|
authorizeLocalFileSender(event, "probe files");
|
|
85101
85506
|
const asked = Array.isArray(paths) ? paths.filter((path2) => typeof path2 === "string") : [];
|
|
85102
|
-
|
|
85507
|
+
const fresh = options?.fresh === true;
|
|
85508
|
+
return await probeFiles(
|
|
85509
|
+
asked,
|
|
85510
|
+
cwd,
|
|
85511
|
+
electron.app.getPath("home"),
|
|
85512
|
+
void 0,
|
|
85513
|
+
void 0,
|
|
85514
|
+
fresh
|
|
85515
|
+
);
|
|
85103
85516
|
}
|
|
85104
85517
|
);
|
|
85105
85518
|
electron.ipcMain.handle(
|