@camstack/addon-post-analysis 1.2.337 → 1.2.339
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/{clip-model-registry-CD0UYoAb.mjs → clip-model-registry-BKVUtnRA.mjs} +299 -140
- package/dist/{clip-model-registry-CML1YOOa.js → clip-model-registry-DlJT7zn4.js} +299 -140
- package/dist/embedding-encoder/index.js +1 -1
- package/dist/embedding-encoder/index.mjs +1 -1
- package/dist/pipeline-analytics/_stub.js +2 -2
- package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-DGaCYQ8R.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-CF8ypDMO.mjs} +2 -2
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BImFB0o5.mjs +26 -0
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-BRmdbHeK.mjs +26 -0
- package/dist/pipeline-analytics/{hostInit-Dlhtn22B.mjs → hostInit-DYVlvRBm.mjs} +2 -2
- package/dist/pipeline-analytics/index.js +494 -429
- package/dist/pipeline-analytics/index.mjs +494 -429
- package/dist/pipeline-analytics/remoteEntry.js +1 -1
- package/package.json +1 -1
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-D7NMYqUM.mjs +0 -26
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-bIOxWlPv.mjs +0 -26
|
@@ -5482,7 +5482,7 @@ var ZodIssueCode = {
|
|
|
5482
5482
|
var ZodFirstPartyTypeKind;
|
|
5483
5483
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5484
5484
|
//#endregion
|
|
5485
|
-
//#region ../types/dist/sleep-
|
|
5485
|
+
//#region ../types/dist/sleep-C16NCZR2.mjs
|
|
5486
5486
|
/**
|
|
5487
5487
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5488
5488
|
* window to float samples (D455).
|
|
@@ -19485,6 +19485,102 @@ var filesystemBrowseCapability = {
|
|
|
19485
19485
|
})
|
|
19486
19486
|
}
|
|
19487
19487
|
};
|
|
19488
|
+
/** The central link domain the viewer app claims (Universal Links / App Links). */
|
|
19489
|
+
var CAMSTACK_APP_LINK_ORIGIN = "https://camstack.zentik.app";
|
|
19490
|
+
/** Where the hub serves the viewer SPA. */
|
|
19491
|
+
var HUB_VIEWER_MOUNT = "/viewer/camstack";
|
|
19492
|
+
/** True when `baseUrl` names the CamStack app link rather than a hub address. */
|
|
19493
|
+
function isAppLinkBase(baseUrl) {
|
|
19494
|
+
if (baseUrl === null || baseUrl === void 0 || baseUrl === "") return false;
|
|
19495
|
+
try {
|
|
19496
|
+
return new URL(baseUrl).origin === CAMSTACK_APP_LINK_ORIGIN;
|
|
19497
|
+
} catch {
|
|
19498
|
+
return false;
|
|
19499
|
+
}
|
|
19500
|
+
}
|
|
19501
|
+
/**
|
|
19502
|
+
* The base a viewer link is built on, from the flagged notification address:
|
|
19503
|
+
* the effective address is the explicit choice, else AUTO's `resolved`. The
|
|
19504
|
+
* one reading of that answer — the NC's tap and the Network page's preview
|
|
19505
|
+
* both go through it.
|
|
19506
|
+
*/
|
|
19507
|
+
function viewerLinkBaseOf(endpoint) {
|
|
19508
|
+
const flagged = endpoint.baseUrl ?? endpoint.resolved;
|
|
19509
|
+
return isAppLinkBase(flagged) ? {
|
|
19510
|
+
form: "app",
|
|
19511
|
+
hubBaseUrl: endpoint.appLinkHub ?? null
|
|
19512
|
+
} : {
|
|
19513
|
+
form: "hub",
|
|
19514
|
+
hubBaseUrl: flagged
|
|
19515
|
+
};
|
|
19516
|
+
}
|
|
19517
|
+
/**
|
|
19518
|
+
* Reduce a base URL to the bare origin the central page accepts as `hub=`,
|
|
19519
|
+
* or `null` when it cannot be one: not http(s), carries credentials, or does
|
|
19520
|
+
* not parse. A path/query/fragment is dropped — the central page mounts the
|
|
19521
|
+
* viewer under the origin itself.
|
|
19522
|
+
*/
|
|
19523
|
+
function toAppLinkHubOrigin(baseUrl) {
|
|
19524
|
+
let parsed;
|
|
19525
|
+
try {
|
|
19526
|
+
parsed = new URL(baseUrl);
|
|
19527
|
+
} catch {
|
|
19528
|
+
return null;
|
|
19529
|
+
}
|
|
19530
|
+
if (parsed.protocol !== "https:" && parsed.protocol !== "http:") return null;
|
|
19531
|
+
if (parsed.username !== "" || parsed.password !== "") return null;
|
|
19532
|
+
if (parsed.hostname === "") return null;
|
|
19533
|
+
return parsed.origin;
|
|
19534
|
+
}
|
|
19535
|
+
/** The viewer route for a destination, or null when it names nothing. */
|
|
19536
|
+
function viewerRoute(destination) {
|
|
19537
|
+
switch (destination.kind) {
|
|
19538
|
+
case "camera": {
|
|
19539
|
+
if (!Number.isInteger(destination.deviceId) || destination.deviceId <= 0) return null;
|
|
19540
|
+
const at = destination.atMs;
|
|
19541
|
+
return {
|
|
19542
|
+
path: `/camera/${String(destination.deviceId)}`,
|
|
19543
|
+
query: at !== void 0 && Number.isFinite(at) ? [["at", String(Math.trunc(at))]] : []
|
|
19544
|
+
};
|
|
19545
|
+
}
|
|
19546
|
+
case "events": return {
|
|
19547
|
+
path: "/events",
|
|
19548
|
+
query: []
|
|
19549
|
+
};
|
|
19550
|
+
case "notifications": return {
|
|
19551
|
+
path: "/notifications",
|
|
19552
|
+
query: []
|
|
19553
|
+
};
|
|
19554
|
+
}
|
|
19555
|
+
}
|
|
19556
|
+
function encodeQuery(query) {
|
|
19557
|
+
if (query.length === 0) return "";
|
|
19558
|
+
return `?${query.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`).join("&")}`;
|
|
19559
|
+
}
|
|
19560
|
+
/**
|
|
19561
|
+
* The link for a viewer destination, or `null` when none can be minted: an
|
|
19562
|
+
* unknown destination, or the `hub` form with no reachable base (a dead link
|
|
19563
|
+
* is worse than none).
|
|
19564
|
+
*/
|
|
19565
|
+
function buildViewerLink(input) {
|
|
19566
|
+
const route = viewerRoute(input.destination);
|
|
19567
|
+
if (route === null) return null;
|
|
19568
|
+
const raw = input.base.hubBaseUrl;
|
|
19569
|
+
const base = raw === null ? "" : raw.replace(/\/+$/, "");
|
|
19570
|
+
if (input.base.form === "app") {
|
|
19571
|
+
const origin = base === "" ? null : toAppLinkHubOrigin(base);
|
|
19572
|
+
const query = origin === null ? route.query : [...route.query, ["hub", origin]];
|
|
19573
|
+
return `${CAMSTACK_APP_LINK_ORIGIN}${route.path}${encodeQuery(query)}`;
|
|
19574
|
+
}
|
|
19575
|
+
if (base === "" || isAppLinkBase(base)) return null;
|
|
19576
|
+
return `${base}${HUB_VIEWER_MOUNT}${route.path}${encodeQuery(route.query)}`;
|
|
19577
|
+
}
|
|
19578
|
+
var HUB_ADDRESS_ROLES = [
|
|
19579
|
+
"appConnections",
|
|
19580
|
+
"notificationTaps",
|
|
19581
|
+
"internal",
|
|
19582
|
+
"publicEndpoint"
|
|
19583
|
+
];
|
|
19488
19584
|
/**
|
|
19489
19585
|
* Transport bounds for AI capability methods.
|
|
19490
19586
|
*
|
|
@@ -24660,7 +24756,13 @@ var NcAlarmModeDelaysListSchema = array(object({
|
|
|
24660
24756
|
* Absent = false (logged, not sent). Even when true it is not sent when that same sensor
|
|
24661
24757
|
* is the one that starts the entry delay — the entry-delay notification already names it.
|
|
24662
24758
|
*/
|
|
24663
|
-
notifySensorRewatched: boolean().optional()
|
|
24759
|
+
notifySensorRewatched: boolean().optional(),
|
|
24760
|
+
/**
|
|
24761
|
+
* D735: notify "ignored" when a sensor this arm bypassed really MOVED while armed (its own
|
|
24762
|
+
* change time is after the arm) and set nothing off. Absent = false (logged, not sent). A
|
|
24763
|
+
* re-sync, a recovery from `unavailable` or a duplicate is never announced, switch or not.
|
|
24764
|
+
*/
|
|
24765
|
+
notifySensorIgnored: boolean().optional()
|
|
24664
24766
|
})).max(8).refine(uniqueModes, { message: "modeDelays: at most one entry per arm mode" });
|
|
24665
24767
|
var NcAlarmModeDelaysEditListSchema = array(object({
|
|
24666
24768
|
mode: AlarmArmModeSchema,
|
|
@@ -24673,7 +24775,9 @@ var NcAlarmModeDelaysEditListSchema = array(object({
|
|
|
24673
24775
|
/** D706: set the switch, or `null` to clear it (back to the default, false). */
|
|
24674
24776
|
notifyDuringEntryDelay: boolean().nullable().optional(),
|
|
24675
24777
|
/** D706: set the switch, or `null` to clear it (back to the default, false). */
|
|
24676
|
-
notifySensorRewatched: boolean().nullable().optional()
|
|
24778
|
+
notifySensorRewatched: boolean().nullable().optional(),
|
|
24779
|
+
/** D735: set the switch, or `null` to clear it (back to the default, false). */
|
|
24780
|
+
notifySensorIgnored: boolean().nullable().optional()
|
|
24677
24781
|
})).max(8).refine(uniqueModes, { message: "modeDelays: at most one edit per arm mode" });
|
|
24678
24782
|
/** One switch of the alarm table: put ONE device on, or take it off, ONE mode's list. */
|
|
24679
24783
|
var NcAlarmNonBlockingEditSchema = object({
|
|
@@ -34562,96 +34666,6 @@ var videoclipsCapability = {
|
|
|
34562
34666
|
})
|
|
34563
34667
|
}
|
|
34564
34668
|
};
|
|
34565
|
-
/** The central link domain the viewer app claims (Universal Links / App Links). */
|
|
34566
|
-
var CAMSTACK_APP_LINK_ORIGIN = "https://camstack.zentik.app";
|
|
34567
|
-
/** Where the hub serves the viewer SPA. */
|
|
34568
|
-
var HUB_VIEWER_MOUNT = "/viewer/camstack";
|
|
34569
|
-
/** True when `baseUrl` names the CamStack app link rather than a hub address. */
|
|
34570
|
-
function isAppLinkBase(baseUrl) {
|
|
34571
|
-
if (baseUrl === null || baseUrl === void 0 || baseUrl === "") return false;
|
|
34572
|
-
try {
|
|
34573
|
-
return new URL(baseUrl).origin === CAMSTACK_APP_LINK_ORIGIN;
|
|
34574
|
-
} catch {
|
|
34575
|
-
return false;
|
|
34576
|
-
}
|
|
34577
|
-
}
|
|
34578
|
-
/**
|
|
34579
|
-
* The base a viewer link is built on, from the flagged notification address:
|
|
34580
|
-
* the effective address is the explicit choice, else AUTO's `resolved`. The
|
|
34581
|
-
* one reading of that answer — the NC's tap and the Network page's preview
|
|
34582
|
-
* both go through it.
|
|
34583
|
-
*/
|
|
34584
|
-
function viewerLinkBaseOf(endpoint) {
|
|
34585
|
-
const flagged = endpoint.baseUrl ?? endpoint.resolved;
|
|
34586
|
-
return isAppLinkBase(flagged) ? {
|
|
34587
|
-
form: "app",
|
|
34588
|
-
hubBaseUrl: endpoint.appLinkHub ?? null
|
|
34589
|
-
} : {
|
|
34590
|
-
form: "hub",
|
|
34591
|
-
hubBaseUrl: flagged
|
|
34592
|
-
};
|
|
34593
|
-
}
|
|
34594
|
-
/**
|
|
34595
|
-
* Reduce a base URL to the bare origin the central page accepts as `hub=`,
|
|
34596
|
-
* or `null` when it cannot be one: not http(s), carries credentials, or does
|
|
34597
|
-
* not parse. A path/query/fragment is dropped — the central page mounts the
|
|
34598
|
-
* viewer under the origin itself.
|
|
34599
|
-
*/
|
|
34600
|
-
function toAppLinkHubOrigin(baseUrl) {
|
|
34601
|
-
let parsed;
|
|
34602
|
-
try {
|
|
34603
|
-
parsed = new URL(baseUrl);
|
|
34604
|
-
} catch {
|
|
34605
|
-
return null;
|
|
34606
|
-
}
|
|
34607
|
-
if (parsed.protocol !== "https:" && parsed.protocol !== "http:") return null;
|
|
34608
|
-
if (parsed.username !== "" || parsed.password !== "") return null;
|
|
34609
|
-
if (parsed.hostname === "") return null;
|
|
34610
|
-
return parsed.origin;
|
|
34611
|
-
}
|
|
34612
|
-
/** The viewer route for a destination, or null when it names nothing. */
|
|
34613
|
-
function viewerRoute(destination) {
|
|
34614
|
-
switch (destination.kind) {
|
|
34615
|
-
case "camera": {
|
|
34616
|
-
if (!Number.isInteger(destination.deviceId) || destination.deviceId <= 0) return null;
|
|
34617
|
-
const at = destination.atMs;
|
|
34618
|
-
return {
|
|
34619
|
-
path: `/camera/${String(destination.deviceId)}`,
|
|
34620
|
-
query: at !== void 0 && Number.isFinite(at) ? [["at", String(Math.trunc(at))]] : []
|
|
34621
|
-
};
|
|
34622
|
-
}
|
|
34623
|
-
case "events": return {
|
|
34624
|
-
path: "/events",
|
|
34625
|
-
query: []
|
|
34626
|
-
};
|
|
34627
|
-
case "notifications": return {
|
|
34628
|
-
path: "/notifications",
|
|
34629
|
-
query: []
|
|
34630
|
-
};
|
|
34631
|
-
}
|
|
34632
|
-
}
|
|
34633
|
-
function encodeQuery(query) {
|
|
34634
|
-
if (query.length === 0) return "";
|
|
34635
|
-
return `?${query.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`).join("&")}`;
|
|
34636
|
-
}
|
|
34637
|
-
/**
|
|
34638
|
-
* The link for a viewer destination, or `null` when none can be minted: an
|
|
34639
|
-
* unknown destination, or the `hub` form with no reachable base (a dead link
|
|
34640
|
-
* is worse than none).
|
|
34641
|
-
*/
|
|
34642
|
-
function buildViewerLink(input) {
|
|
34643
|
-
const route = viewerRoute(input.destination);
|
|
34644
|
-
if (route === null) return null;
|
|
34645
|
-
const raw = input.base.hubBaseUrl;
|
|
34646
|
-
const base = raw === null ? "" : raw.replace(/\/+$/, "");
|
|
34647
|
-
if (input.base.form === "app") {
|
|
34648
|
-
const origin = base === "" ? null : toAppLinkHubOrigin(base);
|
|
34649
|
-
const query = origin === null ? route.query : [...route.query, ["hub", origin]];
|
|
34650
|
-
return `${CAMSTACK_APP_LINK_ORIGIN}${route.path}${encodeQuery(query)}`;
|
|
34651
|
-
}
|
|
34652
|
-
if (base === "" || isAppLinkBase(base)) return null;
|
|
34653
|
-
return `${base}${HUB_VIEWER_MOUNT}${route.path}${encodeQuery(route.query)}`;
|
|
34654
|
-
}
|
|
34655
34669
|
/**
|
|
34656
34670
|
* Optional client-side hints sent at session creation to help the provider
|
|
34657
34671
|
* pick the best native source. All fields optional — a viewer that knows
|
|
@@ -35127,6 +35141,35 @@ var webrtcSessionCapability = {
|
|
|
35127
35141
|
alive: boolean()
|
|
35128
35142
|
})),
|
|
35129
35143
|
/**
|
|
35144
|
+
* The viewer's downlink probe, for ONE live session (D733).
|
|
35145
|
+
*
|
|
35146
|
+
* The player measures `/adaptive-probe` after the session's first decoded
|
|
35147
|
+
* frame (D635). It used to act on the reading itself, by opening a SECOND
|
|
35148
|
+
* session with `hints.downlinkMbps` — every adaptive live open became two
|
|
35149
|
+
* sessions, two ICE + DTLS handshakes and two server pipelines. It now
|
|
35150
|
+
* hands the measurement to the session it already has; the provider picks
|
|
35151
|
+
* the rung exactly as it would from an offer's hints (same viewport
|
|
35152
|
+
* ceiling) and moves the session there — in place when the negotiated
|
|
35153
|
+
* codec carries the new rendition, by the existing re-offer
|
|
35154
|
+
* (`getSessionState.pendingRenegotiation`) when it cannot.
|
|
35155
|
+
*
|
|
35156
|
+
* A MEASUREMENT, never a tier: the client does not choose. A probe only
|
|
35157
|
+
* raises the rung; lowering it stays the ladder's call on delivery.
|
|
35158
|
+
* `held` answers why nothing moved (`not-adaptive`, `pinned`,
|
|
35159
|
+
* `already-there`, `recorded`, …) — a client that gets ANY answer must not
|
|
35160
|
+
* fall back to a reconnect; only a provider that does not know the method
|
|
35161
|
+
* (an older hub) leaves the client its legacy second session.
|
|
35162
|
+
*/
|
|
35163
|
+
applyDownlinkProbe: method(object({
|
|
35164
|
+
deviceId: number().int().nonnegative(),
|
|
35165
|
+
sessionId: string(),
|
|
35166
|
+
downlinkMbps: number().nonnegative()
|
|
35167
|
+
}), object({
|
|
35168
|
+
outcome: _enum(["switching", "held"]),
|
|
35169
|
+
tier: CamProfileSchema.nullable(),
|
|
35170
|
+
reason: string()
|
|
35171
|
+
}), { kind: "mutation" }),
|
|
35172
|
+
/**
|
|
35130
35173
|
* The SERVER's half of the stream-debug overlay, for one live session.
|
|
35131
35174
|
*
|
|
35132
35175
|
* The client can measure its own transport (`getStats()`); it cannot see
|
|
@@ -39377,7 +39420,8 @@ var ConnectionEndpointSchema = object({
|
|
|
39377
39420
|
"lan-ipv6",
|
|
39378
39421
|
"public",
|
|
39379
39422
|
"loopback",
|
|
39380
|
-
"app-link"
|
|
39423
|
+
"app-link",
|
|
39424
|
+
"custom"
|
|
39381
39425
|
]),
|
|
39382
39426
|
/**
|
|
39383
39427
|
* Originating-interface kind — `lan`/`wifi`/`docker`/`vpn`/`other`/
|
|
@@ -39446,7 +39490,7 @@ var GetConnectionEndpointsResultSchema = object({
|
|
|
39446
39490
|
localPort: AdvertisedLocalPortSchema
|
|
39447
39491
|
});
|
|
39448
39492
|
/**
|
|
39449
|
-
* The address flagged for notification
|
|
39493
|
+
* The address flagged for notification taps (`notificationTaps`). `baseUrl: null` = AUTO, which
|
|
39450
39494
|
* since D709 is the CamStack app link; `resolved` reports the effective value,
|
|
39451
39495
|
* so the UI can show it either way.
|
|
39452
39496
|
*/
|
|
@@ -39480,13 +39524,12 @@ var ViewerEndpointsSchema = object({
|
|
|
39480
39524
|
resolved: array(string()).readonly()
|
|
39481
39525
|
});
|
|
39482
39526
|
/**
|
|
39483
|
-
*
|
|
39484
|
-
*
|
|
39527
|
+
* DEPRECATED compatibility shape of `getHubAddresses` (D729 amendment, kept
|
|
39528
|
+
* for addons built against it): `cluster` is the `internal` role, `browser`
|
|
39529
|
+
* the `publicEndpoint` role; `override` is the flagged address.
|
|
39485
39530
|
*/
|
|
39486
39531
|
var HubAddressSnapshotSchema = object({
|
|
39487
|
-
/** The operator's override, or null for automatic. */
|
|
39488
39532
|
override: string().nullable(),
|
|
39489
|
-
/** The address in use, or null when nothing qualifies (never loopback). */
|
|
39490
39533
|
resolved: string().nullable(),
|
|
39491
39534
|
source: _enum([
|
|
39492
39535
|
"override",
|
|
@@ -39495,11 +39538,57 @@ var HubAddressSnapshotSchema = object({
|
|
|
39495
39538
|
])
|
|
39496
39539
|
});
|
|
39497
39540
|
var HubAddressesSchema = object({
|
|
39498
|
-
/** "Hub address for agents" — agents' bundle/model pulls, LAN devices. */
|
|
39499
39541
|
cluster: HubAddressSnapshotSchema,
|
|
39500
|
-
/** "Public address for sign-in links" — e-mail links, OIDC, WebAuthn, OAuth2. */
|
|
39501
39542
|
browser: HubAddressSnapshotSchema
|
|
39502
39543
|
});
|
|
39544
|
+
/**
|
|
39545
|
+
* What an address is used for (`hub-address.ts`, D734). `appConnections` is
|
|
39546
|
+
* many-valued; `notificationTaps`, `publicEndpoint` and `internal` are carried
|
|
39547
|
+
* by at most one address.
|
|
39548
|
+
*/
|
|
39549
|
+
var HubAddressRoleSchema = _enum(HUB_ADDRESS_ROLES);
|
|
39550
|
+
var RoleSourceSchema = _enum([
|
|
39551
|
+
"flagged",
|
|
39552
|
+
"auto",
|
|
39553
|
+
"none"
|
|
39554
|
+
]);
|
|
39555
|
+
/** One single-valued role: the flagged address, the one in use, and why. */
|
|
39556
|
+
var HubAddressRoleResolutionSchema = object({
|
|
39557
|
+
/** The address carrying the flag, or null = automatic. */
|
|
39558
|
+
flagged: string().nullable(),
|
|
39559
|
+
/** The address in use, or null when nothing qualifies (never loopback). */
|
|
39560
|
+
resolved: string().nullable(),
|
|
39561
|
+
source: RoleSourceSchema
|
|
39562
|
+
});
|
|
39563
|
+
var HubAppConnectionsResolutionSchema = object({
|
|
39564
|
+
/** The addresses flagged `appConnections`, or empty = automatic. */
|
|
39565
|
+
flagged: array(string()).readonly(),
|
|
39566
|
+
/** What the apps race right now. */
|
|
39567
|
+
resolved: array(string()).readonly(),
|
|
39568
|
+
source: RoleSourceSchema
|
|
39569
|
+
});
|
|
39570
|
+
var HubAddressBookSchema = object({
|
|
39571
|
+
rows: array(ConnectionEndpointSchema.extend({
|
|
39572
|
+
/** In the hub's detected palette right now. */
|
|
39573
|
+
detected: boolean(),
|
|
39574
|
+
/** Entered by the operator (removable). */
|
|
39575
|
+
custom: boolean(),
|
|
39576
|
+
/** The roles explicitly flagged on this address. */
|
|
39577
|
+
flags: array(HubAddressRoleSchema).readonly(),
|
|
39578
|
+
/** The roles this address serves right now — flagged or automatic. */
|
|
39579
|
+
inUse: array(HubAddressRoleSchema).readonly(),
|
|
39580
|
+
/** The roles this address may be flagged with. */
|
|
39581
|
+
eligible: array(HubAddressRoleSchema).readonly()
|
|
39582
|
+
})).readonly(),
|
|
39583
|
+
roles: object({
|
|
39584
|
+
appConnections: HubAppConnectionsResolutionSchema,
|
|
39585
|
+
notificationTaps: HubAddressRoleResolutionSchema,
|
|
39586
|
+
internal: HubAddressRoleResolutionSchema,
|
|
39587
|
+
publicEndpoint: HubAddressRoleResolutionSchema
|
|
39588
|
+
}),
|
|
39589
|
+
/** The `hub=` an app link carries (D709), or null. */
|
|
39590
|
+
appLinkHub: string().nullable()
|
|
39591
|
+
});
|
|
39503
39592
|
var AllowedAddressesSchema = object({
|
|
39504
39593
|
/**
|
|
39505
39594
|
* Allowlist of interface addresses operators have explicitly opted
|
|
@@ -39590,19 +39679,18 @@ var localNetworkCapability = {
|
|
|
39590
39679
|
* tunnel always emits `https://` regardless. */
|
|
39591
39680
|
scheme: _enum(["http", "https"]).optional(),
|
|
39592
39681
|
/** Append the CamStack app link entry (`kind: 'app-link'`, D709) —
|
|
39593
|
-
* an address notification
|
|
39682
|
+
* an address notification taps can be flagged with, not a hub
|
|
39594
39683
|
* route. Default `false`: racers and rankers never see it. */
|
|
39595
39684
|
includeAppLink: boolean().optional()
|
|
39596
39685
|
}), GetConnectionEndpointsResultSchema),
|
|
39597
39686
|
/**
|
|
39598
|
-
* The
|
|
39599
|
-
* AUTO, which is the CamStack app link (D709):
|
|
39600
|
-
* `https://camstack.zentik.app/…?hub=<appLinkHub>` and open the
|
|
39601
|
-
* hub address the palette lists can be flagged instead; then
|
|
39602
|
-
*
|
|
39603
|
-
*
|
|
39604
|
-
*
|
|
39605
|
-
* the LAN), never loopback.
|
|
39687
|
+
* The `notificationTaps` role (D734): where TAPPING a notification opens.
|
|
39688
|
+
* `baseUrl: null` means AUTO, which is the CamStack app link (D709): taps
|
|
39689
|
+
* go through `https://camstack.zentik.app/…?hub=<appLinkHub>` and open the
|
|
39690
|
+
* app. Any hub address the palette lists can be flagged instead; then a
|
|
39691
|
+
* tap opens that address. Only the tap: action buttons, attachment /
|
|
39692
|
+
* media links and admin links follow the `publicEndpoint` role
|
|
39693
|
+
* (`getAddresses().roles.publicEndpoint`), never this one.
|
|
39606
39694
|
*
|
|
39607
39695
|
* Why an explicit marker: the automatic ranking cannot know which of
|
|
39608
39696
|
* several reachable addresses the RECIPIENT can actually open. A link is
|
|
@@ -39612,46 +39700,80 @@ var localNetworkCapability = {
|
|
|
39612
39700
|
*/
|
|
39613
39701
|
getNotificationEndpoint: method(_void(), NotificationEndpointSchema),
|
|
39614
39702
|
/**
|
|
39615
|
-
*
|
|
39616
|
-
*
|
|
39617
|
-
*
|
|
39618
|
-
* different address after a reboot.
|
|
39703
|
+
* @deprecated Use `setAddressRole({ role: 'notificationTaps', … })`. It
|
|
39704
|
+
* writes the same `notificationTaps` flag, with the same validation. `baseUrl: null` restores automatic; an
|
|
39705
|
+
* address that is not detected becomes a custom address.
|
|
39619
39706
|
*/
|
|
39620
39707
|
setNotificationEndpoint: method(object({ baseUrl: string().nullable() }), NotificationEndpointSchema, { kind: "mutation" }),
|
|
39621
39708
|
/**
|
|
39622
|
-
* The
|
|
39623
|
-
*
|
|
39624
|
-
*
|
|
39625
|
-
*
|
|
39709
|
+
* The `appConnections` role as shipped apps read it: the flagged addresses
|
|
39710
|
+
* (detected or custom), or empty for AUTO — every LAN IPv4 address plus
|
|
39711
|
+
* the public tunnel, never IPv6, mesh, loopback or a custom address.
|
|
39712
|
+
* `resolved` is the set as it stands right now; the custom ones in it are
|
|
39713
|
+
* also in `getConnectionEndpoints`, which the apps filter by it.
|
|
39626
39714
|
*/
|
|
39627
39715
|
getViewerEndpoints: method(_void(), ViewerEndpointsSchema),
|
|
39628
39716
|
/**
|
|
39629
|
-
*
|
|
39630
|
-
*
|
|
39631
|
-
*
|
|
39717
|
+
* @deprecated Use `setAddressRole({ role: 'appConnections', … })`. It
|
|
39718
|
+
* replaces the same `appConnections` flags.
|
|
39719
|
+
* Empty `baseUrls` restores automatic.
|
|
39632
39720
|
*/
|
|
39633
39721
|
setViewerEndpoints: method(object({ baseUrls: array(string()).readonly() }), ViewerEndpointsSchema, { kind: "mutation" }),
|
|
39634
39722
|
/**
|
|
39635
|
-
* The
|
|
39636
|
-
*
|
|
39637
|
-
*
|
|
39638
|
-
*
|
|
39639
|
-
*
|
|
39723
|
+
* The Network page's Addresses table and every role's answer — the ONE
|
|
39724
|
+
* reading of "which address is this hub reached at, for what": detected
|
|
39725
|
+
* endpoints and custom addresses with their role flags, and per role the
|
|
39726
|
+
* flagged address, the one in use and whether it is automatic. Agent
|
|
39727
|
+
* deliveries and LAN devices read `roles.internal`; sign-in, OAuth2 and
|
|
39728
|
+
* the notification centre's buttons / media / admin links read
|
|
39729
|
+
* `roles.publicEndpoint`; nothing ranks the palette itself. `scheme` is
|
|
39730
|
+
* the one the caller shows LAN rows in (as `getConnectionEndpoints`);
|
|
39731
|
+
* `internal` and `publicEndpoint` are always resolved over the HTTPS
|
|
39732
|
+
* palette.
|
|
39640
39733
|
*/
|
|
39641
|
-
|
|
39734
|
+
getAddresses: method(object({ scheme: _enum(["http", "https"]).optional() }).optional(), HubAddressBookSchema),
|
|
39642
39735
|
/**
|
|
39643
|
-
*
|
|
39644
|
-
*
|
|
39645
|
-
*
|
|
39736
|
+
* Add a custom address. Validated: an http(s) origin with a host, no
|
|
39737
|
+
* credentials, no path, never loopback — an invalid one is refused with
|
|
39738
|
+
* the reason and nothing is stored. Adding an address that already exists
|
|
39739
|
+
* only updates its label.
|
|
39646
39740
|
*/
|
|
39647
|
-
|
|
39648
|
-
|
|
39649
|
-
|
|
39650
|
-
}),
|
|
39741
|
+
addCustomAddress: method(object({
|
|
39742
|
+
baseUrl: string(),
|
|
39743
|
+
label: string().max(80)
|
|
39744
|
+
}), HubAddressBookSchema, {
|
|
39745
|
+
kind: "mutation",
|
|
39746
|
+
auth: "admin"
|
|
39747
|
+
}),
|
|
39748
|
+
/** Remove a custom address. Its role flags go with it (those roles turn automatic). */
|
|
39749
|
+
removeCustomAddress: method(object({ baseUrl: string() }), HubAddressBookSchema, {
|
|
39750
|
+
kind: "mutation",
|
|
39751
|
+
auth: "admin"
|
|
39752
|
+
}),
|
|
39753
|
+
/**
|
|
39754
|
+
* Flag (`enabled: true`) or unflag an address for a role. For a
|
|
39755
|
+
* single-valued role, flagging moves the flag off every other address.
|
|
39756
|
+
* `baseUrl: null` returns the role to automatic. The address must be a row
|
|
39757
|
+
* of the table (detected, custom, or the app link for `notificationTaps`);
|
|
39758
|
+
* `publicEndpoint` on a plain-http address is refused unless
|
|
39759
|
+
* `acceptInsecureHttp`, and never takes the app link.
|
|
39760
|
+
*/
|
|
39761
|
+
setAddressRole: method(object({
|
|
39762
|
+
role: HubAddressRoleSchema,
|
|
39763
|
+
baseUrl: string().nullable(),
|
|
39764
|
+
enabled: boolean(),
|
|
39765
|
+
acceptInsecureHttp: boolean().optional()
|
|
39766
|
+
}), HubAddressBookSchema, {
|
|
39651
39767
|
kind: "mutation",
|
|
39652
39768
|
auth: "admin"
|
|
39653
39769
|
}),
|
|
39654
39770
|
/**
|
|
39771
|
+
* @deprecated Read `getAddresses().roles.internal` / `.publicEndpoint`.
|
|
39772
|
+
* Kept so an addon built against the D729 amendment keeps resolving:
|
|
39773
|
+
* `cluster` = the `internal` role, `browser` = the `publicEndpoint` role.
|
|
39774
|
+
*/
|
|
39775
|
+
getHubAddresses: method(_void(), HubAddressesSchema),
|
|
39776
|
+
/**
|
|
39655
39777
|
* Read the operator's allowlist. Empty = "auto" (no filter). Used
|
|
39656
39778
|
* by the admin UI's address selector to seed its checkbox state.
|
|
39657
39779
|
*/
|
|
@@ -51664,12 +51786,24 @@ Object.freeze({
|
|
|
51664
51786
|
addonId: null,
|
|
51665
51787
|
access: "view"
|
|
51666
51788
|
},
|
|
51789
|
+
"localNetwork.addCustomAddress": {
|
|
51790
|
+
capName: "local-network",
|
|
51791
|
+
capScope: "system",
|
|
51792
|
+
addonId: null,
|
|
51793
|
+
access: "create"
|
|
51794
|
+
},
|
|
51667
51795
|
"localNetwork.downloadCa": {
|
|
51668
51796
|
capName: "local-network",
|
|
51669
51797
|
capScope: "system",
|
|
51670
51798
|
addonId: null,
|
|
51671
51799
|
access: "view"
|
|
51672
51800
|
},
|
|
51801
|
+
"localNetwork.getAddresses": {
|
|
51802
|
+
capName: "local-network",
|
|
51803
|
+
capScope: "system",
|
|
51804
|
+
addonId: null,
|
|
51805
|
+
access: "view"
|
|
51806
|
+
},
|
|
51673
51807
|
"localNetwork.getAllowedAddresses": {
|
|
51674
51808
|
capName: "local-network",
|
|
51675
51809
|
capScope: "system",
|
|
@@ -51724,6 +51858,12 @@ Object.freeze({
|
|
|
51724
51858
|
addonId: null,
|
|
51725
51859
|
access: "create"
|
|
51726
51860
|
},
|
|
51861
|
+
"localNetwork.removeCustomAddress": {
|
|
51862
|
+
capName: "local-network",
|
|
51863
|
+
capScope: "system",
|
|
51864
|
+
addonId: null,
|
|
51865
|
+
access: "delete"
|
|
51866
|
+
},
|
|
51727
51867
|
"localNetwork.resetAllowlistToBestMatch": {
|
|
51728
51868
|
capName: "local-network",
|
|
51729
51869
|
capScope: "system",
|
|
@@ -51736,13 +51876,13 @@ Object.freeze({
|
|
|
51736
51876
|
addonId: null,
|
|
51737
51877
|
access: "create"
|
|
51738
51878
|
},
|
|
51739
|
-
"localNetwork.
|
|
51879
|
+
"localNetwork.setAddressRole": {
|
|
51740
51880
|
capName: "local-network",
|
|
51741
51881
|
capScope: "system",
|
|
51742
51882
|
addonId: null,
|
|
51743
51883
|
access: "create"
|
|
51744
51884
|
},
|
|
51745
|
-
"localNetwork.
|
|
51885
|
+
"localNetwork.setAllowedAddresses": {
|
|
51746
51886
|
capName: "local-network",
|
|
51747
51887
|
capScope: "system",
|
|
51748
51888
|
addonId: null,
|
|
@@ -55996,6 +56136,12 @@ Object.freeze({
|
|
|
55996
56136
|
addonId: null,
|
|
55997
56137
|
access: "create"
|
|
55998
56138
|
},
|
|
56139
|
+
"webrtcSession.applyDownlinkProbe": {
|
|
56140
|
+
capName: "webrtc-session",
|
|
56141
|
+
capScope: "device",
|
|
56142
|
+
addonId: null,
|
|
56143
|
+
access: "create"
|
|
56144
|
+
},
|
|
55999
56145
|
"webrtcSession.closeSession": {
|
|
56000
56146
|
capName: "webrtc-session",
|
|
56001
56147
|
capScope: "device",
|
|
@@ -60094,6 +60240,11 @@ Object.freeze({
|
|
|
60094
60240
|
form: "single",
|
|
60095
60241
|
optional: false
|
|
60096
60242
|
}],
|
|
60243
|
+
"webrtcSession.applyDownlinkProbe": [{
|
|
60244
|
+
name: "deviceId",
|
|
60245
|
+
form: "single",
|
|
60246
|
+
optional: false
|
|
60247
|
+
}],
|
|
60097
60248
|
"webrtcSession.closeSession": [{
|
|
60098
60249
|
name: "deviceId",
|
|
60099
60250
|
form: "single",
|
|
@@ -60901,17 +61052,23 @@ var NC_ALARM_DELAY_FIELDS = [
|
|
|
60901
61052
|
* all read this one constant.
|
|
60902
61053
|
*/
|
|
60903
61054
|
var NC_ALARM_DEFAULT_TRIGGERED_DURATION_SEC = 30;
|
|
60904
|
-
var NC_ALARM_NOTIFY_FIELDS = [
|
|
61055
|
+
var NC_ALARM_NOTIFY_FIELDS = [
|
|
61056
|
+
"notifyDuringEntryDelay",
|
|
61057
|
+
"notifySensorRewatched",
|
|
61058
|
+
"notifySensorIgnored"
|
|
61059
|
+
];
|
|
60905
61060
|
/**
|
|
60906
61061
|
* The switches `mode` runs on. There is no global value: absent is OFF (operator decision
|
|
60907
61062
|
* 2026-10-06 — the entry-delay notification is the only one by default, and "watched again"
|
|
60908
|
-
* is not sent). An answer from an older hub carries no
|
|
61063
|
+
* is not sent; 2026-10-07 — nor is "ignored", D735). An answer from an older hub carries no
|
|
61064
|
+
* switch and reads as off.
|
|
60909
61065
|
*/
|
|
60910
61066
|
function resolveModeNotifyPolicy(settings, mode) {
|
|
60911
61067
|
const entry = (settings.modeDelays ?? []).find((e) => e.mode === mode);
|
|
60912
61068
|
return {
|
|
60913
61069
|
notifyDuringEntryDelay: entry?.notifyDuringEntryDelay === true,
|
|
60914
|
-
notifySensorRewatched: entry?.notifySensorRewatched === true
|
|
61070
|
+
notifySensorRewatched: entry?.notifySensorRewatched === true,
|
|
61071
|
+
notifySensorIgnored: entry?.notifySensorIgnored === true
|
|
60915
61072
|
};
|
|
60916
61073
|
}
|
|
60917
61074
|
/**
|
|
@@ -60988,6 +61145,7 @@ function applyModeDelaysEdits(current, edits) {
|
|
|
60988
61145
|
const schedule = editedSchedule(base.schedule, edit.schedule);
|
|
60989
61146
|
const duringEntry = editedFlag(base.notifyDuringEntryDelay, edit.notifyDuringEntryDelay);
|
|
60990
61147
|
const rewatched = editedFlag(base.notifySensorRewatched, edit.notifySensorRewatched);
|
|
61148
|
+
const ignored = editedFlag(base.notifySensorIgnored, edit.notifySensorIgnored);
|
|
60991
61149
|
if (exit !== void 0) next.exitDelaySec = exit;
|
|
60992
61150
|
if (entry !== void 0) next.entryDelaySec = entry;
|
|
60993
61151
|
if (triggered !== void 0) next.triggeredDurationSec = triggered;
|
|
@@ -60995,10 +61153,11 @@ function applyModeDelaysEdits(current, edits) {
|
|
|
60995
61153
|
if (schedule !== void 0) next.schedule = schedule;
|
|
60996
61154
|
if (duringEntry !== void 0) next.notifyDuringEntryDelay = duringEntry;
|
|
60997
61155
|
if (rewatched !== void 0) next.notifySensorRewatched = rewatched;
|
|
61156
|
+
if (ignored !== void 0) next.notifySensorIgnored = ignored;
|
|
60998
61157
|
if (at >= 0) out[at] = next;
|
|
60999
61158
|
else out.push(next);
|
|
61000
61159
|
}
|
|
61001
|
-
return out.filter((e) => e.exitDelaySec !== void 0 || e.entryDelaySec !== void 0 || e.triggeredDurationSec !== void 0 || e.postTriggeredAction !== void 0 || e.schedule !== void 0 || e.notifyDuringEntryDelay !== void 0 || e.notifySensorRewatched !== void 0);
|
|
61160
|
+
return out.filter((e) => e.exitDelaySec !== void 0 || e.entryDelaySec !== void 0 || e.triggeredDurationSec !== void 0 || e.postTriggeredAction !== void 0 || e.schedule !== void 0 || e.notifyDuringEntryDelay !== void 0 || e.notifySensorRewatched !== void 0 || e.notifySensorIgnored !== void 0);
|
|
61002
61161
|
}
|
|
61003
61162
|
/**
|
|
61004
61163
|
* Put ONE device on, or take it off, ONE mode's device-id list. A no-op answers
|
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_clip_model_registry = require("../clip-model-registry-
|
|
5
|
+
const require_clip_model_registry = require("../clip-model-registry-DlJT7zn4.js");
|
|
6
6
|
let node_fs = require("node:fs");
|
|
7
7
|
node_fs = require_clip_model_registry.__toESM(node_fs);
|
|
8
8
|
let node_path = require("node:path");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Ci as normalizeNodeId, Jn as embeddingEncoderCapability, Or as parseProcStatus, Qn as embeddingRequirementsUnavailableError, Yn as embeddingModelFailedError, Zn as embeddingRequirementsFailedError, Zt as PoolMemoryWatchdog, a as CLIP_EMBEDDING_STEP_ID, c as resolveClusterModelPin, hi as BaseAddon, i as CLIP_TEXT_MODELS, n as DEFAULT_CLIP_MODEL, r as CLIP_IMAGE_MODELS, t as BUILTIN_CLIP_MODELS, zr as resolvePoolMemoryPolicy } from "../clip-model-registry-
|
|
1
|
+
import { Ci as normalizeNodeId, Jn as embeddingEncoderCapability, Or as parseProcStatus, Qn as embeddingRequirementsUnavailableError, Yn as embeddingModelFailedError, Zn as embeddingRequirementsFailedError, Zt as PoolMemoryWatchdog, a as CLIP_EMBEDDING_STEP_ID, c as resolveClusterModelPin, hi as BaseAddon, i as CLIP_TEXT_MODELS, n as DEFAULT_CLIP_MODEL, r as CLIP_IMAGE_MODELS, t as BUILTIN_CLIP_MODELS, zr as resolvePoolMemoryPolicy } from "../clip-model-registry-BKVUtnRA.mjs";
|
|
2
2
|
import { createRequire } from "node:module";
|
|
3
3
|
import * as fs from "node:fs";
|
|
4
4
|
import * as path$1 from "node:path";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { a as e, i as t, n, o as r, r as i, t as a } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react__loadShare__.js-C0AuF9av.mjs";
|
|
2
2
|
import { t as o } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-B3Wx5J80.mjs";
|
|
3
|
-
import { a as s, i as c, n as l, o as u, r as d, s as f, t as p } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-
|
|
3
|
+
import { a as s, i as c, n as l, o as u, r as d, s as f, t as p } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-BRmdbHeK.mjs";
|
|
4
4
|
import { n as m, r as h, t as g } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-Bm-iyjmq.mjs";
|
|
5
|
-
import { t as _ } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-
|
|
5
|
+
import { t as _ } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BImFB0o5.mjs";
|
|
6
6
|
//#region ../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
|
|
7
7
|
var v = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), y = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), b = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), x = (e) => {
|
|
8
8
|
let t = b(e);
|