@hanzo/bot 2026.3.8 → 2026.3.10
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/dist/{audio-preflight-D_s-peid.js → audio-preflight-BnfuyvxO.js} +4 -4
- package/dist/{audio-preflight-BEc8i-bS.js → audio-preflight-CpAXC_Ct.js} +4 -4
- package/dist/{audio-transcription-runner-X1KzI7dF.js → audio-transcription-runner-CAOjjGxN.js} +1 -1
- package/dist/{audio-transcription-runner-BePCnZfw.js → audio-transcription-runner-GcMnO6sT.js} +1 -1
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +6 -6
- package/dist/bundled/session-memory/handler.js +6 -6
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{chrome-B24-8NDM.js → chrome--CFg5C_H.js} +8 -8
- package/dist/{chrome-C7OwLtx9.js → chrome-jCt9JCU8.js} +8 -8
- package/dist/{cloud-connect-CknfBF39.js → cloud-connect-6kdj8st_.js} +1 -1
- package/dist/{deliver-D8dBbzpu.js → deliver-BVtVDxwX.js} +1 -1
- package/dist/{deliver-DudaV86i.js → deliver-DmfS4khs.js} +1 -1
- package/dist/{deliver-runtime-C76IMU4W.js → deliver-runtime-G0G5orrZ.js} +3 -3
- package/dist/{deliver-runtime-qDmQqiF-.js → deliver-runtime-PxJvVUhh.js} +3 -3
- package/dist/{deps-send-whatsapp.runtime-Cv_awFtm.js → deps-send-whatsapp.runtime-8bLqjmui.js} +7 -7
- package/dist/{deps-send-whatsapp.runtime-Cq-TLsJw.js → deps-send-whatsapp.runtime-CrzuaVhC.js} +7 -7
- package/dist/entry.js +15 -8
- package/dist/extensionAPI.js +6 -6
- package/dist/{image-nUHQF6BX.js → image-BdZcUz8M.js} +1 -1
- package/dist/{image-BOybyCis.js → image-DSK1hSSV.js} +1 -1
- package/dist/{image-runtime-B5M_-diF.js → image-runtime-ueqmfx1a.js} +3 -3
- package/dist/{image-runtime-y4msd5bn.js → image-runtime-xqxW2PQA.js} +3 -3
- package/dist/llm-slug-generator.js +6 -6
- package/dist/{local-launch-C2RER-G3.js → local-launch-BJpBAIR5.js} +37 -33
- package/dist/{pi-embedded-BHXPs-Ix.js → pi-embedded-DBn841N-.js} +24 -24
- package/dist/{pi-embedded-DvWHP6Nn.js → pi-embedded-DYc6emwb.js} +24 -24
- package/dist/{pi-embedded-helpers-xIXwvwuE.js → pi-embedded-helpers-BtnBVL-4.js} +3 -3
- package/dist/{pi-embedded-helpers-Ck1qEeMH.js → pi-embedded-helpers-DLm1Mtr2.js} +3 -3
- package/dist/plugin-sdk/accounts-B8qv93DH.js +35 -0
- package/dist/plugin-sdk/accounts-D2p8t4UO.js +288 -0
- package/dist/plugin-sdk/accounts-D96D1U9M.js +46 -0
- package/dist/plugin-sdk/active-listener-Mha1rAbh.js +50 -0
- package/dist/plugin-sdk/api-key-rotation-D0aZfxXH.js +181 -0
- package/dist/plugin-sdk/audio-preflight-D3y8mHJa.js +69 -0
- package/dist/plugin-sdk/audio-transcription-runner-j0mQXKSH.js +2205 -0
- package/dist/plugin-sdk/audit-membership-runtime-D-Ni2WDc.js +58 -0
- package/dist/plugin-sdk/channel-activity-VpA3MxPb.js +94 -0
- package/dist/plugin-sdk/channel-web-BP3vDdim.js +2256 -0
- package/dist/plugin-sdk/chrome-5jJIDTj0.js +2447 -0
- package/dist/plugin-sdk/commands-registry-BVKCdwN_.js +1125 -0
- package/dist/plugin-sdk/config-CudVTZDi.js +18200 -0
- package/dist/plugin-sdk/deliver-4NrmrRKu.js +1744 -0
- package/dist/plugin-sdk/deliver-runtime-CB4wXMTH.js +32 -0
- package/dist/plugin-sdk/deps-send-discord.runtime-Di8ELKED.js +23 -0
- package/dist/plugin-sdk/deps-send-imessage.runtime-CWWtApbz.js +22 -0
- package/dist/plugin-sdk/deps-send-signal.runtime-C6BGyoIY.js +21 -0
- package/dist/plugin-sdk/deps-send-slack.runtime-DgtITBuc.js +19 -0
- package/dist/plugin-sdk/deps-send-telegram.runtime-DyY4XRxh.js +24 -0
- package/dist/plugin-sdk/deps-send-whatsapp.runtime-LKiQNFcF.js +57 -0
- package/dist/plugin-sdk/diagnostic-DCPixRez.js +319 -0
- package/dist/plugin-sdk/errors-D5bA02--.js +54 -0
- package/dist/plugin-sdk/fetch-guard-n0LVdzZL.js +156 -0
- package/dist/plugin-sdk/fs-safe-IQ0H7rVD.js +352 -0
- package/dist/plugin-sdk/image-n-R2HcNg.js +2314 -0
- package/dist/plugin-sdk/image-ops-BpYDXC6N.js +584 -0
- package/dist/plugin-sdk/image-runtime-CbCl82B8.js +25 -0
- package/dist/plugin-sdk/index.js +50 -50
- package/dist/plugin-sdk/ir-DsMX3GcS.js +1296 -0
- package/dist/plugin-sdk/local-roots-DR-lR22p.js +186 -0
- package/dist/plugin-sdk/logger-2A0UE34q.js +1163 -0
- package/dist/plugin-sdk/login-CxFTtHEi.js +57 -0
- package/dist/plugin-sdk/login-qr-BCkrf1Zx.js +320 -0
- package/dist/plugin-sdk/manager-ClUgSFkG.js +3943 -0
- package/dist/plugin-sdk/manager-runtime-MWzYCRyH.js +15 -0
- package/dist/plugin-sdk/outbound-Dqs8L8QW.js +212 -0
- package/dist/plugin-sdk/outbound-attachment-CPfpUcdI.js +19 -0
- package/dist/plugin-sdk/path-alias-guards-LILr7Hrs.js +43 -0
- package/dist/plugin-sdk/paths-CfGmXu9A.js +166 -0
- package/dist/plugin-sdk/pi-embedded-helpers-CeC8GbRi.js +9731 -0
- package/dist/plugin-sdk/pi-model-discovery-DycOMKYh.js +134 -0
- package/dist/plugin-sdk/pi-model-discovery-runtime-C64BYe5F.js +8 -0
- package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-C-HNtPSw.js +354 -0
- package/dist/plugin-sdk/plugins-2gQWMmUN.js +1205 -0
- package/dist/plugin-sdk/proxy-fetch-sX3-xzX1.js +38 -0
- package/dist/plugin-sdk/pw-ai-D7FTxM3C.js +1938 -0
- package/dist/plugin-sdk/qmd-manager-Da3Jq30m.js +1608 -0
- package/dist/plugin-sdk/query-expansion-B5Z0In1U.js +1014 -0
- package/dist/plugin-sdk/redact-85H1J7mo.js +319 -0
- package/dist/plugin-sdk/reply-DmCyOPxV.js +102224 -0
- package/dist/plugin-sdk/resolve-outbound-target-y0Sp7gsM.js +40 -0
- package/dist/plugin-sdk/run-with-concurrency-CFRxflYW.js +1994 -0
- package/dist/plugin-sdk/runtime-whatsapp-login.runtime-fgm84Rdh.js +10 -0
- package/dist/plugin-sdk/runtime-whatsapp-outbound.runtime-DpMuLd_h.js +19 -0
- package/dist/plugin-sdk/send-BQvcPd54.js +3135 -0
- package/dist/plugin-sdk/send-Bplfz7UW.js +540 -0
- package/dist/plugin-sdk/send-C8gdhoLP.js +414 -0
- package/dist/plugin-sdk/send-CTOVZqmi.js +2602 -0
- package/dist/plugin-sdk/send-Cld7xlxq.js +503 -0
- package/dist/plugin-sdk/session-D4k86ARy.js +169 -0
- package/dist/plugin-sdk/signal.js +2 -2
- package/dist/plugin-sdk/skill-commands-BfHvtJx2.js +353 -0
- package/dist/plugin-sdk/skills-BrE5Yb5o.js +1428 -0
- package/dist/plugin-sdk/slash-commands.runtime-UpSrdY-a.js +13 -0
- package/dist/plugin-sdk/slash-dispatch.runtime-C-Ymizf2.js +52 -0
- package/dist/plugin-sdk/slash-skill-commands.runtime-Bb9wo3w0.js +16 -0
- package/dist/plugin-sdk/ssrf-CbvrROKN.js +202 -0
- package/dist/plugin-sdk/store-8XS_isi_.js +81 -0
- package/dist/plugin-sdk/subagent-registry-runtime-Cl3jJKM1.js +52 -0
- package/dist/plugin-sdk/tables-BhfDBQ58.js +55 -0
- package/dist/plugin-sdk/target-errors-0DW3k-Ae.js +195 -0
- package/dist/plugin-sdk/thinking-DE2FCBnv.js +1209 -0
- package/dist/plugin-sdk/tokens-C2tJ8uXs.js +52 -0
- package/dist/plugin-sdk/tool-images-B1I6LEp7.js +274 -0
- package/dist/plugin-sdk/web-BHzDLmns.js +56 -0
- package/dist/plugin-sdk/whatsapp-actions-BoAH0BAS.js +80 -0
- package/dist/{pw-ai-DweqbnMJ.js → pw-ai-C-Sy12jT.js} +1 -1
- package/dist/{pw-ai-DsYmOxCp.js → pw-ai-pJMhS79V.js} +1 -1
- package/dist/{run-main-CgFUs81l.js → run-main-JI9-1g4u.js} +2 -2
- package/dist/{slash-dispatch.runtime-D28-UnsO.js → slash-dispatch.runtime-DLP2IeNv.js} +6 -6
- package/dist/{slash-dispatch.runtime-DzpJjr3K.js → slash-dispatch.runtime-Vp6IDoCc.js} +6 -6
- package/dist/{subagent-registry-runtime-a7xfwPB8.js → subagent-registry-runtime-BlAI3eqU.js} +6 -6
- package/dist/{subagent-registry-runtime-Bt-LYyrB.js → subagent-registry-runtime-COKZwsHd.js} +6 -6
- package/dist/{web-CREcqhe9.js → web-BEuMJbx-.js} +6 -6
- package/dist/{web-IBqHOVI2.js → web-BvId86u4.js} +6 -6
- package/extensions/acpx/package.json +1 -1
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/ci-fix-loop/package.json +1 -1
- package/extensions/continuous-learning/package.json +1 -1
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/diagnostics-otel/package.json +1 -1
- package/extensions/diffs/package.json +1 -1
- package/extensions/discord/package.json +1 -1
- package/extensions/feishu/package.json +1 -1
- package/extensions/flow/package.json +1 -1
- package/extensions/google-antigravity-auth/package.json +1 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/googlechat/package.json +1 -1
- package/extensions/imessage/package.json +1 -1
- package/extensions/irc/package.json +1 -1
- package/extensions/line/package.json +1 -1
- package/extensions/llm-task/package.json +1 -1
- package/extensions/lobster/package.json +1 -1
- package/extensions/matrix/CHANGELOG.md +10 -0
- package/extensions/matrix/package.json +1 -1
- package/extensions/mattermost/package.json +1 -1
- package/extensions/memory-core/package.json +1 -1
- package/extensions/memory-lancedb/package.json +1 -1
- package/extensions/minimax-portal-auth/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +10 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +10 -0
- package/extensions/nostr/package.json +1 -1
- package/extensions/open-prose/package.json +1 -1
- package/extensions/self-improvement/package.json +1 -1
- package/extensions/signal/package.json +1 -1
- package/extensions/slack/package.json +1 -1
- package/extensions/synology-chat/package.json +1 -1
- package/extensions/telegram/package.json +1 -1
- package/extensions/tlon/package.json +1 -1
- package/extensions/twitch/CHANGELOG.md +10 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/voice-call/CHANGELOG.md +10 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/whatsapp/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +10 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +10 -0
- package/extensions/zalouser/package.json +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { c as resolveAgentWorkspaceDir } from "./run-with-concurrency-CFRxflYW.js";
|
|
2
|
+
import { c as resolveStateDir } from "./paths-MKyEVmEb.js";
|
|
3
|
+
import { X as resolvePreferredOpenClawTmpDir } from "./logger-2A0UE34q.js";
|
|
4
|
+
import { c as detectMime, l as extensionForMime } from "./image-ops-BpYDXC6N.js";
|
|
5
|
+
import { n as withStrictGuardedFetchMode, t as fetchWithSsrFGuard } from "./fetch-guard-n0LVdzZL.js";
|
|
6
|
+
import path from "node:path";
|
|
7
|
+
|
|
8
|
+
//#region src/media/read-response-with-limit.ts
|
|
9
|
+
async function readResponseWithLimit(res, maxBytes, opts) {
|
|
10
|
+
const onOverflow = opts?.onOverflow ?? ((params) => /* @__PURE__ */ new Error(`Content too large: ${params.size} bytes (limit: ${params.maxBytes} bytes)`));
|
|
11
|
+
const body = res.body;
|
|
12
|
+
if (!body || typeof body.getReader !== "function") {
|
|
13
|
+
const fallback = Buffer.from(await res.arrayBuffer());
|
|
14
|
+
if (fallback.length > maxBytes) throw onOverflow({
|
|
15
|
+
size: fallback.length,
|
|
16
|
+
maxBytes,
|
|
17
|
+
res
|
|
18
|
+
});
|
|
19
|
+
return fallback;
|
|
20
|
+
}
|
|
21
|
+
const reader = body.getReader();
|
|
22
|
+
const chunks = [];
|
|
23
|
+
let total = 0;
|
|
24
|
+
try {
|
|
25
|
+
while (true) {
|
|
26
|
+
const { done, value } = await reader.read();
|
|
27
|
+
if (done) break;
|
|
28
|
+
if (value?.length) {
|
|
29
|
+
total += value.length;
|
|
30
|
+
if (total > maxBytes) {
|
|
31
|
+
try {
|
|
32
|
+
await reader.cancel();
|
|
33
|
+
} catch {}
|
|
34
|
+
throw onOverflow({
|
|
35
|
+
size: total,
|
|
36
|
+
maxBytes,
|
|
37
|
+
res
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
chunks.push(value);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
} finally {
|
|
44
|
+
try {
|
|
45
|
+
reader.releaseLock();
|
|
46
|
+
} catch {}
|
|
47
|
+
}
|
|
48
|
+
return Buffer.concat(chunks.map((chunk) => Buffer.from(chunk)), total);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
//#endregion
|
|
52
|
+
//#region src/media/fetch.ts
|
|
53
|
+
var MediaFetchError = class extends Error {
|
|
54
|
+
constructor(code, message) {
|
|
55
|
+
super(message);
|
|
56
|
+
this.code = code;
|
|
57
|
+
this.name = "MediaFetchError";
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
function stripQuotes(value) {
|
|
61
|
+
return value.replace(/^["']|["']$/g, "");
|
|
62
|
+
}
|
|
63
|
+
function parseContentDispositionFileName(header) {
|
|
64
|
+
if (!header) return;
|
|
65
|
+
const starMatch = /filename\*\s*=\s*([^;]+)/i.exec(header);
|
|
66
|
+
if (starMatch?.[1]) {
|
|
67
|
+
const cleaned = stripQuotes(starMatch[1].trim());
|
|
68
|
+
const encoded = cleaned.split("''").slice(1).join("''") || cleaned;
|
|
69
|
+
try {
|
|
70
|
+
return path.basename(decodeURIComponent(encoded));
|
|
71
|
+
} catch {
|
|
72
|
+
return path.basename(encoded);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const match = /filename\s*=\s*([^;]+)/i.exec(header);
|
|
76
|
+
if (match?.[1]) return path.basename(stripQuotes(match[1].trim()));
|
|
77
|
+
}
|
|
78
|
+
async function readErrorBodySnippet(res, maxChars = 200) {
|
|
79
|
+
try {
|
|
80
|
+
const text = await res.text();
|
|
81
|
+
if (!text) return;
|
|
82
|
+
const collapsed = text.replace(/\s+/g, " ").trim();
|
|
83
|
+
if (!collapsed) return;
|
|
84
|
+
if (collapsed.length <= maxChars) return collapsed;
|
|
85
|
+
return `${collapsed.slice(0, maxChars)}…`;
|
|
86
|
+
} catch {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async function fetchRemoteMedia(options) {
|
|
91
|
+
const { url, fetchImpl, requestInit, filePathHint, maxBytes, maxRedirects, ssrfPolicy, lookupFn } = options;
|
|
92
|
+
let res;
|
|
93
|
+
let finalUrl = url;
|
|
94
|
+
let release = null;
|
|
95
|
+
try {
|
|
96
|
+
const result = await fetchWithSsrFGuard(withStrictGuardedFetchMode({
|
|
97
|
+
url,
|
|
98
|
+
fetchImpl,
|
|
99
|
+
init: requestInit,
|
|
100
|
+
maxRedirects,
|
|
101
|
+
policy: ssrfPolicy,
|
|
102
|
+
lookupFn
|
|
103
|
+
}));
|
|
104
|
+
res = result.response;
|
|
105
|
+
finalUrl = result.finalUrl;
|
|
106
|
+
release = result.release;
|
|
107
|
+
} catch (err) {
|
|
108
|
+
throw new MediaFetchError("fetch_failed", `Failed to fetch media from ${url}: ${String(err)}`);
|
|
109
|
+
}
|
|
110
|
+
try {
|
|
111
|
+
if (!res.ok) {
|
|
112
|
+
const statusText = res.statusText ? ` ${res.statusText}` : "";
|
|
113
|
+
const redirected = finalUrl !== url ? ` (redirected to ${finalUrl})` : "";
|
|
114
|
+
let detail = `HTTP ${res.status}${statusText}`;
|
|
115
|
+
if (!res.body) detail = `HTTP ${res.status}${statusText}; empty response body`;
|
|
116
|
+
else {
|
|
117
|
+
const snippet = await readErrorBodySnippet(res);
|
|
118
|
+
if (snippet) detail += `; body: ${snippet}`;
|
|
119
|
+
}
|
|
120
|
+
throw new MediaFetchError("http_error", `Failed to fetch media from ${url}${redirected}: ${detail}`);
|
|
121
|
+
}
|
|
122
|
+
const contentLength = res.headers.get("content-length");
|
|
123
|
+
if (maxBytes && contentLength) {
|
|
124
|
+
const length = Number(contentLength);
|
|
125
|
+
if (Number.isFinite(length) && length > maxBytes) throw new MediaFetchError("max_bytes", `Failed to fetch media from ${url}: content length ${length} exceeds maxBytes ${maxBytes}`);
|
|
126
|
+
}
|
|
127
|
+
const buffer = maxBytes ? await readResponseWithLimit(res, maxBytes, { onOverflow: ({ maxBytes, res }) => new MediaFetchError("max_bytes", `Failed to fetch media from ${res.url || url}: payload exceeds maxBytes ${maxBytes}`) }) : Buffer.from(await res.arrayBuffer());
|
|
128
|
+
let fileNameFromUrl;
|
|
129
|
+
try {
|
|
130
|
+
const parsed = new URL(finalUrl);
|
|
131
|
+
fileNameFromUrl = path.basename(parsed.pathname) || void 0;
|
|
132
|
+
} catch {}
|
|
133
|
+
const headerFileName = parseContentDispositionFileName(res.headers.get("content-disposition"));
|
|
134
|
+
let fileName = headerFileName || fileNameFromUrl || (filePathHint ? path.basename(filePathHint) : void 0);
|
|
135
|
+
const filePathForMime = headerFileName && path.extname(headerFileName) ? headerFileName : filePathHint ?? finalUrl;
|
|
136
|
+
const contentType = await detectMime({
|
|
137
|
+
buffer,
|
|
138
|
+
headerMime: res.headers.get("content-type"),
|
|
139
|
+
filePath: filePathForMime
|
|
140
|
+
});
|
|
141
|
+
if (fileName && !path.extname(fileName) && contentType) {
|
|
142
|
+
const ext = extensionForMime(contentType);
|
|
143
|
+
if (ext) fileName = `${fileName}${ext}`;
|
|
144
|
+
}
|
|
145
|
+
return {
|
|
146
|
+
buffer,
|
|
147
|
+
contentType: contentType ?? void 0,
|
|
148
|
+
fileName
|
|
149
|
+
};
|
|
150
|
+
} finally {
|
|
151
|
+
if (release) await release();
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
//#endregion
|
|
156
|
+
//#region src/media/local-roots.ts
|
|
157
|
+
let cachedPreferredTmpDir;
|
|
158
|
+
function resolveCachedPreferredTmpDir() {
|
|
159
|
+
if (!cachedPreferredTmpDir) cachedPreferredTmpDir = resolvePreferredOpenClawTmpDir();
|
|
160
|
+
return cachedPreferredTmpDir;
|
|
161
|
+
}
|
|
162
|
+
function buildMediaLocalRoots(stateDir, options = {}) {
|
|
163
|
+
const resolvedStateDir = path.resolve(stateDir);
|
|
164
|
+
return [
|
|
165
|
+
options.preferredTmpDir ?? resolveCachedPreferredTmpDir(),
|
|
166
|
+
path.join(resolvedStateDir, "media"),
|
|
167
|
+
path.join(resolvedStateDir, "agents"),
|
|
168
|
+
path.join(resolvedStateDir, "workspace"),
|
|
169
|
+
path.join(resolvedStateDir, "sandboxes")
|
|
170
|
+
];
|
|
171
|
+
}
|
|
172
|
+
function getDefaultMediaLocalRoots() {
|
|
173
|
+
return buildMediaLocalRoots(resolveStateDir());
|
|
174
|
+
}
|
|
175
|
+
function getAgentScopedMediaLocalRoots(cfg, agentId) {
|
|
176
|
+
const roots = buildMediaLocalRoots(resolveStateDir());
|
|
177
|
+
if (!agentId?.trim()) return roots;
|
|
178
|
+
const workspaceDir = resolveAgentWorkspaceDir(cfg, agentId);
|
|
179
|
+
if (!workspaceDir) return roots;
|
|
180
|
+
const normalizedWorkspaceDir = path.resolve(workspaceDir);
|
|
181
|
+
if (!roots.includes(normalizedWorkspaceDir)) roots.push(normalizedWorkspaceDir);
|
|
182
|
+
return roots;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
//#endregion
|
|
186
|
+
export { readResponseWithLimit as a, fetchRemoteMedia as i, getDefaultMediaLocalRoots as n, MediaFetchError as r, getAgentScopedMediaLocalRoots as t };
|