@camstack/system 1.2.415 → 1.2.417
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/addon-runner.js +9969 -27
- package/dist/addon-runner.mjs +9930 -9
- package/dist/addon-utils.js +19 -20
- package/dist/addon-utils.mjs +1 -2
- package/dist/auth/auth-audit-log.d.ts +1 -1
- package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
- package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
- package/dist/builtins/alerts/alerts.addon.js +1 -1
- package/dist/builtins/alerts/alerts.addon.mjs +1 -1
- package/dist/builtins/autotrack/index.js +1 -1
- package/dist/builtins/autotrack/index.mjs +1 -1
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +2 -2
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +2 -2
- package/dist/builtins/calendars/calendars.addon.js +1 -1
- package/dist/builtins/calendars/calendars.addon.mjs +1 -1
- package/dist/builtins/camera-grid/index.js +1 -1
- package/dist/builtins/camera-grid/index.mjs +1 -1
- package/dist/builtins/composer/composer.addon.js +2 -2
- package/dist/builtins/composer/composer.addon.mjs +2 -2
- package/dist/builtins/console-logging/index.js +1 -1
- package/dist/builtins/console-logging/index.mjs +1 -1
- package/dist/builtins/core-blocks/core-blocks.addon.js +2 -2
- package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
- package/dist/builtins/device-manager/device-manager.addon.js +2 -2
- package/dist/builtins/device-manager/device-manager.addon.mjs +2 -2
- package/dist/builtins/hub-forwarder/index.js +1 -1
- package/dist/builtins/hub-forwarder/index.mjs +1 -1
- package/dist/builtins/keychain/index.js +3 -3
- package/dist/builtins/keychain/index.mjs +3 -3
- package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
- package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
- package/dist/builtins/local-auth/local-auth.addon.js +12 -9
- package/dist/builtins/local-auth/local-auth.addon.mjs +7 -4
- package/dist/builtins/local-network/hub-mdns-ciao.d.ts +7 -0
- package/dist/builtins/local-network/hub-mdns.d.ts +58 -0
- package/dist/builtins/local-network/local-network.addon.d.ts +11 -0
- package/dist/builtins/local-network/local-network.addon.js +194 -3
- package/dist/builtins/local-network/local-network.addon.mjs +195 -3
- package/dist/builtins/loki-logging/index.js +1 -1
- package/dist/builtins/loki-logging/index.mjs +1 -1
- package/dist/builtins/native-metrics/native-metrics.addon.js +102 -10
- package/dist/builtins/native-metrics/native-metrics.addon.mjs +92 -4
- package/dist/builtins/platform-probe/index.js +1 -1
- package/dist/builtins/platform-probe/index.mjs +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
- package/dist/builtins/snapshot/index.js +1 -1
- package/dist/builtins/snapshot/index.mjs +1 -1
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
- package/dist/builtins/storage-orchestrator/index.mjs +1 -1
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +84 -5
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +80 -5
- package/dist/builtins/system-config/system-config.addon.js +80 -785
- package/dist/builtins/system-config/system-config.addon.mjs +52 -757
- package/dist/builtins/winston-logging/index.js +1 -1
- package/dist/builtins/winston-logging/index.mjs +1 -1
- package/dist/{composition-sources-YlkCjf-1.js → composition-sources-ChAX2Kdo.js} +1 -1
- package/dist/{composition-sources-CXxkMoXq.mjs → composition-sources-CndJVssc.mjs} +1 -1
- package/dist/{constants-BT-fudVK.mjs → constants-BzxwnfDc.mjs} +1 -1
- package/dist/{constants-DChnQrhM.js → constants-VXvZkGgw.js} +1 -1
- package/dist/{event-loop-stall-monitor-LZvGqiHI.js → custom-action-registry-Bb28ibZV.js} +63 -1
- package/dist/{event-loop-stall-monitor-BEfMVUxz.mjs → custom-action-registry-DHv0kYcT.mjs} +58 -2
- package/dist/{dist-CvarXqQt.js → dist-BMOD9OyH.js} +32 -111
- package/dist/{dist-dEsHYY8m.mjs → dist-H_RapIeM.mjs} +21 -100
- package/dist/index.js +22786 -10067
- package/dist/index.mjs +22602 -9883
- package/dist/{jwt-signing-key-CfiteETM.js → jwt-signing-key-BiKHENST.js} +1 -1
- package/dist/{jwt-signing-key-SFIxaH2x.mjs → jwt-signing-key-xQxqpwMC.mjs} +1 -1
- package/dist/kernel/moleculer/broker-factory.d.ts +2 -4
- package/dist/kernel/transport/local-child-registry.d.ts +1 -1
- package/dist/lib-B_R6sPC3.mjs +7106 -0
- package/dist/lib-DOJ5yyWA.js +7110 -0
- package/dist/logging/log-redactor.d.ts +1 -1
- package/dist/{ms-DlIWNkkk.mjs → ms-CgH2OFlD.mjs} +2 -42
- package/dist/{ms-t68_FaqE.js → ms-LB3giGoU.js} +1 -48
- package/dist/{resource-monitor-B2WZ8_q9.mjs → resource-monitor-Di9daRwI.mjs} +1 -1
- package/dist/{resource-monitor-BgWGRxN5.js → resource-monitor-mio9dSCT.js} +5 -5
- package/dist/{restore-archive-CAw_3iNq.js → restore-archive-BobsETEp.js} +1 -1
- package/dist/{restore-archive-Bww1Fl04.mjs → restore-archive-CCAQicV-.mjs} +1 -1
- package/dist/{retired-settings-keys-YLflwTPH.js → retired-settings-keys-BMq2u4Wv.js} +1 -1
- package/dist/{retired-settings-keys-ChQ3qH-V.mjs → retired-settings-keys-CwL4zHLg.mjs} +1 -1
- package/dist/safe-buffer-B1OjL1I9.mjs +42 -0
- package/dist/safe-buffer-D3aoa-7X.js +46 -0
- package/dist/src-CnAqG6EF.js +714 -0
- package/dist/src-hG4grMU4.mjs +709 -0
- package/dist/{tls-BWpwU-d5.js → tls-C0TRPfqc.js} +1 -1
- package/dist/{tls-C2NT-Orr.mjs → tls-D-2dPY-5.mjs} +1 -1
- package/dist/{x509.es-Xf3K_brW.mjs → x509.es-CAjSsrkk.mjs} +643 -2
- package/dist/{x509.es-BhTzcFhZ.js → x509.es-Dzl0BbmG.js} +653 -0
- package/package.json +3 -2
- package/dist/child-cap-dispatch-DFBrdGH2.js +0 -13986
- package/dist/child-cap-dispatch-SF8oiwgo.mjs +0 -12916
- package/dist/custom-action-registry-B4Cf4O_X.mjs +0 -57
- package/dist/custom-action-registry-acBY3mHA.js +0 -62
- package/dist/hub-cap-forward-CDiN1p98.mjs +0 -78
- package/dist/hub-cap-forward-W8oEm4ME.js +0 -101
- package/dist/proc-stat-CbC55Kqi.mjs +0 -92
- package/dist/proc-stat-DL-WUOhl.js +0 -127
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
6
|
+
const require_dist = require("../../dist-BMOD9OyH.js");
|
|
7
7
|
const require_formatter = require("../../formatter-DqAKDlvN.js");
|
|
8
8
|
let node_path = require("node:path");
|
|
9
9
|
node_path = require_chunk.__toESM(node_path);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { en as logDestinationCapability, fr as BaseAddon } from "../../dist-H_RapIeM.mjs";
|
|
2
2
|
import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
|
|
3
3
|
import * as path$1 from "node:path";
|
|
4
4
|
import path from "node:path";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { dr as errMsg, ir as compositionSourceKey } from "./dist-H_RapIeM.mjs";
|
|
2
2
|
//#region src/builtins/core-blocks/composition-sources.ts
|
|
3
3
|
/**
|
|
4
4
|
* Describe what a composition reads and writes for SAVE-time validation
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const require_chunk = require("./chunk-Cek0wNdY.js");
|
|
2
|
-
const require_dist = require("./dist-
|
|
2
|
+
const require_dist = require("./dist-BMOD9OyH.js");
|
|
3
3
|
let node_crypto = require("node:crypto");
|
|
4
4
|
let node_path = require("node:path");
|
|
5
5
|
node_path = require_chunk.__toESM(node_path);
|
|
@@ -9,6 +9,7 @@ let node_util = require("node:util");
|
|
|
9
9
|
let node_http = require("node:http");
|
|
10
10
|
let node_zlib = require("node:zlib");
|
|
11
11
|
let node_perf_hooks = require("node:perf_hooks");
|
|
12
|
+
let _camstack_types_addon = require("@camstack/types/addon");
|
|
12
13
|
//#region src/download/hosted-model-revisions.ts
|
|
13
14
|
/**
|
|
14
15
|
* GENERATED by `scripts/check-hosted-model-revisions.ts --write` — DO NOT EDIT.
|
|
@@ -1379,6 +1380,67 @@ function startEventLoopStallMonitor(logger, reportThresholdMs = STALL_REPORT_MS)
|
|
|
1379
1380
|
};
|
|
1380
1381
|
}
|
|
1381
1382
|
//#endregion
|
|
1383
|
+
//#region src/kernel/custom-action-registry.ts
|
|
1384
|
+
/**
|
|
1385
|
+
* CustomActionRegistry — per-process registry of addon custom actions.
|
|
1386
|
+
*
|
|
1387
|
+
* Populated at boot from each addon's `AddonInitResult.customActions` +
|
|
1388
|
+
* `handleCustomAction` handler. Rejects actions declared with scope other
|
|
1389
|
+
* than 'system' (today only 'system' is runtime-supported; the descriptor
|
|
1390
|
+
* allows future scopes for forward compat).
|
|
1391
|
+
*/
|
|
1392
|
+
var CustomActionRegistry = class {
|
|
1393
|
+
byAddon = /* @__PURE__ */ new Map();
|
|
1394
|
+
registerAddon(addonId, catalog, handler) {
|
|
1395
|
+
const actions = /* @__PURE__ */ new Map();
|
|
1396
|
+
for (const [name, spec] of Object.entries(catalog)) {
|
|
1397
|
+
const scope = spec.scope ?? { kind: "system" };
|
|
1398
|
+
if (scope.kind !== "system") throw new Error(`custom action '${addonId}.${name}' declared scope '${scope.kind}' — not yet implemented`);
|
|
1399
|
+
actions.set(name, {
|
|
1400
|
+
spec,
|
|
1401
|
+
handler: (input, caller) => handler(name, input, caller)
|
|
1402
|
+
});
|
|
1403
|
+
}
|
|
1404
|
+
this.byAddon.set(addonId, actions);
|
|
1405
|
+
}
|
|
1406
|
+
unregisterAddon(addonId) {
|
|
1407
|
+
this.byAddon.delete(addonId);
|
|
1408
|
+
}
|
|
1409
|
+
resolve(addonId, action) {
|
|
1410
|
+
return this.byAddon.get(addonId)?.get(action) ?? null;
|
|
1411
|
+
}
|
|
1412
|
+
listActions(addonId) {
|
|
1413
|
+
return [...this.byAddon.get(addonId)?.keys() ?? []];
|
|
1414
|
+
}
|
|
1415
|
+
listAddons() {
|
|
1416
|
+
return [...this.byAddon.keys()];
|
|
1417
|
+
}
|
|
1418
|
+
/**
|
|
1419
|
+
* Every registered catalog with its schemas stripped, keyed by addon id —
|
|
1420
|
+
* what a runner puts in its register frame so the hub learns the catalogs
|
|
1421
|
+
* from the process that owns them (D444). `hostedAddonIds` are the addons
|
|
1422
|
+
* this runner hosts: each is present in the result, with an EMPTY catalog
|
|
1423
|
+
* when it registered none, so the parent can say "declares no actions" per
|
|
1424
|
+
* addon instead of guessing from an absent key.
|
|
1425
|
+
*/
|
|
1426
|
+
describeAll(hostedAddonIds) {
|
|
1427
|
+
const out = {};
|
|
1428
|
+
for (const addonId of hostedAddonIds) out[addonId] = {};
|
|
1429
|
+
for (const [addonId, actions] of this.byAddon) {
|
|
1430
|
+
const catalog = {};
|
|
1431
|
+
for (const [name, entry] of actions) catalog[name] = entry.spec;
|
|
1432
|
+
out[addonId] = (0, _camstack_types_addon.describeCustomActions)(catalog);
|
|
1433
|
+
}
|
|
1434
|
+
return out;
|
|
1435
|
+
}
|
|
1436
|
+
};
|
|
1437
|
+
//#endregion
|
|
1438
|
+
Object.defineProperty(exports, "CustomActionRegistry", {
|
|
1439
|
+
enumerable: true,
|
|
1440
|
+
get: function() {
|
|
1441
|
+
return CustomActionRegistry;
|
|
1442
|
+
}
|
|
1443
|
+
});
|
|
1382
1444
|
Object.defineProperty(exports, "ModelDownloadHttpError", {
|
|
1383
1445
|
enumerable: true,
|
|
1384
1446
|
get: function() {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { P as MODEL_FORMATS, Rt as hfModelUrl, T as HF_REPO } from "./dist-H_RapIeM.mjs";
|
|
2
2
|
import { createHash } from "node:crypto";
|
|
3
3
|
import * as path$1 from "node:path";
|
|
4
4
|
import path from "node:path";
|
|
@@ -8,6 +8,7 @@ import { promisify } from "node:util";
|
|
|
8
8
|
import { createServer } from "node:http";
|
|
9
9
|
import { brotliCompress, constants as constants$1, gzip } from "node:zlib";
|
|
10
10
|
import { PerformanceObserver } from "node:perf_hooks";
|
|
11
|
+
import { describeCustomActions } from "@camstack/types/addon";
|
|
11
12
|
//#region src/download/hosted-model-revisions.ts
|
|
12
13
|
/**
|
|
13
14
|
* GENERATED by `scripts/check-hosted-model-revisions.ts --write` — DO NOT EDIT.
|
|
@@ -1378,4 +1379,59 @@ function startEventLoopStallMonitor(logger, reportThresholdMs = STALL_REPORT_MS)
|
|
|
1378
1379
|
};
|
|
1379
1380
|
}
|
|
1380
1381
|
//#endregion
|
|
1381
|
-
|
|
1382
|
+
//#region src/kernel/custom-action-registry.ts
|
|
1383
|
+
/**
|
|
1384
|
+
* CustomActionRegistry — per-process registry of addon custom actions.
|
|
1385
|
+
*
|
|
1386
|
+
* Populated at boot from each addon's `AddonInitResult.customActions` +
|
|
1387
|
+
* `handleCustomAction` handler. Rejects actions declared with scope other
|
|
1388
|
+
* than 'system' (today only 'system' is runtime-supported; the descriptor
|
|
1389
|
+
* allows future scopes for forward compat).
|
|
1390
|
+
*/
|
|
1391
|
+
var CustomActionRegistry = class {
|
|
1392
|
+
byAddon = /* @__PURE__ */ new Map();
|
|
1393
|
+
registerAddon(addonId, catalog, handler) {
|
|
1394
|
+
const actions = /* @__PURE__ */ new Map();
|
|
1395
|
+
for (const [name, spec] of Object.entries(catalog)) {
|
|
1396
|
+
const scope = spec.scope ?? { kind: "system" };
|
|
1397
|
+
if (scope.kind !== "system") throw new Error(`custom action '${addonId}.${name}' declared scope '${scope.kind}' — not yet implemented`);
|
|
1398
|
+
actions.set(name, {
|
|
1399
|
+
spec,
|
|
1400
|
+
handler: (input, caller) => handler(name, input, caller)
|
|
1401
|
+
});
|
|
1402
|
+
}
|
|
1403
|
+
this.byAddon.set(addonId, actions);
|
|
1404
|
+
}
|
|
1405
|
+
unregisterAddon(addonId) {
|
|
1406
|
+
this.byAddon.delete(addonId);
|
|
1407
|
+
}
|
|
1408
|
+
resolve(addonId, action) {
|
|
1409
|
+
return this.byAddon.get(addonId)?.get(action) ?? null;
|
|
1410
|
+
}
|
|
1411
|
+
listActions(addonId) {
|
|
1412
|
+
return [...this.byAddon.get(addonId)?.keys() ?? []];
|
|
1413
|
+
}
|
|
1414
|
+
listAddons() {
|
|
1415
|
+
return [...this.byAddon.keys()];
|
|
1416
|
+
}
|
|
1417
|
+
/**
|
|
1418
|
+
* Every registered catalog with its schemas stripped, keyed by addon id —
|
|
1419
|
+
* what a runner puts in its register frame so the hub learns the catalogs
|
|
1420
|
+
* from the process that owns them (D444). `hostedAddonIds` are the addons
|
|
1421
|
+
* this runner hosts: each is present in the result, with an EMPTY catalog
|
|
1422
|
+
* when it registered none, so the parent can say "declares no actions" per
|
|
1423
|
+
* addon instead of guessing from an absent key.
|
|
1424
|
+
*/
|
|
1425
|
+
describeAll(hostedAddonIds) {
|
|
1426
|
+
const out = {};
|
|
1427
|
+
for (const addonId of hostedAddonIds) out[addonId] = {};
|
|
1428
|
+
for (const [addonId, actions] of this.byAddon) {
|
|
1429
|
+
const catalog = {};
|
|
1430
|
+
for (const [name, entry] of actions) catalog[name] = entry.spec;
|
|
1431
|
+
out[addonId] = describeCustomActions(catalog);
|
|
1432
|
+
}
|
|
1433
|
+
return out;
|
|
1434
|
+
}
|
|
1435
|
+
};
|
|
1436
|
+
//#endregion
|
|
1437
|
+
export { isModelDownloaded as C, isModelDownloadHttpError as S, revisionWeightUrl as T, downloadFile as _, startEventLoopStallMonitor as a, fetchJson as b, createAuthenticatedFileServer as c, resolveFilePath as d, ModelDownloadService as f, deleteModelFromDisk as g, collectModelFiles as h, attributeStall as i, parseRangeHeader as l, adoptModelRevisions as m, STALL_REPORT_MS as n, createFileDataPlaneHandler as o, ModelDownloadHttpError as p, STALL_TICK_MS as r, contentTypeFor as s, CustomActionRegistry as t, parseTokenizedUrl as u, downloadModel as v, resolveFormatRevision as w, getModelFilePath as x, ensureModel as y };
|
|
@@ -718,7 +718,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
718
718
|
return EventCategory;
|
|
719
719
|
}({});
|
|
720
720
|
//#endregion
|
|
721
|
-
//#region ../types/dist/sleep-
|
|
721
|
+
//#region ../types/dist/sleep-BjDbnx6-.mjs
|
|
722
722
|
/**
|
|
723
723
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
724
724
|
* window to float samples (D455).
|
|
@@ -3156,31 +3156,6 @@ var PeerBytesTicketSchema = zod.z.object({
|
|
|
3156
3156
|
*/
|
|
3157
3157
|
declaredBytes: zod.z.number().int().nonnegative().nullable()
|
|
3158
3158
|
});
|
|
3159
|
-
/**
|
|
3160
|
-
* One store per PROCESS, even when two copies of this module are loaded (an
|
|
3161
|
-
* addon bundle next to the framework's): keyed on a registered symbol.
|
|
3162
|
-
*/
|
|
3163
|
-
var STORE_KEY = Symbol.for("camstack.keychain.known-secrets");
|
|
3164
|
-
function store() {
|
|
3165
|
-
const existing = Reflect.get(globalThis, STORE_KEY);
|
|
3166
|
-
if (existing !== void 0 && existing !== null) return existing;
|
|
3167
|
-
const created = {
|
|
3168
|
-
values: /* @__PURE__ */ new Map(),
|
|
3169
|
-
compiled: null
|
|
3170
|
-
};
|
|
3171
|
-
Reflect.set(globalThis, STORE_KEY, created);
|
|
3172
|
-
return created;
|
|
3173
|
-
}
|
|
3174
|
-
/** Replace every registered value inside `text` with its label. */
|
|
3175
|
-
function scrubKnownSecrets(text) {
|
|
3176
|
-
const s = store();
|
|
3177
|
-
const re = s.compiled;
|
|
3178
|
-
if (re === null || text.length < 8) return text;
|
|
3179
|
-
re.lastIndex = 0;
|
|
3180
|
-
if (!re.test(text)) return text;
|
|
3181
|
-
re.lastIndex = 0;
|
|
3182
|
-
return text.replace(re, (match) => s.values.get(match) ?? "‹secret›");
|
|
3183
|
-
}
|
|
3184
3159
|
/** Shared Zod schemas used across streaming capabilities. */
|
|
3185
3160
|
var CamProfileSchema = zod.z.enum([
|
|
3186
3161
|
"high",
|
|
@@ -19385,6 +19360,20 @@ function resolveHubAddressRoles(appPalette, hubPalette, flags) {
|
|
|
19385
19360
|
};
|
|
19386
19361
|
}
|
|
19387
19362
|
/**
|
|
19363
|
+
* How a client finds a hub on the LAN (D838): the hub publishes ONE mDNS
|
|
19364
|
+
* service for its HTTPS endpoint. `_camstack._tcp` carries the hub's `internal`
|
|
19365
|
+
* address in `url`, and nothing secret — finding a hub grants nothing, every
|
|
19366
|
+
* client still signs in. The mesh channel stays retired (D826).
|
|
19367
|
+
*/
|
|
19368
|
+
var HUB_MDNS_SERVICE_TYPE = "camstack";
|
|
19369
|
+
/** The TXT keys of the advertisement. Every value is public. */
|
|
19370
|
+
var HUB_MDNS_TXT_KEYS = {
|
|
19371
|
+
nodeId: "nodeId",
|
|
19372
|
+
version: "version",
|
|
19373
|
+
role: "role",
|
|
19374
|
+
url: "url"
|
|
19375
|
+
};
|
|
19376
|
+
/**
|
|
19388
19377
|
* Transport bounds for AI capability methods.
|
|
19389
19378
|
*
|
|
19390
19379
|
* Its own module because `llm.cap.ts` and `llm-runtime.cap.ts` already import
|
|
@@ -64286,6 +64275,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
64286
64275
|
[...RULE_TEXT],
|
|
64287
64276
|
[...RULE_TEXT],
|
|
64288
64277
|
[...RULE_TEXT],
|
|
64278
|
+
[...RULE_TEXT],
|
|
64279
|
+
[...RULE_TEXT],
|
|
64280
|
+
[...RULE_TEXT],
|
|
64281
|
+
[...RULE_TEXT],
|
|
64282
|
+
[...RULE_TEXT],
|
|
64289
64283
|
([...RULE_TEXT], [...UPDATES]),
|
|
64290
64284
|
([...RULE_TEXT], [...PACKAGE_UPDATES]),
|
|
64291
64285
|
([...RULE_TEXT], [...PACKAGE_UPDATES]),
|
|
@@ -64870,79 +64864,6 @@ function bareAddonId(id) {
|
|
|
64870
64864
|
function hfModelUrl(repo, path) {
|
|
64871
64865
|
return `https://huggingface.co/${repo}/resolve/main/${path}`;
|
|
64872
64866
|
}
|
|
64873
|
-
/**
|
|
64874
|
-
* Names that, when used as URL query parameters, almost certainly carry
|
|
64875
|
-
* a secret. Matching is case-insensitive and anchored to the full param
|
|
64876
|
-
* name to avoid false positives like `user_id` (an entity reference, not
|
|
64877
|
-
* a credential) or `topic=password-reset` (a value happens to contain
|
|
64878
|
-
* the substring "password" but the param name is unrelated).
|
|
64879
|
-
*
|
|
64880
|
-
* Add new patterns here as we encounter cameras/APIs that leak through
|
|
64881
|
-
* the existing list.
|
|
64882
|
-
*/
|
|
64883
|
-
var CREDENTIAL_PARAM_PATTERNS = [
|
|
64884
|
-
/^user$/i,
|
|
64885
|
-
/^usr$/i,
|
|
64886
|
-
/^username$/i,
|
|
64887
|
-
/^password$/i,
|
|
64888
|
-
/^pwd$/i,
|
|
64889
|
-
/^pass$/i,
|
|
64890
|
-
/^passwd$/i,
|
|
64891
|
-
/^secret$/i,
|
|
64892
|
-
/^token$/i,
|
|
64893
|
-
/^auth$/i,
|
|
64894
|
-
/^auth[_-]?token$/i,
|
|
64895
|
-
/^bearer$/i,
|
|
64896
|
-
/^api[_-]?key$/i,
|
|
64897
|
-
/^access[_-]?token$/i,
|
|
64898
|
-
/^refresh[_-]?token$/i,
|
|
64899
|
-
/^bridge$/i,
|
|
64900
|
-
/^code$/i,
|
|
64901
|
-
/^state$/i,
|
|
64902
|
-
/^challenge$/i,
|
|
64903
|
-
/^link$/i
|
|
64904
|
-
];
|
|
64905
|
-
function isCredentialParam(name) {
|
|
64906
|
-
return CREDENTIAL_PARAM_PATTERNS.some((re) => re.test(name));
|
|
64907
|
-
}
|
|
64908
|
-
/**
|
|
64909
|
-
* Redact secrets we may surface in logs or telemetry:
|
|
64910
|
-
* 1. `userinfo` (`user:password@host`) — the classic RTSP shape.
|
|
64911
|
-
* 2. Query-string credential params (`?user=...&password=...`) — the
|
|
64912
|
-
* Reolink RTMP shape and several HTTP-pushed-stream APIs.
|
|
64913
|
-
*
|
|
64914
|
-
* Returns the original string verbatim when the input is not a parseable
|
|
64915
|
-
* URL — a log helper must never throw. Param values are replaced with
|
|
64916
|
-
* `***` so an operator reading logs still sees WHICH credential was
|
|
64917
|
-
* present (useful for debugging "wrong password" issues) without
|
|
64918
|
-
* exposing the value.
|
|
64919
|
-
*
|
|
64920
|
-
* The credential-name match is case-insensitive but anchored to the
|
|
64921
|
-
* whole param name; values like `user_id=42` or `topic=password-reset`
|
|
64922
|
-
* are NOT masked (those are entity references, not credentials).
|
|
64923
|
-
*/
|
|
64924
|
-
function maskUrlCredentials(rawUrl) {
|
|
64925
|
-
if (rawUrl.startsWith("/") && !rawUrl.startsWith("//")) {
|
|
64926
|
-
const masked = maskUrlCredentials(`http://relative.invalid${rawUrl}`);
|
|
64927
|
-
return masked.startsWith("http://relative.invalid") ? masked.slice(23) : rawUrl;
|
|
64928
|
-
}
|
|
64929
|
-
try {
|
|
64930
|
-
const u = new URL(rawUrl);
|
|
64931
|
-
let touched = false;
|
|
64932
|
-
if (u.username || u.password) {
|
|
64933
|
-
u.username = "";
|
|
64934
|
-
u.password = "";
|
|
64935
|
-
touched = true;
|
|
64936
|
-
}
|
|
64937
|
-
for (const key of Array.from(u.searchParams.keys())) if (isCredentialParam(key)) {
|
|
64938
|
-
u.searchParams.set(key, "***");
|
|
64939
|
-
touched = true;
|
|
64940
|
-
}
|
|
64941
|
-
return touched ? u.toString() : rawUrl;
|
|
64942
|
-
} catch {
|
|
64943
|
-
return rawUrl;
|
|
64944
|
-
}
|
|
64945
|
-
}
|
|
64946
64867
|
var MB = 1024 * 1024;
|
|
64947
64868
|
1024 * MB, 3072 * MB;
|
|
64948
64869
|
/**
|
|
@@ -65394,6 +65315,18 @@ Object.defineProperty(exports, "HF_REPO", {
|
|
|
65394
65315
|
return HF_REPO;
|
|
65395
65316
|
}
|
|
65396
65317
|
});
|
|
65318
|
+
Object.defineProperty(exports, "HUB_MDNS_SERVICE_TYPE", {
|
|
65319
|
+
enumerable: true,
|
|
65320
|
+
get: function() {
|
|
65321
|
+
return HUB_MDNS_SERVICE_TYPE;
|
|
65322
|
+
}
|
|
65323
|
+
});
|
|
65324
|
+
Object.defineProperty(exports, "HUB_MDNS_TXT_KEYS", {
|
|
65325
|
+
enumerable: true,
|
|
65326
|
+
get: function() {
|
|
65327
|
+
return HUB_MDNS_TXT_KEYS;
|
|
65328
|
+
}
|
|
65329
|
+
});
|
|
65397
65330
|
Object.defineProperty(exports, "KEYCHAIN_RESET_TRIGGER_ACTOR", {
|
|
65398
65331
|
enumerable: true,
|
|
65399
65332
|
get: function() {
|
|
@@ -66114,12 +66047,6 @@ Object.defineProperty(exports, "makeSecretMarker", {
|
|
|
66114
66047
|
return makeSecretMarker;
|
|
66115
66048
|
}
|
|
66116
66049
|
});
|
|
66117
|
-
Object.defineProperty(exports, "maskUrlCredentials", {
|
|
66118
|
-
enumerable: true,
|
|
66119
|
-
get: function() {
|
|
66120
|
-
return maskUrlCredentials;
|
|
66121
|
-
}
|
|
66122
|
-
});
|
|
66123
66050
|
Object.defineProperty(exports, "mayReadLocation", {
|
|
66124
66051
|
enumerable: true,
|
|
66125
66052
|
get: function() {
|
|
@@ -66354,12 +66281,6 @@ Object.defineProperty(exports, "scoreRuntimes", {
|
|
|
66354
66281
|
return scoreRuntimes;
|
|
66355
66282
|
}
|
|
66356
66283
|
});
|
|
66357
|
-
Object.defineProperty(exports, "scrubKnownSecrets", {
|
|
66358
|
-
enumerable: true,
|
|
66359
|
-
get: function() {
|
|
66360
|
-
return scrubKnownSecrets;
|
|
66361
|
-
}
|
|
66362
|
-
});
|
|
66363
66284
|
Object.defineProperty(exports, "secretTreeFromPaths", {
|
|
66364
66285
|
enumerable: true,
|
|
66365
66286
|
get: function() {
|
|
@@ -718,7 +718,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
718
718
|
return EventCategory;
|
|
719
719
|
}({});
|
|
720
720
|
//#endregion
|
|
721
|
-
//#region ../types/dist/sleep-
|
|
721
|
+
//#region ../types/dist/sleep-BjDbnx6-.mjs
|
|
722
722
|
/**
|
|
723
723
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
724
724
|
* window to float samples (D455).
|
|
@@ -3156,31 +3156,6 @@ var PeerBytesTicketSchema = z.object({
|
|
|
3156
3156
|
*/
|
|
3157
3157
|
declaredBytes: z.number().int().nonnegative().nullable()
|
|
3158
3158
|
});
|
|
3159
|
-
/**
|
|
3160
|
-
* One store per PROCESS, even when two copies of this module are loaded (an
|
|
3161
|
-
* addon bundle next to the framework's): keyed on a registered symbol.
|
|
3162
|
-
*/
|
|
3163
|
-
var STORE_KEY = Symbol.for("camstack.keychain.known-secrets");
|
|
3164
|
-
function store() {
|
|
3165
|
-
const existing = Reflect.get(globalThis, STORE_KEY);
|
|
3166
|
-
if (existing !== void 0 && existing !== null) return existing;
|
|
3167
|
-
const created = {
|
|
3168
|
-
values: /* @__PURE__ */ new Map(),
|
|
3169
|
-
compiled: null
|
|
3170
|
-
};
|
|
3171
|
-
Reflect.set(globalThis, STORE_KEY, created);
|
|
3172
|
-
return created;
|
|
3173
|
-
}
|
|
3174
|
-
/** Replace every registered value inside `text` with its label. */
|
|
3175
|
-
function scrubKnownSecrets(text) {
|
|
3176
|
-
const s = store();
|
|
3177
|
-
const re = s.compiled;
|
|
3178
|
-
if (re === null || text.length < 8) return text;
|
|
3179
|
-
re.lastIndex = 0;
|
|
3180
|
-
if (!re.test(text)) return text;
|
|
3181
|
-
re.lastIndex = 0;
|
|
3182
|
-
return text.replace(re, (match) => s.values.get(match) ?? "‹secret›");
|
|
3183
|
-
}
|
|
3184
3159
|
/** Shared Zod schemas used across streaming capabilities. */
|
|
3185
3160
|
var CamProfileSchema = z.enum([
|
|
3186
3161
|
"high",
|
|
@@ -19385,6 +19360,20 @@ function resolveHubAddressRoles(appPalette, hubPalette, flags) {
|
|
|
19385
19360
|
};
|
|
19386
19361
|
}
|
|
19387
19362
|
/**
|
|
19363
|
+
* How a client finds a hub on the LAN (D838): the hub publishes ONE mDNS
|
|
19364
|
+
* service for its HTTPS endpoint. `_camstack._tcp` carries the hub's `internal`
|
|
19365
|
+
* address in `url`, and nothing secret — finding a hub grants nothing, every
|
|
19366
|
+
* client still signs in. The mesh channel stays retired (D826).
|
|
19367
|
+
*/
|
|
19368
|
+
var HUB_MDNS_SERVICE_TYPE = "camstack";
|
|
19369
|
+
/** The TXT keys of the advertisement. Every value is public. */
|
|
19370
|
+
var HUB_MDNS_TXT_KEYS = {
|
|
19371
|
+
nodeId: "nodeId",
|
|
19372
|
+
version: "version",
|
|
19373
|
+
role: "role",
|
|
19374
|
+
url: "url"
|
|
19375
|
+
};
|
|
19376
|
+
/**
|
|
19388
19377
|
* Transport bounds for AI capability methods.
|
|
19389
19378
|
*
|
|
19390
19379
|
* Its own module because `llm.cap.ts` and `llm-runtime.cap.ts` already import
|
|
@@ -64286,6 +64275,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
64286
64275
|
[...RULE_TEXT],
|
|
64287
64276
|
[...RULE_TEXT],
|
|
64288
64277
|
[...RULE_TEXT],
|
|
64278
|
+
[...RULE_TEXT],
|
|
64279
|
+
[...RULE_TEXT],
|
|
64280
|
+
[...RULE_TEXT],
|
|
64281
|
+
[...RULE_TEXT],
|
|
64282
|
+
[...RULE_TEXT],
|
|
64289
64283
|
([...RULE_TEXT], [...UPDATES]),
|
|
64290
64284
|
([...RULE_TEXT], [...PACKAGE_UPDATES]),
|
|
64291
64285
|
([...RULE_TEXT], [...PACKAGE_UPDATES]),
|
|
@@ -64870,79 +64864,6 @@ function bareAddonId(id) {
|
|
|
64870
64864
|
function hfModelUrl(repo, path) {
|
|
64871
64865
|
return `https://huggingface.co/${repo}/resolve/main/${path}`;
|
|
64872
64866
|
}
|
|
64873
|
-
/**
|
|
64874
|
-
* Names that, when used as URL query parameters, almost certainly carry
|
|
64875
|
-
* a secret. Matching is case-insensitive and anchored to the full param
|
|
64876
|
-
* name to avoid false positives like `user_id` (an entity reference, not
|
|
64877
|
-
* a credential) or `topic=password-reset` (a value happens to contain
|
|
64878
|
-
* the substring "password" but the param name is unrelated).
|
|
64879
|
-
*
|
|
64880
|
-
* Add new patterns here as we encounter cameras/APIs that leak through
|
|
64881
|
-
* the existing list.
|
|
64882
|
-
*/
|
|
64883
|
-
var CREDENTIAL_PARAM_PATTERNS = [
|
|
64884
|
-
/^user$/i,
|
|
64885
|
-
/^usr$/i,
|
|
64886
|
-
/^username$/i,
|
|
64887
|
-
/^password$/i,
|
|
64888
|
-
/^pwd$/i,
|
|
64889
|
-
/^pass$/i,
|
|
64890
|
-
/^passwd$/i,
|
|
64891
|
-
/^secret$/i,
|
|
64892
|
-
/^token$/i,
|
|
64893
|
-
/^auth$/i,
|
|
64894
|
-
/^auth[_-]?token$/i,
|
|
64895
|
-
/^bearer$/i,
|
|
64896
|
-
/^api[_-]?key$/i,
|
|
64897
|
-
/^access[_-]?token$/i,
|
|
64898
|
-
/^refresh[_-]?token$/i,
|
|
64899
|
-
/^bridge$/i,
|
|
64900
|
-
/^code$/i,
|
|
64901
|
-
/^state$/i,
|
|
64902
|
-
/^challenge$/i,
|
|
64903
|
-
/^link$/i
|
|
64904
|
-
];
|
|
64905
|
-
function isCredentialParam(name) {
|
|
64906
|
-
return CREDENTIAL_PARAM_PATTERNS.some((re) => re.test(name));
|
|
64907
|
-
}
|
|
64908
|
-
/**
|
|
64909
|
-
* Redact secrets we may surface in logs or telemetry:
|
|
64910
|
-
* 1. `userinfo` (`user:password@host`) — the classic RTSP shape.
|
|
64911
|
-
* 2. Query-string credential params (`?user=...&password=...`) — the
|
|
64912
|
-
* Reolink RTMP shape and several HTTP-pushed-stream APIs.
|
|
64913
|
-
*
|
|
64914
|
-
* Returns the original string verbatim when the input is not a parseable
|
|
64915
|
-
* URL — a log helper must never throw. Param values are replaced with
|
|
64916
|
-
* `***` so an operator reading logs still sees WHICH credential was
|
|
64917
|
-
* present (useful for debugging "wrong password" issues) without
|
|
64918
|
-
* exposing the value.
|
|
64919
|
-
*
|
|
64920
|
-
* The credential-name match is case-insensitive but anchored to the
|
|
64921
|
-
* whole param name; values like `user_id=42` or `topic=password-reset`
|
|
64922
|
-
* are NOT masked (those are entity references, not credentials).
|
|
64923
|
-
*/
|
|
64924
|
-
function maskUrlCredentials(rawUrl) {
|
|
64925
|
-
if (rawUrl.startsWith("/") && !rawUrl.startsWith("//")) {
|
|
64926
|
-
const masked = maskUrlCredentials(`http://relative.invalid${rawUrl}`);
|
|
64927
|
-
return masked.startsWith("http://relative.invalid") ? masked.slice(23) : rawUrl;
|
|
64928
|
-
}
|
|
64929
|
-
try {
|
|
64930
|
-
const u = new URL(rawUrl);
|
|
64931
|
-
let touched = false;
|
|
64932
|
-
if (u.username || u.password) {
|
|
64933
|
-
u.username = "";
|
|
64934
|
-
u.password = "";
|
|
64935
|
-
touched = true;
|
|
64936
|
-
}
|
|
64937
|
-
for (const key of Array.from(u.searchParams.keys())) if (isCredentialParam(key)) {
|
|
64938
|
-
u.searchParams.set(key, "***");
|
|
64939
|
-
touched = true;
|
|
64940
|
-
}
|
|
64941
|
-
return touched ? u.toString() : rawUrl;
|
|
64942
|
-
} catch {
|
|
64943
|
-
return rawUrl;
|
|
64944
|
-
}
|
|
64945
|
-
}
|
|
64946
64867
|
var MB = 1024 * 1024;
|
|
64947
64868
|
1024 * MB, 3072 * MB;
|
|
64948
64869
|
/**
|
|
@@ -65190,4 +65111,4 @@ function enumerateInferenceDevices(hw) {
|
|
|
65190
65111
|
return out;
|
|
65191
65112
|
}
|
|
65192
65113
|
//#endregion
|
|
65193
|
-
export {
|
|
65114
|
+
export { bareAddonId as $, composedDeviceRef as $n, sleep as $r, locationIconKey as $t, LegacyStorageLocationDefaultSchema as A, scopesAllowAddon as An, emitDownForOwnedCaps as Ar, evictionPolicyOfLocation as At, STREAM_PROFILE_META as B, streamCatalogCapability as Bn, isSecretMarkerLike as Br, isArrayOutputSchema as Bt, FieldClaimModeSchema as C, resolveCoreBlockEntry as Cn, asString$1 as Cr, deviceManagerCapability as Ct, HUB_MDNS_TXT_KEYS as D, resolveMethodAuth as Dn, createEvent as Dr, enumerateItemArrayFields as Dt, HUB_MDNS_SERVICE_TYPE as E, resolveLocationMode as En, collectZodSecretPaths as Er, enumerateInferenceDevices as Et, MOTION_CLOSE_AFTER_MS as F, snapshotCapability as Fn, isDeviceConfigCap as Fr, foldSnapshotByFunction as Ft, StorageMigrationJobSchema as G, validateCustomAddress as Gn, parseJsonUnknown as Gr, isVoidInput as Gt, StorageCleanupJobSchema as H, supportedRuntimes as Hn, nodePin as Hr, isDefaultAppConnectionEndpoint as Ht, RECORDING_SOURCE_CAMSTACK_ADDON as I, storageCapability as In, isEvent as Ir, formatMinutes as It, addonSettingsCapability as J, vectorStoreCapability as Jn, resolveCapMount as Jr, keychainCapability as Jt, UserRecordSchema as K, vectorDimFromBase64 as Kn, parseSecretRef as Kr, kebabToCamel as Kt, RUNTIME_DEFAULTS as L, storageMigrationCapability as Ln, isKeychainStoredField as Lr, gbToBytes as Lt, METHOD_ACCESS_MAP as M, scoreRuntimes as Mn, expandCapMethods as Mr, expressionContainsBuiltinCall as Mt, MINUTES_PER_DAY as N, settingsStoreCapability as Nn, formatSecretScope as Nr, extractNestedAddonId as Nt, KEYCHAIN_RESET_TRIGGER_ACTOR as O, resolveNotificationTapAddress as On, customAction as Or, enumerateSchemaFields as Ot, MODEL_FORMATS as P, siteZoneKey as Pn, hydrateSchema as Pr, filesystemBrowseCapability as Pt, backupCapability as Q, cloneStatefulExpressionMemory as Qn, secretTreeFromSchema as Qr, localNetworkCapability as Qt, RecordingStatusSchema as R, storageOccupancyCapability as Rn, isSecretClear as Rr, hfModelUrl as Rt, FIRST_LEVEL_MACRO_CLASSES as S, resolveBucketMs as Sn, asNumber as Sr, deviceExtensionCapability as St, HF_REPO as T, resolveHubAddressRoles as Tn, collectSecretConfigKeys as Tr, deviceStatusCapability as Tt, StorageLocationModeSchema as U, userManagementCapability as Un, normalizeSecretOwner as Ur, isLocationEnabled as Ut, ScopedTokenSchema as V, streamQualityLabel as Vn, makeSecretMarker as Vr, isCollectionArrayMethod as Vt, StorageLocationTypeSchema as W, validateComposition as Wn, parseJsonObject as Wr, isObjectInput as Wt, alertsCapability as X, COMPOSER_ADDON_ID as Xn, scopeKey as Xr, legacyModeOf as Xt, addonWidgetsCapability as Y, withLocationMode as Yn, resolveSecretMarkers as Yr, legacyAutoLinkIds as Yt, authProviderCapability as Z, buildFfmpegArgs as Zn, secretTreeFromPaths as Zr, lifecycleJobSchema as Zt, DATABASE_SNAPSHOT_TIMEOUT_MS as _, procedureAuthKey as _n, ReadinessRegistry as _r, declarationOwnerNodeId as _t, BatteryStatusSchema as a, memoizePinnedFfmpeg as an, createStatefulExpressionMemory as ar, checkRoleAddress as at, DeclaredDevices as b, replacedFieldKeys as bn, WELL_KNOWN_TAB_MAP as br, deriveBatteryPresence as bt, CAP_NAMES_WITH_STATUS as c, motionCapability as cn, DeviceFeature as cr, compositionSourceRefs as ct, CORE_BLOCKS_ADDON_ID as d, objectInputDeclaresAddonId as dn, errMsg as dr, coreBlockIdFromAddonId as dt, toNodeId as ei, logDestinationCapability as en, composedDeviceStableId as er, batteryCapability as et, CORE_BLOCK_ADDON_PREFIX as f, objectInputDeclaresRequiredDeviceId as fn, BaseAddon as fr, coreBlockSourceKind as ft, DATABASE_SNAPSHOT_SUFFIX as g, platformProbeCapability as gn, REDACTED_SECRET as gr, databaseSnapshotCapability as gt, DATABASE_SNAPSHOT_PARTIAL_SUFFIX as h, planComposition as hn, DEVICE_STATUS_METHOD as hr, dataStoreProviderCapability as ht, BaseDevice as i, mayWriteToLocation as in, compositionSourceKey as ir, cameraGridLayoutCapability as it, LocationIconIdSchema as j, scopesAllowDeviceCap as jn, emitReadiness as jr, expandContainer as jt, LOG_LEVEL_RANK as k, runtimeStatePolicyFor as kn, defineCustomActions as kr, evaluateCompositionField as kt, COMPOSED_ITEM_FIXED_FIELDS as l, normalizeCoreBlockWrite as ln, DeviceRole as lr, coreBlockAddonId as lt, CoreBlockSchema as m, pickAppLinkHub as mn, DEVICE_SETTINGS_CONTRIBUTION_METHODS as mr, createDeviceExtensionProvider as mt, AlertSchema as n, transformSecretWrite as ni, looseSchema as nn, compositionItemFieldPath as nr, buildStreamParamsConfigSchema as nt, CAMERA_SWITCH_ORDER as o, metricsProviderCapability as on, disarmRoseMemory as or, composerCapability as ot, CalendarPreferencesSchema as p, parseStreamParamsFormPatch as pn, DATAPLANE_SECRET_HEADER as pr, coreBlocksCapability as pt, addonPagesCapability as q, vectorIndexDimConflictError as qn, readinessKey as qr, keychainAdminCapability as qt, ApiKeyRecordSchema as r, EventCategory as ri, mayReadLocation as rn, compositionSliceKey as rr, calendarsCapability as rt, CAMSTACK_APP_LINK_ORIGIN as s, modeMayWrite as sn, toExpressionValue as sr, compositionFieldKey as st, ALL_CAPABILITY_DEFINITIONS as t, toSecretFieldView as ti, logLevelAtMost as tn, compositionFeatureEnabled as tr, buildCapabilityLookup as tt, COMPOSER_RUNNER_ID as u, normalizeUnit as un, DeviceType as ur, coreBlockComposition as ut, DAY_NAMES as v, ptzAutotrackCapability as vn, ReadinessTimeoutError as vr, decodeVectorBase64 as vt, FieldClaimSchema as w, resolveCoreBlockFiles as wn, buildSecretRef as wr, deviceStateCapability as wt, DeviceStatusSchema as x, resolveAppConnections as xn, asJsonObject as xr, describeComposableCaps as xt, DERIVED_CAMERA_SILENCED_CAP_NAMES as y, reducePoints as yn, SECRET_CLEAR as yr, defineExtensionSlotProvider as yt, STORAGE_ACCESS_FALLBACK as z, storageProviderCapability as zn, isSecretMarker as zr, isAppLinkBase as zt };
|