camstack 1.2.178 → 1.2.179
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.
|
@@ -27316,6 +27316,7 @@ var NcStateSummarySectionIdSchema = external_exports.enum([
|
|
|
27316
27316
|
"detection-blind",
|
|
27317
27317
|
"nodes",
|
|
27318
27318
|
"addons",
|
|
27319
|
+
"addon-updates",
|
|
27319
27320
|
"updates"
|
|
27320
27321
|
]);
|
|
27321
27322
|
var NcStateSummaryPreviewSectionSchema = external_exports.object({
|
|
@@ -27702,7 +27703,19 @@ var NcAlarmModeDelaysSchema = external_exports.object({
|
|
|
27702
27703
|
* When this mode may be armed. Absent / null = always allowed (same as a
|
|
27703
27704
|
* rule with no `schedule`). Evaluated with {@link isScheduleActive}.
|
|
27704
27705
|
*/
|
|
27705
|
-
schedule: NcScheduleSchema.optional()
|
|
27706
|
+
schedule: NcScheduleSchema.optional(),
|
|
27707
|
+
/**
|
|
27708
|
+
* D706: while this mode's ENTRY DELAY runs, do the alarm rules' own pushes go out (as an
|
|
27709
|
+
* intrusion naming the locations)? Absent = false — the entry-delay notification is the
|
|
27710
|
+
* only one, and the matches ride the triggered notification's mosaic (D705).
|
|
27711
|
+
*/
|
|
27712
|
+
notifyDuringEntryDelay: external_exports.boolean().optional(),
|
|
27713
|
+
/**
|
|
27714
|
+
* D706: notify "watched again" when a sensor this arm bypassed closes and opens again.
|
|
27715
|
+
* Absent = false (logged, not sent). Even when true it is not sent when that same sensor
|
|
27716
|
+
* is the one that starts the entry delay — the entry-delay notification already names it.
|
|
27717
|
+
*/
|
|
27718
|
+
notifySensorRewatched: external_exports.boolean().optional()
|
|
27706
27719
|
});
|
|
27707
27720
|
var NcAlarmModeDelaysListSchema = external_exports.array(NcAlarmModeDelaysSchema).max(8).refine(uniqueModes, { message: "modeDelays: at most one entry per arm mode" });
|
|
27708
27721
|
var NcAlarmModeDelaysEditSchema = external_exports.object({
|
|
@@ -27712,7 +27725,11 @@ var NcAlarmModeDelaysEditSchema = external_exports.object({
|
|
|
27712
27725
|
triggeredDurationSec: NcAlarmTriggeredSecSchema.nullable().optional(),
|
|
27713
27726
|
postTriggeredAction: NcAlarmPostTriggeredActionSchema.nullable().optional(),
|
|
27714
27727
|
/** Set a schedule, or `null` to clear (mode always allowed again). */
|
|
27715
|
-
schedule: NcScheduleSchema.nullable().optional()
|
|
27728
|
+
schedule: NcScheduleSchema.nullable().optional(),
|
|
27729
|
+
/** D706: set the switch, or `null` to clear it (back to the default, false). */
|
|
27730
|
+
notifyDuringEntryDelay: external_exports.boolean().nullable().optional(),
|
|
27731
|
+
/** D706: set the switch, or `null` to clear it (back to the default, false). */
|
|
27732
|
+
notifySensorRewatched: external_exports.boolean().nullable().optional()
|
|
27716
27733
|
});
|
|
27717
27734
|
var NcAlarmModeDelaysEditListSchema = external_exports.array(NcAlarmModeDelaysEditSchema).max(8).refine(uniqueModes, { message: "modeDelays: at most one edit per arm mode" });
|
|
27718
27735
|
var NcAlarmNonBlockingEditSchema = external_exports.object({
|
|
@@ -31684,6 +31701,11 @@ var MotionSourceEnum = external_exports.enum([
|
|
|
31684
31701
|
"analyzer",
|
|
31685
31702
|
"device-activity"
|
|
31686
31703
|
]);
|
|
31704
|
+
var SessionTriggerSchema = external_exports.object({
|
|
31705
|
+
source: MotionSourceEnum,
|
|
31706
|
+
triggeredBy: MotionTriggeredBySchema,
|
|
31707
|
+
sensorName: external_exports.string().optional()
|
|
31708
|
+
});
|
|
31687
31709
|
var MotionSourcesSchema = external_exports.array(MotionSourceEnum);
|
|
31688
31710
|
var MOTION_SOURCE_LABELS = {
|
|
31689
31711
|
analyzer: "Frame-diff Analyzer (motion addon)",
|
|
@@ -31831,6 +31853,14 @@ var RunnerCameraConfigSchema = external_exports.object({
|
|
|
31831
31853
|
*/
|
|
31832
31854
|
motionSources: MotionSourcesSchema.default(["analyzer"]),
|
|
31833
31855
|
/**
|
|
31856
|
+
* What opened this attach, on a SESSION attach only (see
|
|
31857
|
+
* {@link SessionTriggerSchema}). OPTIONAL with no default: absent on a
|
|
31858
|
+
* standing attach, an occupancy burst, a re-dispatch with no motion event
|
|
31859
|
+
* behind it, and every attach from an orchestrator older than the field — the
|
|
31860
|
+
* runner then names no source on the phase event.
|
|
31861
|
+
*/
|
|
31862
|
+
sessionTrigger: SessionTriggerSchema.optional(),
|
|
31863
|
+
/**
|
|
31834
31864
|
* WHICH root detector runs for this camera. The detection counterpart of
|
|
31835
31865
|
* {@link motionSources}, same shape and same discipline: a per-camera list
|
|
31836
31866
|
* of sources the system understands, vendor-agnostic, owned here.
|
|
@@ -39588,7 +39618,7 @@ var LocalInterfaceSchema = external_exports.object({
|
|
|
39588
39618
|
name: external_exports.string(),
|
|
39589
39619
|
family: external_exports.enum(["IPv4", "IPv6"]),
|
|
39590
39620
|
address: external_exports.string(),
|
|
39591
|
-
/** CIDR shorthand (e.g. `192.168.
|
|
39621
|
+
/** CIDR shorthand (e.g. `192.168.10.10/24`). Empty when OS doesn't expose. */
|
|
39592
39622
|
cidr: external_exports.string(),
|
|
39593
39623
|
/** OS netmask. Stable across calls so the SDK can hash on it. */
|
|
39594
39624
|
netmask: external_exports.string(),
|
|
@@ -39637,7 +39667,8 @@ var ConnectionEndpointSchema = external_exports.object({
|
|
|
39637
39667
|
"lan-ipv4",
|
|
39638
39668
|
"lan-ipv6",
|
|
39639
39669
|
"public",
|
|
39640
|
-
"loopback"
|
|
39670
|
+
"loopback",
|
|
39671
|
+
"app-link"
|
|
39641
39672
|
]),
|
|
39642
39673
|
/**
|
|
39643
39674
|
* Originating-interface kind — `lan`/`wifi`/`docker`/`vpn`/`other`/
|
|
@@ -39702,8 +39733,20 @@ var GetConnectionEndpointsResultSchema = external_exports.object({
|
|
|
39702
39733
|
var NotificationEndpointSchema = external_exports.object({
|
|
39703
39734
|
/** The operator's explicit choice, or null for AUTO. */
|
|
39704
39735
|
baseUrl: external_exports.string().nullable(),
|
|
39705
|
-
/**
|
|
39706
|
-
|
|
39736
|
+
/**
|
|
39737
|
+
* The effective flagged address: the explicit choice, else (AUTO) the
|
|
39738
|
+
* CamStack app link `https://camstack.zentik.app` (D709). A pre-D709 hub
|
|
39739
|
+
* answered the public tunnel / mesh here, or null.
|
|
39740
|
+
*/
|
|
39741
|
+
resolved: external_exports.string().nullable(),
|
|
39742
|
+
/**
|
|
39743
|
+
* The hub origin an app link carries as `hub=` (D709): the hub's best
|
|
39744
|
+
* public HTTPS address — the tunnel, then the mesh (Tailscale MagicDNS) —
|
|
39745
|
+
* picked from this cap's own palette by `pickAppLinkHub`. `null` when the
|
|
39746
|
+
* hub advertises neither; the app link is then minted without `hub=`.
|
|
39747
|
+
* Absent on a pre-D709 hub.
|
|
39748
|
+
*/
|
|
39749
|
+
appLinkHub: external_exports.string().nullable()
|
|
39707
39750
|
});
|
|
39708
39751
|
var ViewerEndpointsSchema = external_exports.object({
|
|
39709
39752
|
/** The operator's explicit race set, or empty for AUTO. */
|
|
@@ -39767,7 +39810,7 @@ var localNetworkCapability = {
|
|
|
39767
39810
|
* every client a second authority on a socket only the hub binds. A viewer
|
|
39768
39811
|
* configured with a port-less public URL (`https://camstack.example.top`)
|
|
39769
39812
|
* infers 443 from the scheme, asks with 443, and was handed
|
|
39770
|
-
* `https://192.168.
|
|
39813
|
+
* `https://192.168.10.9:443` for a hub listening on 4443. That candidate
|
|
39771
39814
|
* cannot ever answer, and losing its race reads in the log exactly like
|
|
39772
39815
|
* "the LAN was tried and it was slower" — so an operator sitting on his own
|
|
39773
39816
|
* WiFi stayed on the public tunnel for weeks, with the LAN candidate born
|
|
@@ -39800,13 +39843,21 @@ var localNetworkCapability = {
|
|
|
39800
39843
|
* Pass `'https'` when the caller is itself loaded over HTTPS
|
|
39801
39844
|
* to avoid mixed-content blocks in the browser. The public
|
|
39802
39845
|
* tunnel always emits `https://` regardless. */
|
|
39803
|
-
scheme: external_exports.enum(["http", "https"]).optional()
|
|
39846
|
+
scheme: external_exports.enum(["http", "https"]).optional(),
|
|
39847
|
+
/** Append the CamStack app link entry (`kind: 'app-link'`, D709) —
|
|
39848
|
+
* an address notification links can be flagged with, not a hub
|
|
39849
|
+
* route. Default `false`: racers and rankers never see it. */
|
|
39850
|
+
includeAppLink: external_exports.boolean().optional()
|
|
39804
39851
|
}), GetConnectionEndpointsResultSchema),
|
|
39805
39852
|
/**
|
|
39806
|
-
* The
|
|
39807
|
-
*
|
|
39808
|
-
*
|
|
39809
|
-
*
|
|
39853
|
+
* The address notification links are flagged with. `baseUrl: null` means
|
|
39854
|
+
* AUTO, which is the CamStack app link (D709): viewer taps go through
|
|
39855
|
+
* `https://camstack.zentik.app/…?hub=<appLinkHub>` and open the app. Any
|
|
39856
|
+
* hub address the palette lists can be flagged instead; then viewer taps,
|
|
39857
|
+
* attachment links and action buttons all use it. Signed media and
|
|
39858
|
+
* buttons never use the app link — with it flagged (or AUTO) they keep
|
|
39859
|
+
* the ranked hub ladder (a configured origin, a connected tunnel, then
|
|
39860
|
+
* the LAN), never loopback.
|
|
39810
39861
|
*
|
|
39811
39862
|
* Why an explicit marker: the automatic ranking cannot know which of
|
|
39812
39863
|
* several reachable addresses the RECIPIENT can actually open. A link is
|
|
@@ -40165,7 +40216,7 @@ var MeshPeerSchema = external_exports.object({
|
|
|
40165
40216
|
tags: external_exports.array(external_exports.string()).readonly(),
|
|
40166
40217
|
/** True when the peer advertises itself as an exit-node candidate. */
|
|
40167
40218
|
exitNodeOption: external_exports.boolean(),
|
|
40168
|
-
/** Subnet routes the peer advertises (e.g. `["192.168.
|
|
40219
|
+
/** Subnet routes the peer advertises (e.g. `["192.168.10.0/24"]`). */
|
|
40169
40220
|
advertisedRoutes: external_exports.array(external_exports.string()).readonly(),
|
|
40170
40221
|
/** Owner account login (e.g. `foo@example.com`). Null for tagged peers. */
|
|
40171
40222
|
userLogin: external_exports.string().nullable(),
|
|
@@ -57791,12 +57842,14 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
57791
57842
|
{
|
|
57792
57843
|
id: "addons",
|
|
57793
57844
|
family: "system",
|
|
57794
|
-
label: "Addons",
|
|
57795
|
-
kinds: [
|
|
57796
|
-
|
|
57797
|
-
|
|
57798
|
-
|
|
57799
|
-
|
|
57845
|
+
label: "Addons stopped",
|
|
57846
|
+
kinds: ["addon-crash-loop"]
|
|
57847
|
+
},
|
|
57848
|
+
{
|
|
57849
|
+
id: "addon-updates",
|
|
57850
|
+
family: "system",
|
|
57851
|
+
label: "Addon updates",
|
|
57852
|
+
kinds: ["addon-update-available", "addon-updated"]
|
|
57800
57853
|
},
|
|
57801
57854
|
{
|
|
57802
57855
|
id: "updates",
|
|
@@ -57930,13 +57983,15 @@ var STATE_SUMMARY_SECTION_VARS = [
|
|
|
57930
57983
|
},
|
|
57931
57984
|
{
|
|
57932
57985
|
name: "summaryAddons",
|
|
57933
|
-
label: "Summary: addons",
|
|
57934
|
-
example: "
|
|
57935
|
-
kinds: [
|
|
57936
|
-
|
|
57937
|
-
|
|
57938
|
-
|
|
57939
|
-
|
|
57986
|
+
label: "Summary: addons stopped",
|
|
57987
|
+
example: "hub \u2014 recorder stopped after repeated crashes",
|
|
57988
|
+
kinds: ["addon-crash-loop"]
|
|
57989
|
+
},
|
|
57990
|
+
{
|
|
57991
|
+
name: "summaryAddonUpdates",
|
|
57992
|
+
label: "Summary: addon updates",
|
|
57993
|
+
example: "hub:\n\u2022 @camstack/addon-recorder 1.2.3 \u2192 1.2.4",
|
|
57994
|
+
kinds: ["addon-update-available", "addon-updated"]
|
|
57940
57995
|
},
|
|
57941
57996
|
{
|
|
57942
57997
|
name: "summaryUpdates",
|
|
@@ -58277,6 +58332,16 @@ var NC_TEMPLATE_VARS = [
|
|
|
58277
58332
|
kinds: ["system"],
|
|
58278
58333
|
systemEventKinds: [...DEVICE_EVENTS]
|
|
58279
58334
|
},
|
|
58335
|
+
{
|
|
58336
|
+
name: "locations",
|
|
58337
|
+
label: "Intrusion locations",
|
|
58338
|
+
example: "Ingresso, Corridoio, Salone",
|
|
58339
|
+
group: "system",
|
|
58340
|
+
families: ["rule"],
|
|
58341
|
+
fields: [...RULE_TEXT],
|
|
58342
|
+
kinds: ["system"],
|
|
58343
|
+
systemEventKinds: [...COMBINED_ALARM]
|
|
58344
|
+
},
|
|
58280
58345
|
{
|
|
58281
58346
|
name: "deviceId",
|
|
58282
58347
|
label: "Device id",
|
package/dist/cli.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
FFMPEG_PATH_ENV,
|
|
4
4
|
runDiscover
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-MRRNUEHP.js";
|
|
6
6
|
import "./chunk-LMMQX4CK.js";
|
|
7
7
|
|
|
8
8
|
// src/cli.ts
|
|
@@ -39,7 +39,7 @@ async function runServe(args) {
|
|
|
39
39
|
...typeof values.data === "string" ? { data: values.data } : {}
|
|
40
40
|
};
|
|
41
41
|
Object.assign(process.env, buildServeEnv(opts));
|
|
42
|
-
await import("./launcher-
|
|
42
|
+
await import("./launcher-ER4ORH3G.js");
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
// src/commands/agent.ts
|
|
@@ -72,7 +72,7 @@ async function runAgent(args) {
|
|
|
72
72
|
allowPositionals: false
|
|
73
73
|
});
|
|
74
74
|
if (typeof values.hub !== "string" || values.hub.length === 0) {
|
|
75
|
-
throw new Error("--hub is required (e.g. --hub 192.168.
|
|
75
|
+
throw new Error("--hub is required (e.g. --hub 192.168.10.10)");
|
|
76
76
|
}
|
|
77
77
|
if (typeof values.token !== "string" || values.token.length === 0) {
|
|
78
78
|
throw new Error("--token is required");
|
|
@@ -84,7 +84,7 @@ async function runAgent(args) {
|
|
|
84
84
|
...typeof values.port === "string" ? { port: values.port } : {}
|
|
85
85
|
};
|
|
86
86
|
Object.assign(process.env, buildAgentEnv(opts));
|
|
87
|
-
await import("./launcher-
|
|
87
|
+
await import("./launcher-ER4ORH3G.js");
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
// src/commands/setup.ts
|
|
@@ -1134,7 +1134,7 @@ function isUnknown(_value) {
|
|
|
1134
1134
|
return true;
|
|
1135
1135
|
}
|
|
1136
1136
|
async function resolveServerInteractive(presetNamespace) {
|
|
1137
|
-
const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-
|
|
1137
|
+
const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-TGPXHMVK.js");
|
|
1138
1138
|
if (presetNamespace) {
|
|
1139
1139
|
const spinner4 = clack.spinner();
|
|
1140
1140
|
spinner4.start(`Discovering hub on LAN (namespace "${presetNamespace}")`);
|