@trillboards/edge-sdk 0.2.4 → 0.2.6
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/README.md +4 -3
- package/deploy/docker/Dockerfile.cloud-sense +117 -0
- package/deploy/docker/Dockerfile.cpu +30 -21
- package/deploy/docker/Dockerfile.cuda +30 -21
- package/deploy/docker/Dockerfile.openvino +30 -20
- package/deploy/docker/README.md +9 -4
- package/deploy/docker/connector-entrypoint.sh +122 -0
- package/deploy/helm/README.md +1 -1
- package/deploy/k8s/daemonset.yaml +1 -1
- package/deploy/macos/README.md +161 -0
- package/deploy/macos/TrillboardsSetupApp.m +603 -0
- package/deploy/macos/build-macos-pkg.sh +588 -0
- package/deploy/macos/com.trillboards.edge.plist +62 -0
- package/deploy/macos/com.trillboards.litertlm.plist +45 -0
- package/deploy/macos/pair.command +519 -0
- package/deploy/macos/scripts/ensure-litertlm.sh +62 -0
- package/deploy/macos/scripts/postinstall +153 -0
- package/deploy/macos/scripts/setup-litertlm.sh +272 -0
- package/deploy/macos/test-install-pair.sh +383 -0
- package/deploy/macos/test-setup-litertlm-reinstall.sh +109 -0
- package/deploy/systemd/install.sh +25 -15
- package/deploy/systemd/trillboards-edge.service +4 -1
- package/deploy/windows/README.md +70 -0
- package/deploy/windows/build-windows.ps1 +225 -0
- package/deploy/windows/bundle-windows-installer.ps1 +153 -0
- package/deploy/windows/check-feeds.js +26 -0
- package/deploy/windows/e2e/fixtures/person.jpg +0 -0
- package/deploy/windows/e2e/test-local-sense.ps1 +185 -0
- package/deploy/windows/install-update.ps1 +101 -0
- package/deploy/windows/installer.nsi +138 -0
- package/deploy/windows/register-litertlm-task.ps1 +42 -0
- package/deploy/windows/register-task.ps1 +44 -0
- package/deploy/windows/run-connector.ps1 +69 -0
- package/deploy/windows/setup-litertlm.ps1 +361 -0
- package/deploy/windows/stop-existing.ps1 +72 -0
- package/deploy/windows/trillboards-edge-task.vbs +25 -0
- package/deploy/windows/trillboards-edge.cmd +33 -0
- package/deploy/windows/trillboards-pair.cmd +276 -0
- package/deploy/windows/trillboards-setup.ps1 +456 -0
- package/deploy/windows/trillboards-setup.vbs +13 -0
- package/dist/AudienceAnalyzeClient.d.ts +136 -0
- package/dist/AudienceAnalyzeClient.d.ts.map +1 -0
- package/dist/AudienceAnalyzeClient.js +246 -0
- package/dist/AudienceAnalyzeClient.js.map +1 -0
- package/dist/ChannelProber.d.ts +150 -0
- package/dist/ChannelProber.d.ts.map +1 -0
- package/dist/ChannelProber.js +887 -0
- package/dist/ChannelProber.js.map +1 -0
- package/dist/CloudEscalationPolicy.d.ts +143 -0
- package/dist/CloudEscalationPolicy.d.ts.map +1 -0
- package/dist/CloudEscalationPolicy.js +137 -0
- package/dist/CloudEscalationPolicy.js.map +1 -0
- package/dist/CloudSensingManager.d.ts +533 -0
- package/dist/CloudSensingManager.d.ts.map +1 -0
- package/dist/CloudSensingManager.js +1254 -0
- package/dist/CloudSensingManager.js.map +1 -0
- package/dist/DiscoveryReportClient.d.ts +66 -0
- package/dist/DiscoveryReportClient.d.ts.map +1 -0
- package/dist/DiscoveryReportClient.js +85 -0
- package/dist/DiscoveryReportClient.js.map +1 -0
- package/dist/EdgeAgent.d.ts +12 -2
- package/dist/EdgeAgent.d.ts.map +1 -1
- package/dist/EdgeAgent.js +55 -13
- package/dist/EdgeAgent.js.map +1 -1
- package/dist/LiteRtVlmProvider.d.ts +193 -0
- package/dist/LiteRtVlmProvider.d.ts.map +1 -0
- package/dist/LiteRtVlmProvider.js +436 -0
- package/dist/LiteRtVlmProvider.js.map +1 -0
- package/dist/MosaicSource.d.ts +108 -0
- package/dist/MosaicSource.d.ts.map +1 -0
- package/dist/MosaicSource.js +274 -0
- package/dist/MosaicSource.js.map +1 -0
- package/dist/OnvifClient.d.ts +83 -0
- package/dist/OnvifClient.d.ts.map +1 -0
- package/dist/OnvifClient.js +209 -0
- package/dist/OnvifClient.js.map +1 -0
- package/dist/PairClient.d.ts +106 -0
- package/dist/PairClient.d.ts.map +1 -0
- package/dist/PairClient.js +186 -0
- package/dist/PairClient.js.map +1 -0
- package/dist/RecorderAddressRecovery.d.ts +53 -0
- package/dist/RecorderAddressRecovery.d.ts.map +1 -0
- package/dist/RecorderAddressRecovery.js +359 -0
- package/dist/RecorderAddressRecovery.js.map +1 -0
- package/dist/SceneChangeDetector.d.ts +291 -0
- package/dist/SceneChangeDetector.d.ts.map +1 -0
- package/dist/SceneChangeDetector.js +682 -0
- package/dist/SceneChangeDetector.js.map +1 -0
- package/dist/SensingProfileClient.d.ts +59 -0
- package/dist/SensingProfileClient.d.ts.map +1 -0
- package/dist/SensingProfileClient.js +78 -0
- package/dist/SensingProfileClient.js.map +1 -0
- package/dist/SetupSessionClient.d.ts +114 -0
- package/dist/SetupSessionClient.d.ts.map +1 -0
- package/dist/SetupSessionClient.js +95 -0
- package/dist/SetupSessionClient.js.map +1 -0
- package/dist/VlmAdmissionGate.d.ts +126 -0
- package/dist/VlmAdmissionGate.d.ts.map +1 -0
- package/dist/VlmAdmissionGate.js +166 -0
- package/dist/VlmAdmissionGate.js.map +1 -0
- package/dist/autoSense.d.ts +216 -0
- package/dist/autoSense.d.ts.map +1 -0
- package/dist/autoSense.js +521 -0
- package/dist/autoSense.js.map +1 -0
- package/dist/cli.d.ts +27 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +511 -21
- package/dist/cli.js.map +1 -1
- package/dist/combinedSense.d.ts +128 -0
- package/dist/combinedSense.d.ts.map +1 -0
- package/dist/combinedSense.js +261 -0
- package/dist/combinedSense.js.map +1 -0
- package/dist/config.d.ts +351 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +99 -2
- package/dist/config.js.map +1 -1
- package/dist/connectorCadence.d.ts +135 -0
- package/dist/connectorCadence.d.ts.map +1 -0
- package/dist/connectorCadence.js +151 -0
- package/dist/connectorCadence.js.map +1 -0
- package/dist/dataDir.d.ts +33 -0
- package/dist/dataDir.d.ts.map +1 -0
- package/dist/dataDir.js +76 -0
- package/dist/dataDir.js.map +1 -0
- package/dist/deployedCadence.d.ts +167 -0
- package/dist/deployedCadence.d.ts.map +1 -0
- package/dist/deployedCadence.js +209 -0
- package/dist/deployedCadence.js.map +1 -0
- package/dist/deployedCadenceSource.d.ts +48 -0
- package/dist/deployedCadenceSource.d.ts.map +1 -0
- package/dist/deployedCadenceSource.js +74 -0
- package/dist/deployedCadenceSource.js.map +1 -0
- package/dist/diagnose.d.ts +1 -1
- package/dist/diagnose.d.ts.map +1 -1
- package/dist/diagnose.js +13 -12
- package/dist/diagnose.js.map +1 -1
- package/dist/discovery.d.ts +131 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +499 -0
- package/dist/discovery.js.map +1 -0
- package/dist/gemmaModelOta.d.ts +118 -0
- package/dist/gemmaModelOta.d.ts.map +1 -0
- package/dist/gemmaModelOta.js +291 -0
- package/dist/gemmaModelOta.js.map +1 -0
- package/dist/index.d.ts +16 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +40 -1
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +41 -18
- package/dist/init.js.map +1 -1
- package/dist/keepAwake.d.ts +33 -0
- package/dist/keepAwake.d.ts.map +1 -0
- package/dist/keepAwake.js +54 -0
- package/dist/keepAwake.js.map +1 -0
- package/dist/legacyRecorderProfile.d.ts +20 -0
- package/dist/legacyRecorderProfile.d.ts.map +1 -0
- package/dist/legacyRecorderProfile.js +27 -0
- package/dist/legacyRecorderProfile.js.map +1 -0
- package/dist/localInferenceSchema.d.ts +132 -0
- package/dist/localInferenceSchema.d.ts.map +1 -0
- package/dist/localInferenceSchema.js +274 -0
- package/dist/localInferenceSchema.js.map +1 -0
- package/dist/localSenseE2eHarness.d.ts +101 -0
- package/dist/localSenseE2eHarness.d.ts.map +1 -0
- package/dist/localSenseE2eHarness.js +279 -0
- package/dist/localSenseE2eHarness.js.map +1 -0
- package/dist/localSensing.d.ts +268 -0
- package/dist/localSensing.d.ts.map +1 -0
- package/dist/localSensing.js +492 -0
- package/dist/localSensing.js.map +1 -0
- package/dist/modelIntegrity.d.ts +59 -0
- package/dist/modelIntegrity.d.ts.map +1 -0
- package/dist/modelIntegrity.js +165 -0
- package/dist/modelIntegrity.js.map +1 -0
- package/dist/pairVerify.d.ts +100 -0
- package/dist/pairVerify.d.ts.map +1 -0
- package/dist/pairVerify.js +296 -0
- package/dist/pairVerify.js.map +1 -0
- package/dist/qrScanner.d.ts +33 -0
- package/dist/qrScanner.d.ts.map +1 -0
- package/dist/qrScanner.js +103 -0
- package/dist/qrScanner.js.map +1 -0
- package/dist/runtimePaths.d.ts +10 -0
- package/dist/runtimePaths.d.ts.map +1 -0
- package/dist/runtimePaths.js +79 -0
- package/dist/runtimePaths.js.map +1 -0
- package/dist/sensingRunMode.d.ts +68 -0
- package/dist/sensingRunMode.d.ts.map +1 -0
- package/dist/sensingRunMode.js +346 -0
- package/dist/sensingRunMode.js.map +1 -0
- package/dist/setupMode.d.ts +98 -0
- package/dist/setupMode.d.ts.map +1 -0
- package/dist/setupMode.js +828 -0
- package/dist/setupMode.js.map +1 -0
- package/dist/setupProgress.d.ts +31 -0
- package/dist/setupProgress.d.ts.map +1 -0
- package/dist/setupProgress.js +173 -0
- package/dist/setupProgress.js.map +1 -0
- package/package.json +13 -4
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* deployedCadence — reconcile the cadence the OPERATOR deployed with the one
|
|
4
|
+
* this machine can actually afford to run.
|
|
5
|
+
*
|
|
6
|
+
* ── The bug this exists to close ────────────────────────────────────────────
|
|
7
|
+
*
|
|
8
|
+
* `sensing_profiles.capture_interval_ms` is per-screen, is set from the portal,
|
|
9
|
+
* and IS served to the connector: `GET /v2/earner/cameras/sensing-profile`
|
|
10
|
+
* returns it on a 5-minute TTL. The connector then throws it away. It is parsed
|
|
11
|
+
* in `SensingProfileClient.fetchProfile()` and never read again — the local
|
|
12
|
+
* refresh consumes `profileName`, `profileType` and `fields` and drops
|
|
13
|
+
* `captureIntervalMs` on the floor, and the CLOUD path does not even construct a
|
|
14
|
+
* profile client. So a venue that sets "look every 10 seconds" in the portal
|
|
15
|
+
* gets 300 000 ms forever, and nothing anywhere says so.
|
|
16
|
+
*
|
|
17
|
+
* Worse, the ONLY other way in is one-shot: `mergeConfigFile` honours a cadence
|
|
18
|
+
* at SETUP time, writes it to `trillboards.config.json`, and
|
|
19
|
+
* `CloudSensingManager` freezes it at construction. Changing a deployed camera's
|
|
20
|
+
* cadence today means editing a file on the venue's machine and restarting the
|
|
21
|
+
* process.
|
|
22
|
+
*
|
|
23
|
+
* ── Why it is not simply "use what the profile says" ───────────────────────
|
|
24
|
+
*
|
|
25
|
+
* Because the two run modes are metered by completely different things, and
|
|
26
|
+
* neither of them is time.
|
|
27
|
+
*
|
|
28
|
+
* LOCAL is metered by a MACHINE. `litert-lm serve` is a single-conversation
|
|
29
|
+
* server with exactly one admission slot at a measured 7.30 s/frame, so the
|
|
30
|
+
* whole connector has a hard ceiling of 493 analyses/hour however many cameras
|
|
31
|
+
* it runs. That ceiling is what `connectorCadence.periodicIntervalMsForFeedCount`
|
|
32
|
+
* already computes, and it is why the profile's own 5-30 s values were rejected
|
|
33
|
+
* as a cadence source when that module was written: they are the ANDROID
|
|
34
|
+
* tablet's capture rate, where a frame costs a BlazeFace pass rather than a VLM
|
|
35
|
+
* generation, and feeding 5 s to a connector would demand 11 520 analyses/hour
|
|
36
|
+
* against a budget of 493.
|
|
37
|
+
*
|
|
38
|
+
* CLOUD is metered by MONEY, and this is the number nobody had:
|
|
39
|
+
*
|
|
40
|
+
* Measured on production 2026-08-12 — 255 812 image-bearing cloud VLM calls
|
|
41
|
+
* over 7 days, `gemini-3.1-flash-lite` via `audienceVisionService.analyzeFrame`
|
|
42
|
+
* — the mean cost of one analyzed frame is $0.007008 (p50 $0.006838, p90
|
|
43
|
+
* $0.008481; $1 790.92 of spend over the window). Per camera per 30-day month:
|
|
44
|
+
*
|
|
45
|
+
* cadence frames/mo $/camera/mo
|
|
46
|
+
* 300 s 8 640 60.55 <- today's silent default
|
|
47
|
+
* 120 s 21 600 151.37
|
|
48
|
+
* 60 s 43 200 302.75
|
|
49
|
+
* 30 s 86 400 605.49
|
|
50
|
+
*
|
|
51
|
+
* Against a $100-500 subscription. So "sensing within 30 seconds" is not a
|
|
52
|
+
* config default on the cloud path — it is a $605/camera/month line item, and
|
|
53
|
+
* a 16-camera store would be $9 688/month of COGS. The same 30 s cadence on
|
|
54
|
+
* the LOCAL path costs nothing per frame; it costs one machine.
|
|
55
|
+
*
|
|
56
|
+
* The honest resolution is therefore not to pick a number. It is to let the
|
|
57
|
+
* operator's request through, clamp it at the floor its OWN mode implies, and
|
|
58
|
+
* make the clamp legible — `resolve()` returns the reason and the projected
|
|
59
|
+
* bill, so `getSensingHealth()` can say "you asked for 30 s; running 303 s;
|
|
60
|
+
* cloud budget $60/camera/month" instead of silently sampling every 5 minutes.
|
|
61
|
+
*
|
|
62
|
+
* ── The default is deliberately a no-op ────────────────────────────────────
|
|
63
|
+
*
|
|
64
|
+
* `DEFAULT_CLOUD_MONTHLY_BUDGET_USD_PER_CAMERA` is 60, which at the measured
|
|
65
|
+
* price is a 302 746 ms floor — within 1% of the 300 000 ms every cloud
|
|
66
|
+
* connector already runs. Fixing the wire therefore cannot change anybody's
|
|
67
|
+
* bill: it changes who is ALLOWED to change it, and makes buying a faster
|
|
68
|
+
* cadence an explicit purchase instead of an invisible one.
|
|
69
|
+
*/
|
|
70
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
71
|
+
exports.MAX_CADENCE_MS = exports.MONTH_MS = exports.DEFAULT_CLOUD_MONTHLY_BUDGET_USD_PER_CAMERA = exports.MEASURED_CLOUD_USD_PER_FRAME = void 0;
|
|
72
|
+
exports.cloudFloorMsForBudget = cloudFloorMsForBudget;
|
|
73
|
+
exports.monthlyUsdPerCamera = monthlyUsdPerCamera;
|
|
74
|
+
exports.resolveDeployedCadence = resolveDeployedCadence;
|
|
75
|
+
const connectorCadence_1 = require("./connectorCadence");
|
|
76
|
+
/**
|
|
77
|
+
* Mean USD per analyzed frame on the cloud VLM path. MEASURED, not listed:
|
|
78
|
+
* 255,812 successful image-bearing `vision_call_log` rows over the 7 days ending
|
|
79
|
+
* 2026-08-12. Re-measure with:
|
|
80
|
+
*
|
|
81
|
+
* SELECT avg(cost_usd) FROM vision_call_log
|
|
82
|
+
* WHERE called_at >= now() - interval '7 days'
|
|
83
|
+
* AND success AND image_s3_key IS NOT NULL;
|
|
84
|
+
*
|
|
85
|
+
* and update this when the model tier or the profile schema size changes — a
|
|
86
|
+
* bigger response schema moves it (per-screen means ranged $0.0054-$0.0158 over
|
|
87
|
+
* the same window, tracking prompt size).
|
|
88
|
+
*/
|
|
89
|
+
exports.MEASURED_CLOUD_USD_PER_FRAME = 0.007008;
|
|
90
|
+
/**
|
|
91
|
+
* Cloud spend per camera per month the connector may commit to WITHOUT the
|
|
92
|
+
* operator raising it. 60 USD is today's actual spend at the 300 s default, so
|
|
93
|
+
* this default changes no bill; it exists so that going faster is a decision
|
|
94
|
+
* somebody makes rather than a constant somebody edits.
|
|
95
|
+
*/
|
|
96
|
+
exports.DEFAULT_CLOUD_MONTHLY_BUDGET_USD_PER_CAMERA = 60;
|
|
97
|
+
/** A 30-day month, in ms — the unit the budget is quoted in. */
|
|
98
|
+
exports.MONTH_MS = 30 * 24 * 3600 * 1000;
|
|
99
|
+
/**
|
|
100
|
+
* The SLOWEST cadence a deployed profile may put on a running connector.
|
|
101
|
+
*
|
|
102
|
+
* This is not a taste bound, it is a MECHANISM bound. The cadence becomes the
|
|
103
|
+
* `setTimeout` delay of every capture loop, and Node's delay is a 32-bit signed
|
|
104
|
+
* int: 2 147 483 648 ms does not wrap to "a long time", it SILENTLY becomes 1 ms
|
|
105
|
+
* and fires on the next tick. So the one input the server controls end-to-end —
|
|
106
|
+
* `sensing_profiles.capture_interval_ms`, a plain integer column with no CHECK —
|
|
107
|
+
* inverts into its exact opposite: a row that reads "look once every 25 days"
|
|
108
|
+
* turns the connector into a hot loop that pulls every camera as fast as ffmpeg
|
|
109
|
+
* can decode. Measured through the real manager: 91 RTSP grabs in 120 ms of wall
|
|
110
|
+
* clock, i.e. ~750 frames/second per feed, which on the cloud path is the whole
|
|
111
|
+
* $60/camera/month budget in about eleven seconds.
|
|
112
|
+
*
|
|
113
|
+
* Nothing upstream stops it. `resolveDeployedCadence` clamped only the FLOOR
|
|
114
|
+
* (going too fast costs money), so every value above the floor was passed
|
|
115
|
+
* through verbatim — including `Number.MAX_SAFE_INTEGER`. A units mistake (s vs
|
|
116
|
+
* ms, ms vs ns), a bad migration, or a fat-fingered portal field is enough.
|
|
117
|
+
*
|
|
118
|
+
* 24 h is the ceiling because a sensing cadence slower than a day is not a
|
|
119
|
+
* cadence anybody deploys on purpose, and it is two orders of magnitude inside
|
|
120
|
+
* the overflow. It is REPORTED (`reason: 'cadence_ceiling'`) rather than
|
|
121
|
+
* silently applied, so a nonsense row shows up as a nonsense row.
|
|
122
|
+
*/
|
|
123
|
+
exports.MAX_CADENCE_MS = 24 * 3600 * 1000;
|
|
124
|
+
/**
|
|
125
|
+
* The fastest cloud cadence that keeps ONE camera inside `budgetUsd` per month
|
|
126
|
+
* at `usdPerFrame`.
|
|
127
|
+
*/
|
|
128
|
+
function cloudFloorMsForBudget(budgetUsd = exports.DEFAULT_CLOUD_MONTHLY_BUDGET_USD_PER_CAMERA, usdPerFrame = exports.MEASURED_CLOUD_USD_PER_FRAME) {
|
|
129
|
+
const budget = Number(budgetUsd);
|
|
130
|
+
const price = Number(usdPerFrame);
|
|
131
|
+
if (!Number.isFinite(budget) || budget <= 0 || !Number.isFinite(price) || price <= 0) {
|
|
132
|
+
// An unusable budget must not read as "unlimited" — fall back to the
|
|
133
|
+
// observed default cadence rather than opening the tap.
|
|
134
|
+
return connectorCadence_1.DOOH_PERIODIC_MS;
|
|
135
|
+
}
|
|
136
|
+
const framesPerMonth = budget / price;
|
|
137
|
+
return Math.ceil(exports.MONTH_MS / framesPerMonth);
|
|
138
|
+
}
|
|
139
|
+
/** Projected cloud spend for one camera at `intervalMs`. */
|
|
140
|
+
function monthlyUsdPerCamera(intervalMs, usdPerFrame = exports.MEASURED_CLOUD_USD_PER_FRAME) {
|
|
141
|
+
const ms = Number(intervalMs);
|
|
142
|
+
if (!Number.isFinite(ms) || ms <= 0)
|
|
143
|
+
return 0;
|
|
144
|
+
return (exports.MONTH_MS / ms) * usdPerFrame;
|
|
145
|
+
}
|
|
146
|
+
/** Normalize a server-reported cadence; anything unusable is "no request". */
|
|
147
|
+
function normalizeRequest(value) {
|
|
148
|
+
const n = Number(value);
|
|
149
|
+
if (!Number.isFinite(n) || n <= 0)
|
|
150
|
+
return null;
|
|
151
|
+
return Math.trunc(n);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Reconcile a deployed cadence with what this mode can afford.
|
|
155
|
+
*
|
|
156
|
+
* Returns `intervalMs: null` when the profile requested nothing — the caller
|
|
157
|
+
* MUST then leave its current cadence alone, so a connector whose server says
|
|
158
|
+
* nothing behaves exactly as it does today.
|
|
159
|
+
*/
|
|
160
|
+
function resolveDeployedCadence(input) {
|
|
161
|
+
const requestedMs = normalizeRequest(input.requestedMs);
|
|
162
|
+
const isCloud = input.mode === 'cloud';
|
|
163
|
+
const floorMs = isCloud
|
|
164
|
+
? cloudFloorMsForBudget(input.monthlyBudgetUsdPerCamera ?? exports.DEFAULT_CLOUD_MONTHLY_BUDGET_USD_PER_CAMERA, input.usdPerFrame ?? exports.MEASURED_CLOUD_USD_PER_FRAME)
|
|
165
|
+
// Local's floor is the machine's own ceiling, already derived and already
|
|
166
|
+
// measured. periodicIntervalMsForFeedCount returns null on a bad count; a
|
|
167
|
+
// connector with no countable feeds gets the DOOH default rather than a
|
|
168
|
+
// cadence derived from nothing.
|
|
169
|
+
: ((0, connectorCadence_1.periodicIntervalMsForFeedCount)(input.feedCount) ?? connectorCadence_1.DOOH_PERIODIC_MS);
|
|
170
|
+
// A cadence finer than the LOOK interval cannot be delivered by a loop that
|
|
171
|
+
// only looks that often, so it is a floor in every mode. The ceiling wins over
|
|
172
|
+
// the floor: a floor slower than a whole day comes from an unusable budget,
|
|
173
|
+
// and honouring it would hand a capture loop a delay it cannot express (see
|
|
174
|
+
// MAX_CADENCE_MS) — the one clamp that must never be negotiable.
|
|
175
|
+
const effectiveFloor = Math.min(exports.MAX_CADENCE_MS, Math.max(floorMs, connectorCadence_1.LOOK_INTERVAL_MS));
|
|
176
|
+
if (requestedMs === null) {
|
|
177
|
+
return {
|
|
178
|
+
intervalMs: null,
|
|
179
|
+
requestedMs: null,
|
|
180
|
+
floorMs: effectiveFloor,
|
|
181
|
+
ceilingMs: exports.MAX_CADENCE_MS,
|
|
182
|
+
clamped: false,
|
|
183
|
+
reason: 'no_request',
|
|
184
|
+
estimatedMonthlyUsdPerCamera: null,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
const intervalMs = Math.min(exports.MAX_CADENCE_MS, Math.max(requestedMs, effectiveFloor));
|
|
188
|
+
const clamped = intervalMs !== requestedMs;
|
|
189
|
+
let reason = 'operator_request';
|
|
190
|
+
if (intervalMs < requestedMs) {
|
|
191
|
+
reason = 'cadence_ceiling';
|
|
192
|
+
}
|
|
193
|
+
else if (clamped) {
|
|
194
|
+
if (effectiveFloor === connectorCadence_1.LOOK_INTERVAL_MS && floorMs <= connectorCadence_1.LOOK_INTERVAL_MS)
|
|
195
|
+
reason = 'look_interval';
|
|
196
|
+
else
|
|
197
|
+
reason = isCloud ? 'cloud_cost_budget' : 'local_inference_budget';
|
|
198
|
+
}
|
|
199
|
+
return {
|
|
200
|
+
intervalMs,
|
|
201
|
+
requestedMs,
|
|
202
|
+
floorMs: effectiveFloor,
|
|
203
|
+
ceilingMs: exports.MAX_CADENCE_MS,
|
|
204
|
+
clamped,
|
|
205
|
+
reason,
|
|
206
|
+
estimatedMonthlyUsdPerCamera: isCloud ? monthlyUsdPerCamera(intervalMs, input.usdPerFrame) : null,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=deployedCadence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployedCadence.js","sourceRoot":"","sources":["../src/deployedCadence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* deployedCadenceSource — the wire that was never connected.
|
|
3
|
+
*
|
|
4
|
+
* `GET /v2/earner/cameras/sensing-profile` has always returned
|
|
5
|
+
* `captureIntervalMs`, and `SensingProfileClient` has always parsed it. Nothing
|
|
6
|
+
* has ever read it: the local refresh consumes `profileName` / `profileType` /
|
|
7
|
+
* `fields` and drops the cadence, and the cloud path never even built a profile
|
|
8
|
+
* client. This module is the missing consumer.
|
|
9
|
+
*
|
|
10
|
+
* ── One connector, N screens, one loop cadence ─────────────────────────────
|
|
11
|
+
*
|
|
12
|
+
* A profile is per-SCREEN and a connector runs N feeds, but `CloudSensingManager`
|
|
13
|
+
* has ONE still-scene cadence for all its loops. So N requests have to become
|
|
14
|
+
* one number, and the rule is the FASTEST wins: an operator who set 10 s on the
|
|
15
|
+
* register and left the stockroom at 300 s asked to be told about the register
|
|
16
|
+
* every 10 s, and honouring the slowest would silently discard the only request
|
|
17
|
+
* they actually cared about. Going faster than a feed asked for costs an extra
|
|
18
|
+
* look on that feed; going slower misses the event the operator configured.
|
|
19
|
+
*
|
|
20
|
+
* The affordability clamp then applies per mode — see deployedCadence, which
|
|
21
|
+
* owns the cloud spend arithmetic and the local single-slot ceiling.
|
|
22
|
+
*
|
|
23
|
+
* ── Failure is silence, not a reset ────────────────────────────────────────
|
|
24
|
+
*
|
|
25
|
+
* Every fetch is best-effort and a total failure returns null, which the manager
|
|
26
|
+
* treats as "keep what you have". A connector that snapped back to a default
|
|
27
|
+
* every time the API blipped would be worse than one that is briefly stale, and
|
|
28
|
+
* on this path "briefly stale" costs nothing.
|
|
29
|
+
*/
|
|
30
|
+
import type { CadenceSource } from './CloudSensingManager';
|
|
31
|
+
import type { SensingProfileClient } from './SensingProfileClient';
|
|
32
|
+
import { type SensingRunModeName } from './deployedCadence';
|
|
33
|
+
export interface DeployedCadenceSourceOptions {
|
|
34
|
+
/** One profile client per feed — each feed's device token binds to its screen. */
|
|
35
|
+
profileClients: SensingProfileClient[];
|
|
36
|
+
mode: SensingRunModeName;
|
|
37
|
+
/** Total feeds this connector runs (drives the LOCAL single-slot floor). */
|
|
38
|
+
feedCount: number;
|
|
39
|
+
/** Cloud spend ceiling per camera per month. Default 60 (today's actual spend). */
|
|
40
|
+
monthlyBudgetUsdPerCamera?: number;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Build the connector's cadence source. Returns `undefined` when there are no
|
|
44
|
+
* profile clients to ask, so the manager keeps its constructor cadence and
|
|
45
|
+
* nothing about today's behavior changes.
|
|
46
|
+
*/
|
|
47
|
+
export declare function buildDeployedCadenceSource(options: DeployedCadenceSourceOptions): CadenceSource | undefined;
|
|
48
|
+
//# sourceMappingURL=deployedCadenceSource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployedCadenceSource.d.ts","sourceRoot":"","sources":["../src/deployedCadenceSource.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,4BAA4B;IAC3C,kFAAkF;IAClF,cAAc,EAAE,oBAAoB,EAAE,CAAC;IACvC,IAAI,EAAE,kBAAkB,CAAC;IACzB,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;IAClB,mFAAmF;IACnF,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACpC;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,4BAA4B,GACpC,aAAa,GAAG,SAAS,CAoC3B"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* deployedCadenceSource — the wire that was never connected.
|
|
4
|
+
*
|
|
5
|
+
* `GET /v2/earner/cameras/sensing-profile` has always returned
|
|
6
|
+
* `captureIntervalMs`, and `SensingProfileClient` has always parsed it. Nothing
|
|
7
|
+
* has ever read it: the local refresh consumes `profileName` / `profileType` /
|
|
8
|
+
* `fields` and drops the cadence, and the cloud path never even built a profile
|
|
9
|
+
* client. This module is the missing consumer.
|
|
10
|
+
*
|
|
11
|
+
* ── One connector, N screens, one loop cadence ─────────────────────────────
|
|
12
|
+
*
|
|
13
|
+
* A profile is per-SCREEN and a connector runs N feeds, but `CloudSensingManager`
|
|
14
|
+
* has ONE still-scene cadence for all its loops. So N requests have to become
|
|
15
|
+
* one number, and the rule is the FASTEST wins: an operator who set 10 s on the
|
|
16
|
+
* register and left the stockroom at 300 s asked to be told about the register
|
|
17
|
+
* every 10 s, and honouring the slowest would silently discard the only request
|
|
18
|
+
* they actually cared about. Going faster than a feed asked for costs an extra
|
|
19
|
+
* look on that feed; going slower misses the event the operator configured.
|
|
20
|
+
*
|
|
21
|
+
* The affordability clamp then applies per mode — see deployedCadence, which
|
|
22
|
+
* owns the cloud spend arithmetic and the local single-slot ceiling.
|
|
23
|
+
*
|
|
24
|
+
* ── Failure is silence, not a reset ────────────────────────────────────────
|
|
25
|
+
*
|
|
26
|
+
* Every fetch is best-effort and a total failure returns null, which the manager
|
|
27
|
+
* treats as "keep what you have". A connector that snapped back to a default
|
|
28
|
+
* every time the API blipped would be worse than one that is briefly stale, and
|
|
29
|
+
* on this path "briefly stale" costs nothing.
|
|
30
|
+
*/
|
|
31
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
+
exports.buildDeployedCadenceSource = buildDeployedCadenceSource;
|
|
33
|
+
const deployedCadence_1 = require("./deployedCadence");
|
|
34
|
+
/**
|
|
35
|
+
* Build the connector's cadence source. Returns `undefined` when there are no
|
|
36
|
+
* profile clients to ask, so the manager keeps its constructor cadence and
|
|
37
|
+
* nothing about today's behavior changes.
|
|
38
|
+
*/
|
|
39
|
+
function buildDeployedCadenceSource(options) {
|
|
40
|
+
const clients = (options.profileClients || []).filter(Boolean);
|
|
41
|
+
if (clients.length === 0)
|
|
42
|
+
return undefined;
|
|
43
|
+
return {
|
|
44
|
+
async resolve() {
|
|
45
|
+
const results = await Promise.all(clients.map((c) => c.fetchProfile().catch(() => null)));
|
|
46
|
+
// The fastest request across the connector's screens. A screen whose
|
|
47
|
+
// profile reports nothing simply does not vote.
|
|
48
|
+
let fastest = null;
|
|
49
|
+
let anyAnswered = false;
|
|
50
|
+
for (const profile of results) {
|
|
51
|
+
if (!profile)
|
|
52
|
+
continue;
|
|
53
|
+
anyAnswered = true;
|
|
54
|
+
const ms = profile.captureIntervalMs;
|
|
55
|
+
if (typeof ms !== 'number' || !Number.isFinite(ms) || ms <= 0)
|
|
56
|
+
continue;
|
|
57
|
+
if (fastest === null || ms < fastest)
|
|
58
|
+
fastest = ms;
|
|
59
|
+
}
|
|
60
|
+
// Nobody answered at all — the API is down or unreachable. Distinguish
|
|
61
|
+
// that from "answered, asked for nothing": the first must not touch the
|
|
62
|
+
// running cadence, and returning null is how the manager is told so.
|
|
63
|
+
if (!anyAnswered)
|
|
64
|
+
return null;
|
|
65
|
+
return (0, deployedCadence_1.resolveDeployedCadence)({
|
|
66
|
+
requestedMs: fastest,
|
|
67
|
+
mode: options.mode,
|
|
68
|
+
feedCount: options.feedCount,
|
|
69
|
+
monthlyBudgetUsdPerCamera: options.monthlyBudgetUsdPerCamera ?? deployedCadence_1.DEFAULT_CLOUD_MONTHLY_BUDGET_USD_PER_CAMERA,
|
|
70
|
+
});
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=deployedCadenceSource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployedCadenceSource.js","sourceRoot":"","sources":["../src/deployedCadenceSource.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;;AA0BH,gEAsCC;AA5DD,uDAK2B;AAY3B;;;;GAIG;AACH,SAAgB,0BAA0B,CACxC,OAAqC;IAErC,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAE3C,OAAO;QACL,KAAK,CAAC,OAAO;YACX,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CACvD,CAAC;YAEF,qEAAqE;YACrE,gDAAgD;YAChD,IAAI,OAAO,GAAkB,IAAI,CAAC;YAClC,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE,CAAC;gBAC9B,IAAI,CAAC,OAAO;oBAAE,SAAS;gBACvB,WAAW,GAAG,IAAI,CAAC;gBACnB,MAAM,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;gBACrC,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;oBAAE,SAAS;gBACxE,IAAI,OAAO,KAAK,IAAI,IAAI,EAAE,GAAG,OAAO;oBAAE,OAAO,GAAG,EAAE,CAAC;YACrD,CAAC;YAED,uEAAuE;YACvE,wEAAwE;YACxE,qEAAqE;YACrE,IAAI,CAAC,WAAW;gBAAE,OAAO,IAAI,CAAC;YAE9B,OAAO,IAAA,wCAAsB,EAAC;gBAC5B,WAAW,EAAE,OAAO;gBACpB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,yBAAyB,EACvB,OAAO,CAAC,yBAAyB,IAAI,6DAA2C;aACnF,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/diagnose.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ export interface DiagnosticReport {
|
|
|
21
21
|
warnings: number;
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
|
-
declare const SDK_VERSION = "0.2.
|
|
24
|
+
declare const SDK_VERSION = "0.2.6";
|
|
25
25
|
declare function checkNodeVersion(): CheckResult;
|
|
26
26
|
declare function checkPlatform(): CheckResult;
|
|
27
27
|
declare function checkMemory(): CheckResult;
|
package/dist/diagnose.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnose.d.ts","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"diagnose.d.ts","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":"AAYA,gDAAgD;AAChD,KAAK,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAE5C,sDAAsD;AACtD,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,uEAAuE;AACvE,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/D;AAMD,QAAA,MAAM,WAAW,UAAU,CAAC;AAgC5B,iBAAS,gBAAgB,IAAI,WAAW,CA2BvC;AAED,iBAAS,aAAa,IAAI,WAAW,CASpC;AAED,iBAAS,WAAW,IAAI,WAAW,CA6BlC;AAED,iBAAS,QAAQ,IAAI,WAAW,CAmB/B;AAED,iBAAS,cAAc,IAAI,WAAW,CA2CrC;AAED;;;GAGG;AACH,iBAAS,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKpD;AA+CD,iBAAS,WAAW,IAAI,WAAW,CAkClC;AAED,iBAAS,eAAe,IAAI,WAAW,CA6CtC;AAED,iBAAS,oBAAoB,IAAI,OAAO,CAAC,WAAW,CAAC,CAoDpD;AAED,iBAAS,QAAQ,IAAI,WAAW,CAgE/B;AAED,iBAAS,uBAAuB,IAAI,OAAO,CAAC,WAAW,CAAC,CAuCvD;AAMD;;GAEG;AACH,iBAAe,kBAAkB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAyE7D;AAED;;;;GAIG;AACH,iBAAS,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAkC3D;AAMD,iBAAS,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAwC3D;AAMD;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAW/D;AAMD,OAAO,EACL,gBAAgB,IAAI,iBAAiB,EACrC,aAAa,IAAI,cAAc,EAC/B,WAAW,IAAI,YAAY,EAC3B,QAAQ,IAAI,SAAS,EACrB,cAAc,IAAI,eAAe,EACjC,WAAW,IAAI,YAAY,EAC3B,eAAe,IAAI,gBAAgB,EACnC,oBAAoB,IAAI,qBAAqB,EAC7C,QAAQ,IAAI,SAAS,EACrB,uBAAuB,IAAI,wBAAwB,EACnD,kBAAkB,IAAI,mBAAmB,EACzC,aAAa,IAAI,cAAc,EAC/B,iBAAiB,IAAI,kBAAkB,EACvC,WAAW,IAAI,YAAY,EAC3B,gBAAgB,IAAI,iBAAiB,GACtC,CAAC"}
|
package/dist/diagnose.js
CHANGED
|
@@ -55,10 +55,11 @@ const path = __importStar(require("path"));
|
|
|
55
55
|
const net = __importStar(require("net"));
|
|
56
56
|
const https = __importStar(require("https"));
|
|
57
57
|
const child_process_1 = require("child_process");
|
|
58
|
+
const modelIntegrity_1 = require("./modelIntegrity");
|
|
58
59
|
// ---------------------------------------------------------------------------
|
|
59
60
|
// SDK version — mirrors package.json; kept in sync by CI
|
|
60
61
|
// ---------------------------------------------------------------------------
|
|
61
|
-
const SDK_VERSION = '0.2.
|
|
62
|
+
const SDK_VERSION = '0.2.6';
|
|
62
63
|
exports._SDK_VERSION = SDK_VERSION;
|
|
63
64
|
// ---------------------------------------------------------------------------
|
|
64
65
|
// ANSI helpers (no external deps)
|
|
@@ -306,18 +307,18 @@ function checkONNXModels() {
|
|
|
306
307
|
missing.push(name);
|
|
307
308
|
continue;
|
|
308
309
|
}
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
}
|
|
310
|
+
// Present-and-nonempty is not "a model". models.trillboards.com answers
|
|
311
|
+
// every path with the marketing SPA's index.html — HTTP 200, 2490 bytes —
|
|
312
|
+
// so a `size === 0` check reported `blazeface.onnx (0.0 MB)` as a PASS while
|
|
313
|
+
// onnxruntime threw `Protobuf parsing failed` on the same bytes at runtime.
|
|
314
|
+
// An operator reading a green diagnose has no way to find that.
|
|
315
|
+
const integrity = (0, modelIntegrity_1.inspectModelFile)(filePath);
|
|
316
|
+
if (!integrity.valid) {
|
|
317
|
+
missing.push(`${name} (${integrity.reason ?? 'not a valid ONNX model'})`);
|
|
318
318
|
}
|
|
319
|
-
|
|
320
|
-
|
|
319
|
+
else {
|
|
320
|
+
const sizeMB = ((integrity.bytes ?? 0) / (1024 ** 2)).toFixed(1);
|
|
321
|
+
found.push(`${name} (${sizeMB} MB)`);
|
|
321
322
|
}
|
|
322
323
|
}
|
|
323
324
|
if (missing.length > 0) {
|
package/dist/diagnose.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/** The IP-camera brands we ship an RTSP-path preset for (mirrors the portal). */
|
|
2
|
+
export type DiscoverBrand = 'hikvision' | 'dahua' | 'amcrest' | 'amcrest-recorder' | 'reolink' | 'honeywell' | 'generic';
|
|
3
|
+
export interface DiscoveredCamera {
|
|
4
|
+
/** Human label, e.g. "Channel 3". */
|
|
5
|
+
name: string;
|
|
6
|
+
/** Full rtsp:// URL (credentials embedded when provided). */
|
|
7
|
+
rtspUrl: string;
|
|
8
|
+
/** Deterministic idempotency hint for register (stable across re-discovery). */
|
|
9
|
+
cameraKey: string;
|
|
10
|
+
/** How it was found. */
|
|
11
|
+
source: 'onvif' | 'channel-range';
|
|
12
|
+
host?: string;
|
|
13
|
+
channel?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface OnvifHost {
|
|
16
|
+
/** Device IP parsed from the advertised XAddrs service URL. */
|
|
17
|
+
host: string;
|
|
18
|
+
/** The onvif device-service URL(s) the camera advertised. */
|
|
19
|
+
xaddrs: string[];
|
|
20
|
+
/** Raw ONVIF scopes (vendor / name / hardware / location hints). */
|
|
21
|
+
scopes: string[];
|
|
22
|
+
/** Best-effort friendly name parsed from the scopes (onvif://.../name/...). */
|
|
23
|
+
name?: string;
|
|
24
|
+
}
|
|
25
|
+
/** Hard ceiling — matches the backend provisioning cap (≤64 cameras/register). */
|
|
26
|
+
export declare const MAX_CHANNELS = 64;
|
|
27
|
+
export interface ChannelRtspParts {
|
|
28
|
+
brand: DiscoverBrand;
|
|
29
|
+
host: string;
|
|
30
|
+
port?: number | string;
|
|
31
|
+
username?: string;
|
|
32
|
+
password?: string;
|
|
33
|
+
channel?: number | string;
|
|
34
|
+
/** Stream path for the "generic" brand (branded presets encode their own). */
|
|
35
|
+
path?: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Build one channel's RTSP URL. Vendor paths are byte-identical to the portal's
|
|
39
|
+
* buildRtspUrl so the same NVR yields the same URLs on both surfaces.
|
|
40
|
+
*/
|
|
41
|
+
export declare function buildChannelRtspUrl({ brand, host, port, username, password, channel, path, }: ChannelRtspParts): string;
|
|
42
|
+
export interface ChannelRangeOptions {
|
|
43
|
+
brand: DiscoverBrand;
|
|
44
|
+
host: string;
|
|
45
|
+
count: number;
|
|
46
|
+
startChannel?: number;
|
|
47
|
+
port?: number | string;
|
|
48
|
+
username?: string;
|
|
49
|
+
password?: string;
|
|
50
|
+
/** generic-brand stream-path template; `{ch}` is replaced with the channel. */
|
|
51
|
+
path?: string;
|
|
52
|
+
namePrefix?: string;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Expand an NVR's base connection into one DiscoveredCamera per channel. Caps at
|
|
56
|
+
* MAX_CHANNELS; returns [] for count<=0. Branded presets bake the channel into
|
|
57
|
+
* the path; "generic" uses the `{ch}` template.
|
|
58
|
+
*/
|
|
59
|
+
export declare function expandChannelRange(opts: ChannelRangeOptions): DiscoveredCamera[];
|
|
60
|
+
/**
|
|
61
|
+
* Generic NVRs need a per-channel path template (`{ch}`) so each channel yields a
|
|
62
|
+
* DISTINCT URL — without it, multi-channel generic expansion produces N identical
|
|
63
|
+
* `rtsp://host:port/` feeds (duplicate/invalid). Returns true when generic
|
|
64
|
+
* channel-range expansion must be blocked. (Branded presets bake the channel into
|
|
65
|
+
* their path, so they never need this.)
|
|
66
|
+
*/
|
|
67
|
+
export declare function genericChannelRangeNeedsPath(brand: DiscoverBrand, count: number, path?: string): boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Parse ONVIF WS-Discovery ProbeMatch datagrams into hosts. Namespace-agnostic
|
|
70
|
+
* (vendors use d:/wsdd:/default prefixes) — matches local element names. Pure:
|
|
71
|
+
* feed it captured datagrams, no network. Responders are deduped by IP.
|
|
72
|
+
*/
|
|
73
|
+
export declare function parseProbeMatches(xmls: string[]): OnvifHost[];
|
|
74
|
+
/** Standard ONVIF WS-Discovery Probe envelope (NetworkVideoTransmitter). */
|
|
75
|
+
export declare function buildProbeMessage(messageId: string): string;
|
|
76
|
+
export interface OnvifDiscoveryOptions {
|
|
77
|
+
timeoutMs?: number;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Send a WS-Discovery Probe and collect ONVIF responders for `timeoutMs`. Never
|
|
81
|
+
* rejects — a socket error or no responders resolves to whatever was collected
|
|
82
|
+
* (often []), so the CLI can always print a friendly fallback. Clamped 1–30s.
|
|
83
|
+
*/
|
|
84
|
+
export declare function discoverOnvifHosts(opts?: OnvifDiscoveryOptions): Promise<OnvifHost[]>;
|
|
85
|
+
/** Mask the password segment of an rtsp://user:pass@host URL for display. */
|
|
86
|
+
export declare function maskRtspUrl(url: string): string;
|
|
87
|
+
/** Numbered, password-masked one-line-per-feed list for the CLI. */
|
|
88
|
+
export declare function formatCamerasTable(cameras: DiscoveredCamera[]): string;
|
|
89
|
+
/**
|
|
90
|
+
* CLI entrypoint for `trillboards-edge discover` (lazy-loaded from cli.ts).
|
|
91
|
+
*
|
|
92
|
+
* discover ONVIF LAN scan (list IPs)
|
|
93
|
+
* discover --nvr <ip> --brand hikvision --channels 8 expand an NVR's channels
|
|
94
|
+
* [--user u --pass p --port 554 --start 1 --path /live/{ch}] [--json]
|
|
95
|
+
*/
|
|
96
|
+
export declare function runDiscover(args: string[]): Promise<void>;
|
|
97
|
+
export interface SweptRecorder {
|
|
98
|
+
host: string;
|
|
99
|
+
name: string;
|
|
100
|
+
/** Ports found open, e.g. [554, 80]. */
|
|
101
|
+
openPorts: number[];
|
|
102
|
+
/** High-confidence vendor family inferred from a vendor-specific service port. */
|
|
103
|
+
brandHint?: string;
|
|
104
|
+
xaddrs: string[];
|
|
105
|
+
}
|
|
106
|
+
export declare function inferRecorderBrandHint(openPorts: number[]): string | undefined;
|
|
107
|
+
export interface SweepOptions {
|
|
108
|
+
/** Ports that indicate a recorder/camera. Default: RTSP 554/8554, ONVIF-alt 8899, XMeye 34567. */
|
|
109
|
+
ports?: number[];
|
|
110
|
+
/** Per-connection timeout. Default 350ms. */
|
|
111
|
+
connectTimeoutMs?: number;
|
|
112
|
+
/** Concurrent sockets. Default 64. */
|
|
113
|
+
concurrency?: number;
|
|
114
|
+
/** Override the subnets to sweep (CIDR-less base like '192.168.1'). */
|
|
115
|
+
subnets?: string[];
|
|
116
|
+
/** Injection for tests: attempt a TCP connect, resolve open?. */
|
|
117
|
+
tryConnect?: (host: string, port: number, timeoutMs: number) => Promise<boolean>;
|
|
118
|
+
/** Injection for tests: local IPv4 interface addresses. */
|
|
119
|
+
localAddresses?: () => string[];
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Sweep the local /24 subnet(s) for recorder-shaped devices by TCP-connecting
|
|
123
|
+
* to RTSP/DVR ports. This is the fallback for the huge installed base of cheap
|
|
124
|
+
* analog DVRs (XMeye/Night Owl/older Swann/Lorex) that answer NO ONVIF
|
|
125
|
+
* WS-Discovery probe — without it, "Scan" finds nothing at exactly the venues
|
|
126
|
+
* this product targets. Shaped like OnvifHost so the setup discovery envelope
|
|
127
|
+
* and the portal's recorder cards treat both sources identically.
|
|
128
|
+
* Never rejects — resolves to [] on any environmental failure.
|
|
129
|
+
*/
|
|
130
|
+
export declare function sweepLanForRecorders(opts?: SweepOptions): Promise<SweptRecorder[]>;
|
|
131
|
+
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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"}
|