camstack 1.2.29 → 1.2.31
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.
|
@@ -28610,6 +28610,14 @@ var ClipSchema = external_exports.object({
|
|
|
28610
28610
|
endMs: external_exports.number()
|
|
28611
28611
|
}),
|
|
28612
28612
|
/**
|
|
28613
|
+
* Distinct object classes attached to this visit (`person`, `car`, …),
|
|
28614
|
+
* dominant first, capped at {@link MAX_CLIP_LABELS}. The ribbon renders these
|
|
28615
|
+
* instead of the bare kind — "Object" tells the operator nothing a colour bar
|
|
28616
|
+
* did not. Absent (never empty) when the visit attached no classified object
|
|
28617
|
+
* event, so a motion/audio-only visit keeps its kind label.
|
|
28618
|
+
*/
|
|
28619
|
+
labels: external_exports.array(external_exports.string()).max(3).optional(),
|
|
28620
|
+
/**
|
|
28613
28621
|
* Lazy thumbnail URL, never inlined.
|
|
28614
28622
|
*
|
|
28615
28623
|
* Recording-derived clips (events-mode keep-window, and the prepared
|
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
runDiscover
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-UCPOTU23.js";
|
|
5
5
|
import "./chunk-LMMQX4CK.js";
|
|
6
6
|
|
|
7
7
|
// src/cli.ts
|
|
@@ -38,7 +38,7 @@ async function runServe(args) {
|
|
|
38
38
|
...typeof values.data === "string" ? { data: values.data } : {}
|
|
39
39
|
};
|
|
40
40
|
Object.assign(process.env, buildServeEnv(opts));
|
|
41
|
-
await import("./launcher-
|
|
41
|
+
await import("./launcher-PT4JLGCT.js");
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
// src/commands/agent.ts
|
|
@@ -83,7 +83,7 @@ async function runAgent(args) {
|
|
|
83
83
|
...typeof values.port === "string" ? { port: values.port } : {}
|
|
84
84
|
};
|
|
85
85
|
Object.assign(process.env, buildAgentEnv(opts));
|
|
86
|
-
await import("./launcher-
|
|
86
|
+
await import("./launcher-PT4JLGCT.js");
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
// src/commands/setup.ts
|
|
@@ -1130,7 +1130,7 @@ function isUnknown(_value) {
|
|
|
1130
1130
|
return true;
|
|
1131
1131
|
}
|
|
1132
1132
|
async function resolveServerInteractive(presetNamespace) {
|
|
1133
|
-
const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-
|
|
1133
|
+
const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-3RXB46IL.js");
|
|
1134
1134
|
if (presetNamespace) {
|
|
1135
1135
|
const spinner4 = clack.spinner();
|
|
1136
1136
|
spinner4.start(`Discovering hub on LAN (namespace "${presetNamespace}")`);
|
|
@@ -23631,9 +23631,9 @@ var require_zod = __commonJS({
|
|
|
23631
23631
|
}
|
|
23632
23632
|
});
|
|
23633
23633
|
|
|
23634
|
-
// ../system/dist/dist-
|
|
23635
|
-
var
|
|
23636
|
-
"../system/dist/dist-
|
|
23634
|
+
// ../system/dist/dist-CB2eCKJb.js
|
|
23635
|
+
var require_dist_CB2eCKJb = __commonJS({
|
|
23636
|
+
"../system/dist/dist-CB2eCKJb.js"(exports) {
|
|
23637
23637
|
"use strict";
|
|
23638
23638
|
var zod = require_zod();
|
|
23639
23639
|
var EventCategory = /* @__PURE__ */ (function(EventCategory2) {
|
|
@@ -38892,6 +38892,14 @@ var require_dist_DR1VmGz6 = __commonJS({
|
|
|
38892
38892
|
endMs: zod.z.number()
|
|
38893
38893
|
}),
|
|
38894
38894
|
/**
|
|
38895
|
+
* Distinct object classes attached to this visit (`person`, `car`, …),
|
|
38896
|
+
* dominant first, capped at {@link MAX_CLIP_LABELS}. The ribbon renders these
|
|
38897
|
+
* instead of the bare kind — "Object" tells the operator nothing a colour bar
|
|
38898
|
+
* did not. Absent (never empty) when the visit attached no classified object
|
|
38899
|
+
* event, so a motion/audio-only visit keeps its kind label.
|
|
38900
|
+
*/
|
|
38901
|
+
labels: zod.z.array(zod.z.string()).max(3).optional(),
|
|
38902
|
+
/**
|
|
38895
38903
|
* Lazy thumbnail URL, never inlined.
|
|
38896
38904
|
*
|
|
38897
38905
|
* Recording-derived clips (events-mode keep-window, and the prepared
|
|
@@ -56075,7 +56083,7 @@ var require_alerts_addon = __commonJS({
|
|
|
56075
56083
|
[Symbol.toStringTag]: { value: "Module" }
|
|
56076
56084
|
});
|
|
56077
56085
|
require_chunk_Cek0wNdY();
|
|
56078
|
-
var require_dist10 =
|
|
56086
|
+
var require_dist10 = require_dist_CB2eCKJb();
|
|
56079
56087
|
function selectExpired(alerts, cutoffMs) {
|
|
56080
56088
|
return alerts.filter((a) => a.createdAt < cutoffMs).sort((a, b) => a.createdAt - b.createdAt).map((a) => a.id);
|
|
56081
56089
|
}
|
|
@@ -56888,7 +56896,7 @@ var require_console_logging = __commonJS({
|
|
|
56888
56896
|
[Symbol.toStringTag]: { value: "Module" }
|
|
56889
56897
|
});
|
|
56890
56898
|
require_chunk_Cek0wNdY();
|
|
56891
|
-
var require_dist10 =
|
|
56899
|
+
var require_dist10 = require_dist_CB2eCKJb();
|
|
56892
56900
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
56893
56901
|
var LEVEL_RANK = {
|
|
56894
56902
|
debug: 0,
|
|
@@ -56982,7 +56990,7 @@ var require_core_blocks_addon = __commonJS({
|
|
|
56982
56990
|
"use strict";
|
|
56983
56991
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
56984
56992
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
56985
|
-
var require_dist10 =
|
|
56993
|
+
var require_dist10 = require_dist_CB2eCKJb();
|
|
56986
56994
|
var node_crypto = __require("crypto");
|
|
56987
56995
|
var node_fs_promises = __require("fs/promises");
|
|
56988
56996
|
node_fs_promises = require_chunk.__toESM(node_fs_promises);
|
|
@@ -59702,7 +59710,7 @@ var require_device_manager_addon = __commonJS({
|
|
|
59702
59710
|
[Symbol.toStringTag]: { value: "Module" }
|
|
59703
59711
|
});
|
|
59704
59712
|
require_chunk_Cek0wNdY();
|
|
59705
|
-
var require_dist10 =
|
|
59713
|
+
var require_dist10 = require_dist_CB2eCKJb();
|
|
59706
59714
|
var node_crypto = __require("crypto");
|
|
59707
59715
|
var _camstack_types_node = require_node();
|
|
59708
59716
|
var JOB_HISTORY = 20;
|
|
@@ -63690,7 +63698,7 @@ var require_hub_forwarder = __commonJS({
|
|
|
63690
63698
|
[Symbol.toStringTag]: { value: "Module" }
|
|
63691
63699
|
});
|
|
63692
63700
|
require_chunk_Cek0wNdY();
|
|
63693
|
-
var require_dist10 =
|
|
63701
|
+
var require_dist10 = require_dist_CB2eCKJb();
|
|
63694
63702
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
63695
63703
|
var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
|
|
63696
63704
|
var HubForwarderDestination = class {
|
|
@@ -63827,7 +63835,7 @@ var require_liveness_monitor_addon = __commonJS({
|
|
|
63827
63835
|
"use strict";
|
|
63828
63836
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
63829
63837
|
require_chunk_Cek0wNdY();
|
|
63830
|
-
var require_dist10 =
|
|
63838
|
+
var require_dist10 = require_dist_CB2eCKJb();
|
|
63831
63839
|
var NO_DEVICES = "liveness:no-devices";
|
|
63832
63840
|
var ALL_OFFLINE = "liveness:all-devices-offline";
|
|
63833
63841
|
var NO_FOOTAGE_PREFIX = "liveness:no-footage:";
|
|
@@ -64017,7 +64025,7 @@ var require_local_auth_addon = __commonJS({
|
|
|
64017
64025
|
[Symbol.toStringTag]: { value: "Module" }
|
|
64018
64026
|
});
|
|
64019
64027
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
64020
|
-
var require_dist10 =
|
|
64028
|
+
var require_dist10 = require_dist_CB2eCKJb();
|
|
64021
64029
|
var node_crypto = __require("crypto");
|
|
64022
64030
|
node_crypto = require_chunk.__toESM(node_crypto);
|
|
64023
64031
|
var crypto$1 = __require("crypto");
|
|
@@ -71701,7 +71709,7 @@ var require_loki_logging = __commonJS({
|
|
|
71701
71709
|
[Symbol.toStringTag]: { value: "Module" }
|
|
71702
71710
|
});
|
|
71703
71711
|
require_chunk_Cek0wNdY();
|
|
71704
|
-
var require_dist10 =
|
|
71712
|
+
var require_dist10 = require_dist_CB2eCKJb();
|
|
71705
71713
|
function sanitizeLabelName(raw) {
|
|
71706
71714
|
const replaced = raw.replaceAll(/[^a-zA-Z0-9_]/g, "_");
|
|
71707
71715
|
return /^[a-zA-Z_]/.test(replaced) ? replaced : `_${replaced}`;
|
|
@@ -72266,7 +72274,7 @@ var require_native_metrics_addon = __commonJS({
|
|
|
72266
72274
|
[Symbol.toStringTag]: { value: "Module" }
|
|
72267
72275
|
});
|
|
72268
72276
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
72269
|
-
var require_dist10 =
|
|
72277
|
+
var require_dist10 = require_dist_CB2eCKJb();
|
|
72270
72278
|
var node_child_process = __require("child_process");
|
|
72271
72279
|
var node_util = __require("util");
|
|
72272
72280
|
var node_os = __require("os");
|
|
@@ -73208,7 +73216,7 @@ var require_filesystem_storage_addon = __commonJS({
|
|
|
73208
73216
|
[Symbol.toStringTag]: { value: "Module" }
|
|
73209
73217
|
});
|
|
73210
73218
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
73211
|
-
var require_dist10 =
|
|
73219
|
+
var require_dist10 = require_dist_CB2eCKJb();
|
|
73212
73220
|
var node_crypto = __require("crypto");
|
|
73213
73221
|
var node_fs_promises = __require("fs/promises");
|
|
73214
73222
|
var node_path = __require("path");
|
|
@@ -74324,7 +74332,7 @@ var require_sqlite_settings_addon = __commonJS({
|
|
|
74324
74332
|
[Symbol.toStringTag]: { value: "Module" }
|
|
74325
74333
|
});
|
|
74326
74334
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
74327
|
-
var require_dist10 =
|
|
74335
|
+
var require_dist10 = require_dist_CB2eCKJb();
|
|
74328
74336
|
var node_crypto = __require("crypto");
|
|
74329
74337
|
var node_fs = __require("fs");
|
|
74330
74338
|
var node_module = __require("module");
|
|
@@ -75892,7 +75900,7 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
75892
75900
|
[Symbol.toStringTag]: { value: "Module" }
|
|
75893
75901
|
});
|
|
75894
75902
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
75895
|
-
var require_dist10 =
|
|
75903
|
+
var require_dist10 = require_dist_CB2eCKJb();
|
|
75896
75904
|
var node_crypto = __require("crypto");
|
|
75897
75905
|
var node_fs_promises = __require("fs/promises");
|
|
75898
75906
|
node_fs_promises = require_chunk.__toESM(node_fs_promises);
|
|
@@ -77771,7 +77779,7 @@ var require_system_config_addon = __commonJS({
|
|
|
77771
77779
|
[Symbol.toStringTag]: { value: "Module" }
|
|
77772
77780
|
});
|
|
77773
77781
|
require_chunk_Cek0wNdY();
|
|
77774
|
-
var require_dist10 =
|
|
77782
|
+
var require_dist10 = require_dist_CB2eCKJb();
|
|
77775
77783
|
var SECTION_TITLES = {
|
|
77776
77784
|
server: "Server",
|
|
77777
77785
|
auth: "Authentication"
|
|
@@ -95832,7 +95840,7 @@ var require_winston_logging = __commonJS({
|
|
|
95832
95840
|
[Symbol.toStringTag]: { value: "Module" }
|
|
95833
95841
|
});
|
|
95834
95842
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
95835
|
-
var require_dist10 =
|
|
95843
|
+
var require_dist10 = require_dist_CB2eCKJb();
|
|
95836
95844
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
95837
95845
|
var node_path = __require("path");
|
|
95838
95846
|
node_path = require_chunk.__toESM(node_path);
|
|
@@ -118081,7 +118089,7 @@ var require_dist3 = __commonJS({
|
|
|
118081
118089
|
"use strict";
|
|
118082
118090
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
118083
118091
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
118084
|
-
var require_dist10 =
|
|
118092
|
+
var require_dist10 = require_dist_CB2eCKJb();
|
|
118085
118093
|
var require_builtins_alerts_alerts_addon = require_alerts_addon();
|
|
118086
118094
|
require_alerts();
|
|
118087
118095
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
@@ -253369,6 +253377,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
253369
253377
|
}
|
|
253370
253378
|
};
|
|
253371
253379
|
var MAX_CLIP_EVENT_IDS = 24;
|
|
253380
|
+
var MAX_CLIP_LABELS = 3;
|
|
253372
253381
|
var ClipSchema = zod.z.object({
|
|
253373
253382
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
253374
253383
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -253386,6 +253395,14 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
253386
253395
|
endMs: zod.z.number()
|
|
253387
253396
|
}),
|
|
253388
253397
|
/**
|
|
253398
|
+
* Distinct object classes attached to this visit (`person`, `car`, …),
|
|
253399
|
+
* dominant first, capped at {@link MAX_CLIP_LABELS}. The ribbon renders these
|
|
253400
|
+
* instead of the bare kind — "Object" tells the operator nothing a colour bar
|
|
253401
|
+
* did not. Absent (never empty) when the visit attached no classified object
|
|
253402
|
+
* event, so a motion/audio-only visit keeps its kind label.
|
|
253403
|
+
*/
|
|
253404
|
+
labels: zod.z.array(zod.z.string()).max(3).optional(),
|
|
253405
|
+
/**
|
|
253389
253406
|
* Lazy thumbnail URL, never inlined.
|
|
253390
253407
|
*
|
|
253391
253408
|
* Recording-derived clips (events-mode keep-window, and the prepared
|
|
@@ -276274,6 +276291,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
276274
276291
|
exports.LoginStageEnum = LoginStageEnum;
|
|
276275
276292
|
exports.MACRO_LABELS = MACRO_LABELS;
|
|
276276
276293
|
exports.MAX_CLIP_EVENT_IDS = MAX_CLIP_EVENT_IDS;
|
|
276294
|
+
exports.MAX_CLIP_LABELS = MAX_CLIP_LABELS;
|
|
276277
276295
|
exports.MAX_CONDITION_DEPTH = MAX_CONDITION_DEPTH;
|
|
276278
276296
|
exports.MAX_CONDITION_LEAVES = MAX_CONDITION_LEAVES;
|
|
276279
276297
|
exports.MAX_EXPRESSION_AST_NODES = MAX_EXPRESSION_AST_NODES;
|
|
@@ -401020,6 +401038,52 @@ var require_boot_config = __commonJS({
|
|
|
401020
401038
|
}
|
|
401021
401039
|
});
|
|
401022
401040
|
|
|
401041
|
+
// ../../server/backend/dist/core/app-links/well-known-app-links.js
|
|
401042
|
+
var require_well_known_app_links = __commonJS({
|
|
401043
|
+
"../../server/backend/dist/core/app-links/well-known-app-links.js"(exports) {
|
|
401044
|
+
"use strict";
|
|
401045
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
401046
|
+
exports.buildAppLinkFiles = buildAppLinkFiles;
|
|
401047
|
+
exports.parseCertFingerprints = parseCertFingerprints;
|
|
401048
|
+
var APPLE_TEAM_ID = "C3F24V5NS5";
|
|
401049
|
+
var BUNDLE_ID = "com.apocaliss92.camstack";
|
|
401050
|
+
var BUNDLE_ID_DEV = "com.apocaliss92.camstack.dev";
|
|
401051
|
+
var VIEWER_COMPONENT = "/viewer/camstack/*";
|
|
401052
|
+
function buildAppLinkFiles(androidCertSha256) {
|
|
401053
|
+
const appIds = [`${APPLE_TEAM_ID}.${BUNDLE_ID}`, `${APPLE_TEAM_ID}.${BUNDLE_ID_DEV}`];
|
|
401054
|
+
return {
|
|
401055
|
+
appleAppSiteAssociation: {
|
|
401056
|
+
applinks: {
|
|
401057
|
+
apps: [],
|
|
401058
|
+
details: [
|
|
401059
|
+
{
|
|
401060
|
+
appIDs: appIds,
|
|
401061
|
+
components: [{ "/": VIEWER_COMPONENT, comment: "Viewer deep links" }]
|
|
401062
|
+
},
|
|
401063
|
+
// Legacy `paths` block for pre-iOS-13 parsers, as Zentik ships.
|
|
401064
|
+
{ appID: appIds[0], paths: [VIEWER_COMPONENT] }
|
|
401065
|
+
]
|
|
401066
|
+
},
|
|
401067
|
+
webcredentials: { apps: appIds }
|
|
401068
|
+
},
|
|
401069
|
+
assetLinks: [BUNDLE_ID, BUNDLE_ID_DEV].map((pkg) => ({
|
|
401070
|
+
relation: ["delegate_permission/common.handle_all_urls"],
|
|
401071
|
+
target: {
|
|
401072
|
+
namespace: "android_app",
|
|
401073
|
+
package_name: pkg,
|
|
401074
|
+
sha256_cert_fingerprints: [...androidCertSha256]
|
|
401075
|
+
}
|
|
401076
|
+
}))
|
|
401077
|
+
};
|
|
401078
|
+
}
|
|
401079
|
+
function parseCertFingerprints(raw) {
|
|
401080
|
+
if (raw === void 0)
|
|
401081
|
+
return [];
|
|
401082
|
+
return raw.split(",").map((s) => s.trim().toUpperCase()).filter((s) => /^[0-9A-F]{2}(:[0-9A-F]{2}){31}$/.test(s));
|
|
401083
|
+
}
|
|
401084
|
+
}
|
|
401085
|
+
});
|
|
401086
|
+
|
|
401023
401087
|
// ../../server/backend/dist/core/addon/addon-call-gateway.js
|
|
401024
401088
|
var require_addon_call_gateway = __commonJS({
|
|
401025
401089
|
"../../server/backend/dist/core/addon/addon-call-gateway.js"(exports) {
|
|
@@ -408288,6 +408352,7 @@ var require_main4 = __commonJS({
|
|
|
408288
408352
|
var integration_id_backfill_1 = require_integration_id_backfill();
|
|
408289
408353
|
var post_boot_service_1 = require_post_boot_service();
|
|
408290
408354
|
var addon_package_service_1 = require_addon_package_service();
|
|
408355
|
+
var well_known_app_links_1 = require_well_known_app_links();
|
|
408291
408356
|
var addon_registry_service_1 = require_addon_registry_service();
|
|
408292
408357
|
var addon_bridge_service_1 = require_addon_bridge_service();
|
|
408293
408358
|
var addon_pages_service_1 = require_addon_pages_service();
|
|
@@ -408984,6 +409049,14 @@ var require_main4 = __commonJS({
|
|
|
408984
409049
|
const adminUiState = { staticDir: null, indexPath: null };
|
|
408985
409050
|
const viewerUiState = { staticDir: null, indexPath: null };
|
|
408986
409051
|
const VIEWER_MOUNT = "/viewer/camstack";
|
|
409052
|
+
{
|
|
409053
|
+
const { appleAppSiteAssociation, assetLinks } = (0, well_known_app_links_1.buildAppLinkFiles)((0, well_known_app_links_1.parseCertFingerprints)(process.env["CAMSTACK_ANDROID_CERT_SHA256"]));
|
|
409054
|
+
const aasa = JSON.stringify(appleAppSiteAssociation);
|
|
409055
|
+
const assetlinks = JSON.stringify(assetLinks);
|
|
409056
|
+
fastify.get("/.well-known/apple-app-site-association", async (_request, reply) => reply.type("application/json").send(aasa));
|
|
409057
|
+
fastify.get("/apple-app-site-association", async (_request, reply) => reply.type("application/json").send(aasa));
|
|
409058
|
+
fastify.get("/.well-known/assetlinks.json", async (_request, reply) => reply.type("application/json").send(assetlinks));
|
|
409059
|
+
}
|
|
408987
409060
|
fastify.get("/viewer", async (_request, reply) => reply.redirect(`${VIEWER_MOUNT}/`));
|
|
408988
409061
|
fastify.get("/viewer/", async (_request, reply) => reply.redirect(`${VIEWER_MOUNT}/`));
|
|
408989
409062
|
fastify.get("/webrtc-test.html", async (_request, reply) => {
|