@trillboards/edge-sdk 0.2.40 → 0.2.42

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.
Files changed (90) hide show
  1. package/README.md +1 -1
  2. package/deploy/docker/{Dockerfile.cloud-sense → Dockerfile.connector} +52 -39
  3. package/deploy/docker/README.md +73 -1
  4. package/deploy/docker/connector-entrypoint.sh +46 -80
  5. package/deploy/macos/README.md +1 -1
  6. package/deploy/macos/test-install-pair.sh +9 -9
  7. package/deploy/systemd/install.sh +16 -1
  8. package/deploy/systemd/setup-litertlm.sh +201 -0
  9. package/deploy/systemd/trillboards-edge.service +8 -4
  10. package/deploy/systemd/trillboards-litertlm.service +46 -0
  11. package/deploy/windows/register-task.ps1 +6 -3
  12. package/deploy/windows/run-connector.ps1 +1 -1
  13. package/deploy/windows/trillboards-edge-task.vbs +5 -1
  14. package/dist/CloudSensingManager.d.ts +45 -19
  15. package/dist/CloudSensingManager.d.ts.map +1 -1
  16. package/dist/CloudSensingManager.js +89 -46
  17. package/dist/CloudSensingManager.js.map +1 -1
  18. package/dist/EdgeAgent.js +1 -1
  19. package/dist/LiteRtVlmProvider.d.ts +108 -2
  20. package/dist/LiteRtVlmProvider.d.ts.map +1 -1
  21. package/dist/LiteRtVlmProvider.js +79 -13
  22. package/dist/LiteRtVlmProvider.js.map +1 -1
  23. package/dist/SensingProfileClient.d.ts +9 -0
  24. package/dist/SensingProfileClient.d.ts.map +1 -1
  25. package/dist/SensingProfileClient.js +4 -0
  26. package/dist/SensingProfileClient.js.map +1 -1
  27. package/dist/SetupSessionClient.d.ts +0 -1
  28. package/dist/SetupSessionClient.d.ts.map +1 -1
  29. package/dist/autoSense.d.ts +42 -31
  30. package/dist/autoSense.d.ts.map +1 -1
  31. package/dist/autoSense.js +127 -99
  32. package/dist/autoSense.js.map +1 -1
  33. package/dist/cli.d.ts.map +1 -1
  34. package/dist/cli.js +25 -84
  35. package/dist/cli.js.map +1 -1
  36. package/dist/combinedSense.d.ts +1 -3
  37. package/dist/combinedSense.d.ts.map +1 -1
  38. package/dist/combinedSense.js +0 -1
  39. package/dist/combinedSense.js.map +1 -1
  40. package/dist/config.d.ts +17 -64
  41. package/dist/config.d.ts.map +1 -1
  42. package/dist/config.js +0 -10
  43. package/dist/config.js.map +1 -1
  44. package/dist/deployedCadence.d.ts +37 -75
  45. package/dist/deployedCadence.d.ts.map +1 -1
  46. package/dist/deployedCadence.js +45 -105
  47. package/dist/deployedCadence.js.map +1 -1
  48. package/dist/deployedCadenceSource.d.ts +0 -2
  49. package/dist/deployedCadenceSource.d.ts.map +1 -1
  50. package/dist/deployedCadenceSource.js +0 -1
  51. package/dist/deployedCadenceSource.js.map +1 -1
  52. package/dist/diagnose.d.ts +1 -1
  53. package/dist/diagnose.js +1 -1
  54. package/dist/index.d.ts +0 -3
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +1 -8
  57. package/dist/index.js.map +1 -1
  58. package/dist/localInferenceSchema.d.ts +19 -0
  59. package/dist/localInferenceSchema.d.ts.map +1 -1
  60. package/dist/localInferenceSchema.js +23 -0
  61. package/dist/localInferenceSchema.js.map +1 -1
  62. package/dist/localSensing.d.ts +48 -107
  63. package/dist/localSensing.d.ts.map +1 -1
  64. package/dist/localSensing.js +80 -171
  65. package/dist/localSensing.js.map +1 -1
  66. package/dist/localVlmBench.d.ts +36 -0
  67. package/dist/localVlmBench.d.ts.map +1 -1
  68. package/dist/localVlmBench.js +48 -0
  69. package/dist/localVlmBench.js.map +1 -1
  70. package/dist/sensingCatchRate.d.ts +246 -0
  71. package/dist/sensingCatchRate.d.ts.map +1 -0
  72. package/dist/sensingCatchRate.js +514 -0
  73. package/dist/sensingCatchRate.js.map +1 -0
  74. package/dist/sensingRunMode.d.ts +14 -11
  75. package/dist/sensingRunMode.d.ts.map +1 -1
  76. package/dist/sensingRunMode.js +9 -92
  77. package/dist/sensingRunMode.js.map +1 -1
  78. package/dist/setupMode.d.ts +0 -1
  79. package/dist/setupMode.d.ts.map +1 -1
  80. package/dist/setupMode.js +5 -3
  81. package/dist/setupMode.js.map +1 -1
  82. package/dist/startupDiscovery.d.ts +43 -0
  83. package/dist/startupDiscovery.d.ts.map +1 -0
  84. package/dist/startupDiscovery.js +72 -0
  85. package/dist/startupDiscovery.js.map +1 -0
  86. package/package.json +1 -1
  87. package/dist/CloudEscalationPolicy.d.ts +0 -143
  88. package/dist/CloudEscalationPolicy.d.ts.map +0 -1
  89. package/dist/CloudEscalationPolicy.js +0 -137
  90. package/dist/CloudEscalationPolicy.js.map +0 -1
@@ -21,75 +21,50 @@
21
21
  *
22
22
  * ── Why it is not simply "use what the profile says" ───────────────────────
23
23
  *
24
- * Because the two run modes are metered by completely different things, and
25
- * neither of them is time.
26
- *
27
- * LOCAL is metered by a MACHINE. `litert-lm serve` is a single-conversation
28
- * server with exactly one admission slot at a measured 7.30 s/frame, so the
29
- * whole connector has a hard ceiling of 493 analyses/hour however many cameras
30
- * it runs. That ceiling is what `connectorCadence.periodicIntervalMsForFeedCount`
31
- * already computes, and it is why the profile's own 5-30 s values were rejected
32
- * as a cadence source when that module was written: they are the ANDROID
33
- * tablet's capture rate, where a frame costs a BlazeFace pass rather than a VLM
34
- * generation, and feeding 5 s to a connector would demand 11 520 analyses/hour
35
- * against a budget of 493.
36
- *
37
- * CLOUD is metered by MONEY, and this is the number nobody had:
38
- *
39
- * Measured on production 2026-08-12 — 255 812 image-bearing cloud VLM calls
40
- * over 7 days, `gemini-3.1-flash-lite` via `audienceVisionService.analyzeFrame`
41
- * — the mean cost of one analyzed frame is $0.007008 (p50 $0.006838, p90
42
- * $0.008481; $1 790.92 of spend over the window). Per camera per 30-day month:
43
- *
44
- * cadence frames/mo $/camera/mo
45
- * 300 s 8 640 60.55 <- today's silent default
46
- * 120 s 21 600 151.37
47
- * 60 s 43 200 302.75
48
- * 30 s 86 400 605.49
49
- *
50
- * Against a $100-500 subscription. So "sensing within 30 seconds" is not a
51
- * config default on the cloud path — it is a $605/camera/month line item, and
52
- * a 16-camera store would be $9 688/month of COGS. The same 30 s cadence on
53
- * the LOCAL path costs nothing per frame; it costs one machine.
24
+ * Because the connector is metered by a MACHINE, and the profile's numbers
25
+ * describe a different one.
26
+ *
27
+ * `litert-lm serve` is a single-conversation server with exactly one admission
28
+ * slot at a measured 7.30 s/frame, so the whole connector has a hard ceiling of
29
+ * 493 analyses/hour however many cameras it runs. That ceiling is what
30
+ * `connectorCadence.periodicIntervalMsForFeedCount` already computes, and it is
31
+ * why the profile's own 5-30 s values were rejected as a cadence source when
32
+ * that module was written: they are the ANDROID tablet's capture rate, where a
33
+ * frame costs a BlazeFace pass rather than a VLM generation, and feeding 5 s to
34
+ * a connector would demand 11,520 analyses/hour against a budget of 493.
35
+ *
36
+ * ── There used to be a second meter: MONEY ─────────────────────────────────
37
+ *
38
+ * The cloud path was metered per frame — measured 2026-08-12 over 255,812
39
+ * image-bearing cloud VLM calls, $0.007008 each, so a 30 s cadence was
40
+ * $605/camera/month and a 16-camera store was $9,688/month against a $99-500
41
+ * subscription. This module held the arithmetic that kept that bill inside a
42
+ * budget: `MEASURED_CLOUD_USD_PER_FRAME`, `cloudFloorMsForBudget`,
43
+ * `monthlyUsdPerCamera`, and the `cloud_cost_budget` clamp reason.
44
+ *
45
+ * All of it is gone with the cloud path itself. Rationing a per-frame cost was
46
+ * the wrong shape of answer inside a flat-rate product — the cadence knob was
47
+ * how the earlier plan (plans/cctv-byo-sensing-plan.md:26) proposed to control
48
+ * cost, and this supersedes it. On-device inference has no per-frame cost, so
49
+ * the only question left is how fast the machine can actually go.
54
50
  *
55
51
  * The honest resolution is therefore not to pick a number. It is to let the
56
- * operator's request through, clamp it at the floor its OWN mode implies, and
57
- * make the clamp legible — `resolve()` returns the reason and the projected
58
- * bill, so `getSensingHealth()` can say "you asked for 30 s; running 303 s;
59
- * cloud budget $60/camera/month" instead of silently sampling every 5 minutes.
60
- *
61
- * ── The default is deliberately a no-op ────────────────────────────────────
62
- *
63
- * `DEFAULT_CLOUD_MONTHLY_BUDGET_USD_PER_CAMERA` is 60, which at the measured
64
- * price is a 302 746 ms floor — within 1% of the 300 000 ms every cloud
65
- * connector already runs. Fixing the wire therefore cannot change anybody's
66
- * bill: it changes who is ALLOWED to change it, and makes buying a faster
67
- * cadence an explicit purchase instead of an invisible one.
68
- */
69
- export type SensingRunModeName = 'cloud' | 'local';
70
- /**
71
- * Mean USD per analyzed frame on the cloud VLM path. MEASURED, not listed:
72
- * 255,812 successful image-bearing `vision_call_log` rows over the 7 days ending
73
- * 2026-08-12. Re-measure with:
52
+ * operator's request through, clamp it at the floor the machine implies, and
53
+ * make the clamp legible — `resolve()` returns the reason, so
54
+ * `getSensingHealth()` can say "you asked for 5 s; running 7.3 s; one local
55
+ * inference slot" instead of silently sampling every 5 minutes.
74
56
  *
75
- * SELECT avg(cost_usd) FROM vision_call_log
76
- * WHERE called_at >= now() - interval '7 days'
77
- * AND success AND image_s3_key IS NOT NULL;
57
+ * ── MAX_CADENCE_MS stays, and is NOT a cost bound ──────────────────────────
78
58
  *
79
- * and update this when the model tier or the profile schema size changes — a
80
- * bigger response schema moves it (per-screen means ranged $0.0054-$0.0158 over
81
- * the same window, tracking prompt size).
59
+ * It is a 32-bit `setTimeout` overflow guard. See its own docs below.
82
60
  */
83
- export declare const MEASURED_CLOUD_USD_PER_FRAME = 0.007008;
84
61
  /**
85
- * Cloud spend per camera per month the connector may commit to WITHOUT the
86
- * operator raising it. 60 USD is today's actual spend at the 300 s default, so
87
- * this default changes no bill; it exists so that going faster is a decision
88
- * somebody makes rather than a constant somebody edits.
62
+ * Kept as a single-member type rather than deleted: it names the axis (WHICH
63
+ * run mode is being metered) that the callers still pass, and re-introducing a
64
+ * mode later must be a compile-time decision at every call site rather than a
65
+ * silently-ignored argument.
89
66
  */
90
- export declare const DEFAULT_CLOUD_MONTHLY_BUDGET_USD_PER_CAMERA = 60;
91
- /** A 30-day month, in ms — the unit the budget is quoted in. */
92
- export declare const MONTH_MS: number;
67
+ export type SensingRunModeName = 'local';
93
68
  /**
94
69
  * The SLOWEST cadence a deployed profile may put on a running connector.
95
70
  *
@@ -120,8 +95,6 @@ export type CadenceReason =
120
95
  'no_request'
121
96
  /** The operator's request was affordable and is being run verbatim. */
122
97
  | 'operator_request'
123
- /** Slowed to fit the cloud spend budget. */
124
- | 'cloud_cost_budget'
125
98
  /** Slowed to fit the single local inference slot. */
126
99
  | 'local_inference_budget'
127
100
  /** Faster than the connector ever looks — a cadence finer than a look is meaningless. */
@@ -140,16 +113,7 @@ export interface DeployedCadence {
140
113
  /** True when the request is NOT being run verbatim (floor OR ceiling). */
141
114
  clamped: boolean;
142
115
  reason: CadenceReason;
143
- /** Projected cloud spend at `intervalMs`. null for local (no per-frame cost). */
144
- estimatedMonthlyUsdPerCamera: number | null;
145
116
  }
146
- /**
147
- * The fastest cloud cadence that keeps ONE camera inside `budgetUsd` per month
148
- * at `usdPerFrame`.
149
- */
150
- export declare function cloudFloorMsForBudget(budgetUsd?: number, usdPerFrame?: number): number;
151
- /** Projected cloud spend for one camera at `intervalMs`. */
152
- export declare function monthlyUsdPerCamera(intervalMs: number, usdPerFrame?: number): number;
153
117
  /**
154
118
  * Reconcile a deployed cadence with what this mode can afford.
155
119
  *
@@ -161,7 +125,5 @@ export declare function resolveDeployedCadence(input: {
161
125
  requestedMs: unknown;
162
126
  mode: SensingRunModeName;
163
127
  feedCount: number;
164
- monthlyBudgetUsdPerCamera?: number;
165
- usdPerFrame?: number;
166
128
  }): DeployedCadence;
167
129
  //# sourceMappingURL=deployedCadence.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deployedCadence.d.ts","sourceRoot":"","sources":["../src/deployedCadence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmEG;AAQH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,OAAO,CAAC;AAEnD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,4BAA4B,WAAW,CAAC;AAErD;;;;;GAKG;AACH,eAAO,MAAM,2CAA2C,KAAK,CAAC;AAE9D,gEAAgE;AAChE,eAAO,MAAM,QAAQ,QAAwB,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,cAAc,QAAmB,CAAC;AAE/C,MAAM,MAAM,aAAa;AACvB,4EAA4E;AAC1E,YAAY;AACd,uEAAuE;GACrE,kBAAkB;AACpB,4CAA4C;GAC1C,mBAAmB;AACrB,qDAAqD;GACnD,wBAAwB;AAC1B,yFAAyF;GACvF,eAAe;AACjB,2FAA2F;GACzF,iBAAiB,CAAC;AAEtB,MAAM,WAAW,eAAe;IAC9B,qEAAqE;IACrE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,mFAAmF;IACnF,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;IACtB,iFAAiF;IACjF,4BAA4B,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7C;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,GAAE,MAAoD,EAC/D,WAAW,GAAE,MAAqC,GACjD,MAAM,CAUR;AAED,4DAA4D;AAC5D,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,WAAW,GAAE,MAAqC,GACjD,MAAM,CAIR;AASD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,kBAAkB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,eAAe,CAsDlB"}
1
+ {"version":3,"file":"deployedCadence.d.ts","sourceRoot":"","sources":["../src/deployedCadence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AAQH;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,cAAc,QAAmB,CAAC;AAE/C,MAAM,MAAM,aAAa;AACvB,4EAA4E;AAC1E,YAAY;AACd,uEAAuE;GACrE,kBAAkB;AACpB,qDAAqD;GACnD,wBAAwB;AAC1B,yFAAyF;GACvF,eAAe;AACjB,2FAA2F;GACzF,iBAAiB,CAAC;AAEtB,MAAM,WAAW,eAAe;IAC9B,qEAAqE;IACrE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,mFAAmF;IACnF,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;CACvB;AASD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,kBAAkB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,eAAe,CA8ClB"}
@@ -22,80 +22,47 @@
22
22
  *
23
23
  * ── Why it is not simply "use what the profile says" ───────────────────────
24
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.
25
+ * Because the connector is metered by a MACHINE, and the profile's numbers
26
+ * describe a different one.
27
+ *
28
+ * `litert-lm serve` is a single-conversation server with exactly one admission
29
+ * slot at a measured 7.30 s/frame, so the whole connector has a hard ceiling of
30
+ * 493 analyses/hour however many cameras it runs. That ceiling is what
31
+ * `connectorCadence.periodicIntervalMsForFeedCount` already computes, and it is
32
+ * why the profile's own 5-30 s values were rejected as a cadence source when
33
+ * that module was written: they are the ANDROID tablet's capture rate, where a
34
+ * frame costs a BlazeFace pass rather than a VLM generation, and feeding 5 s to
35
+ * a connector would demand 11,520 analyses/hour against a budget of 493.
36
+ *
37
+ * ── There used to be a second meter: MONEY ─────────────────────────────────
38
+ *
39
+ * The cloud path was metered per frame — measured 2026-08-12 over 255,812
40
+ * image-bearing cloud VLM calls, $0.007008 each, so a 30 s cadence was
41
+ * $605/camera/month and a 16-camera store was $9,688/month against a $99-500
42
+ * subscription. This module held the arithmetic that kept that bill inside a
43
+ * budget: `MEASURED_CLOUD_USD_PER_FRAME`, `cloudFloorMsForBudget`,
44
+ * `monthlyUsdPerCamera`, and the `cloud_cost_budget` clamp reason.
45
+ *
46
+ * All of it is gone with the cloud path itself. Rationing a per-frame cost was
47
+ * the wrong shape of answer inside a flat-rate product — the cadence knob was
48
+ * how the earlier plan (plans/cctv-byo-sensing-plan.md:26) proposed to control
49
+ * cost, and this supersedes it. On-device inference has no per-frame cost, so
50
+ * the only question left is how fast the machine can actually go.
55
51
  *
56
52
  * 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.
53
+ * operator's request through, clamp it at the floor the machine implies, and
54
+ * make the clamp legible — `resolve()` returns the reason, so
55
+ * `getSensingHealth()` can say "you asked for 5 s; running 7.3 s; one local
56
+ * inference slot" instead of silently sampling every 5 minutes.
57
+ *
58
+ * ── MAX_CADENCE_MS stays, and is NOT a cost bound ──────────────────────────
59
+ *
60
+ * It is a 32-bit `setTimeout` overflow guard. See its own docs below.
69
61
  */
70
62
  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;
63
+ exports.MAX_CADENCE_MS = void 0;
74
64
  exports.resolveDeployedCadence = resolveDeployedCadence;
75
65
  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
66
  /**
100
67
  * The SLOWEST cadence a deployed profile may put on a running connector.
101
68
  *
@@ -121,28 +88,6 @@ exports.MONTH_MS = 30 * 24 * 3600 * 1000;
121
88
  * silently applied, so a nonsense row shows up as a nonsense row.
122
89
  */
123
90
  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
91
  /** Normalize a server-reported cadence; anything unusable is "no request". */
147
92
  function normalizeRequest(value) {
148
93
  const n = Number(value);
@@ -159,19 +104,16 @@ function normalizeRequest(value) {
159
104
  */
160
105
  function resolveDeployedCadence(input) {
161
106
  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);
107
+ // The floor is the machine's own ceiling, already derived and already
108
+ // measured. periodicIntervalMsForFeedCount returns null on a bad count; a
109
+ // connector with no countable feeds gets the DOOH default rather than a
110
+ // cadence derived from nothing.
111
+ const floorMs = (0, connectorCadence_1.periodicIntervalMsForFeedCount)(input.feedCount) ?? connectorCadence_1.DOOH_PERIODIC_MS;
170
112
  // 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.
113
+ // only looks that often, so it is a floor. The ceiling wins over the floor:
114
+ // honouring a floor slower than a whole day would hand a capture loop a delay
115
+ // it cannot express (see MAX_CADENCE_MS) — the one clamp that must never be
116
+ // negotiable.
175
117
  const effectiveFloor = Math.min(exports.MAX_CADENCE_MS, Math.max(floorMs, connectorCadence_1.LOOK_INTERVAL_MS));
176
118
  if (requestedMs === null) {
177
119
  return {
@@ -181,7 +123,6 @@ function resolveDeployedCadence(input) {
181
123
  ceilingMs: exports.MAX_CADENCE_MS,
182
124
  clamped: false,
183
125
  reason: 'no_request',
184
- estimatedMonthlyUsdPerCamera: null,
185
126
  };
186
127
  }
187
128
  const intervalMs = Math.min(exports.MAX_CADENCE_MS, Math.max(requestedMs, effectiveFloor));
@@ -194,7 +135,7 @@ function resolveDeployedCadence(input) {
194
135
  if (effectiveFloor === connectorCadence_1.LOOK_INTERVAL_MS && floorMs <= connectorCadence_1.LOOK_INTERVAL_MS)
195
136
  reason = 'look_interval';
196
137
  else
197
- reason = isCloud ? 'cloud_cost_budget' : 'local_inference_budget';
138
+ reason = 'local_inference_budget';
198
139
  }
199
140
  return {
200
141
  intervalMs,
@@ -203,7 +144,6 @@ function resolveDeployedCadence(input) {
203
144
  ceilingMs: exports.MAX_CADENCE_MS,
204
145
  clamped,
205
146
  reason,
206
- estimatedMonthlyUsdPerCamera: isCloud ? monthlyUsdPerCamera(intervalMs, input.usdPerFrame) : null,
207
147
  };
208
148
  }
209
149
  //# sourceMappingURL=deployedCadence.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deployedCadence.js","sourceRoot":"","sources":["../src/deployedCadence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deployedCadence.js","sourceRoot":"","sources":["../src/deployedCadence.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;;;AAkFH,wDAkDC;AAlID,yDAI4B;AAU5B;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACU,QAAA,cAAc,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AA4B/C,8EAA8E;AAC9E,SAAS,gBAAgB,CAAC,KAAc;IACtC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,sBAAsB,CAAC,KAItC;IACC,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAExD,sEAAsE;IACtE,0EAA0E;IAC1E,wEAAwE;IACxE,gCAAgC;IAChC,MAAM,OAAO,GAAG,IAAA,iDAA8B,EAAC,KAAK,CAAC,SAAS,CAAC,IAAI,mCAAgB,CAAC;IAEpF,4EAA4E;IAC5E,4EAA4E;IAC5E,8EAA8E;IAC9E,4EAA4E;IAC5E,cAAc;IACd,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,sBAAc,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,mCAAgB,CAAC,CAAC,CAAC;IAErF,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACzB,OAAO;YACL,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,cAAc;YACvB,SAAS,EAAE,sBAAc;YACzB,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,YAAY;SACrB,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,sBAAc,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;IACnF,MAAM,OAAO,GAAG,UAAU,KAAK,WAAW,CAAC;IAE3C,IAAI,MAAM,GAAkB,kBAAkB,CAAC;IAC/C,IAAI,UAAU,GAAG,WAAW,EAAE,CAAC;QAC7B,MAAM,GAAG,iBAAiB,CAAC;IAC7B,CAAC;SAAM,IAAI,OAAO,EAAE,CAAC;QACnB,IAAI,cAAc,KAAK,mCAAgB,IAAI,OAAO,IAAI,mCAAgB;YAAE,MAAM,GAAG,eAAe,CAAC;;YAC5F,MAAM,GAAG,wBAAwB,CAAC;IACzC,CAAC;IAED,OAAO;QACL,UAAU;QACV,WAAW;QACX,OAAO,EAAE,cAAc;QACvB,SAAS,EAAE,sBAAc;QACzB,OAAO;QACP,MAAM;KACP,CAAC;AACJ,CAAC"}
@@ -36,8 +36,6 @@ export interface DeployedCadenceSourceOptions {
36
36
  mode: SensingRunModeName;
37
37
  /** Total feeds this connector runs (drives the LOCAL single-slot floor). */
38
38
  feedCount: number;
39
- /** Cloud spend ceiling per camera per month. Default 60 (today's actual spend). */
40
- monthlyBudgetUsdPerCamera?: number;
41
39
  }
42
40
  /**
43
41
  * Build the connector's cadence source. Returns `undefined` when there are no
@@ -1 +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"}
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,EAGL,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;CACnB;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,4BAA4B,GACpC,aAAa,GAAG,SAAS,CAkC3B"}
@@ -66,7 +66,6 @@ function buildDeployedCadenceSource(options) {
66
66
  requestedMs: fastest,
67
67
  mode: options.mode,
68
68
  feedCount: options.feedCount,
69
- monthlyBudgetUsdPerCamera: options.monthlyBudgetUsdPerCamera ?? deployedCadence_1.DEFAULT_CLOUD_MONTHLY_BUDGET_USD_PER_CAMERA,
70
69
  });
71
70
  },
72
71
  };
@@ -1 +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"}
1
+ {"version":3,"file":"deployedCadenceSource.js","sourceRoot":"","sources":["../src/deployedCadenceSource.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;;AAuBH,gEAoCC;AAvDD,uDAI2B;AAU3B;;;;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;aAC7B,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -31,7 +31,7 @@ export interface DiagnosticReport {
31
31
  skipped: number;
32
32
  };
33
33
  }
34
- declare const SDK_VERSION = "0.2.40";
34
+ declare const SDK_VERSION = "0.2.42";
35
35
  declare function checkNodeVersion(): CheckResult;
36
36
  declare function checkPlatform(): CheckResult;
37
37
  declare function checkMemory(): CheckResult;
package/dist/diagnose.js CHANGED
@@ -63,7 +63,7 @@ const localNetworkAccess_1 = require("./localNetworkAccess");
63
63
  // ---------------------------------------------------------------------------
64
64
  // SDK version — mirrors package.json; kept in sync by CI
65
65
  // ---------------------------------------------------------------------------
66
- const SDK_VERSION = '0.2.40';
66
+ const SDK_VERSION = '0.2.42';
67
67
  exports._SDK_VERSION = SDK_VERSION;
68
68
  // ---------------------------------------------------------------------------
69
69
  // ANSI helpers (no external deps)
package/dist/index.d.ts CHANGED
@@ -28,9 +28,6 @@ export { VlmCandidateBuffer, DEFAULT_CANDIDATE_TTL_MS } from './VlmCandidateBuff
28
28
  export type { VlmCandidate, VlmCandidateBufferOptions, VlmCandidateBufferStats, VlmCandidateFeedStats, VlmCandidateOfferResult, } from './VlmCandidateBuffer';
29
29
  export { MotionGate, SceneChangeDetector, isChangeCandidate, decodeGreyFrame, downscaleRgbaToGrey, motionSignature, } from './SceneChangeDetector';
30
30
  export type { GreyFrame, MotionBox, MotionDetectResult, MotionGateOptions, MotionGateReason, MotionGateResult, MotionGateStats, SceneChangeDetectorOptions, } from './SceneChangeDetector';
31
- export { CloudEscalationPolicy } from './CloudEscalationPolicy';
32
- export { isCloudEscalationEnabled } from './localSensing';
33
- export type { CloudEscalationPolicyOptions, CloudEscalationStats, EscalationInput, EscalationReason, EscalationVerdict, } from './CloudEscalationPolicy';
34
31
  export { SharedFrameSource, CropViewProvider } from './MosaicSource';
35
32
  export type { CropViewProviderOptions } from './MosaicSource';
36
33
  export type { AudienceMetricsPayload, DetectedFace, EdgeQualityReport, VASResult, DeviceCapabilityMatrix, PlatformAdapter, CameraProvider, AudioProvider, EdgeSDKConfig, } from '@trillboards/edge-core';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@
3
3
  // Install: npm install @trillboards/edge-sdk
4
4
  // Run: npx trillboards-edge start --config trillboards.config.json
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.CropViewProvider = exports.SharedFrameSource = exports.isCloudEscalationEnabled = exports.CloudEscalationPolicy = exports.motionSignature = exports.downscaleRgbaToGrey = exports.decodeGreyFrame = exports.isChangeCandidate = exports.SceneChangeDetector = exports.MotionGate = exports.DEFAULT_CANDIDATE_TTL_MS = exports.VlmCandidateBuffer = exports.VlmAdmissionGate = exports.shouldAttemptRecorderAddressRecovery = exports.rewriteStreamHost = exports.normalizeMacAddress = exports.lookupMacAddress = exports.RecorderAddressRecovery = exports.resolveFeeds = exports.classifyRtspFailureClass = exports.buildTiledCameras = exports.buildSensingLoops = exports.CloudSensingManager = exports.defaultHttpPoster = exports.AudienceAnalyzeClient = exports.LOCAL_NETWORK_DENIED_SUMMARY = exports.LOCAL_NETWORK_DENIED_SUGGESTION = exports.decideLocalNetworkVerdict = exports.probeLocalNetworkAccess = exports.describeProxy = exports.resolveProxyForUrl = exports.describeTrustAnchors = exports.resolveTrustAnchors = exports.isTrustFailure = exports.formatTransportFailure = exports.classifyTransportError = exports.TransportFailure = exports.EnterpriseHttpsAgent = exports.resetEnterpriseNetworkCaches = exports.diagnoseTransportError = exports.getEnterpriseAgent = exports.describeNetworkPosture = exports.installEnterpriseNetworking = exports.runDiagnose = exports.runInit = exports.CommandRouter = exports.resolveConfig = exports.loadConfig = exports.EdgeAgent = void 0;
6
+ exports.CropViewProvider = exports.SharedFrameSource = exports.motionSignature = exports.downscaleRgbaToGrey = exports.decodeGreyFrame = exports.isChangeCandidate = exports.SceneChangeDetector = exports.MotionGate = exports.DEFAULT_CANDIDATE_TTL_MS = exports.VlmCandidateBuffer = exports.VlmAdmissionGate = exports.shouldAttemptRecorderAddressRecovery = exports.rewriteStreamHost = exports.normalizeMacAddress = exports.lookupMacAddress = exports.RecorderAddressRecovery = exports.resolveFeeds = exports.classifyRtspFailureClass = exports.buildTiledCameras = exports.buildSensingLoops = exports.CloudSensingManager = exports.defaultHttpPoster = exports.AudienceAnalyzeClient = exports.LOCAL_NETWORK_DENIED_SUMMARY = exports.LOCAL_NETWORK_DENIED_SUGGESTION = exports.decideLocalNetworkVerdict = exports.probeLocalNetworkAccess = exports.describeProxy = exports.resolveProxyForUrl = exports.describeTrustAnchors = exports.resolveTrustAnchors = exports.isTrustFailure = exports.formatTransportFailure = exports.classifyTransportError = exports.TransportFailure = exports.EnterpriseHttpsAgent = exports.resetEnterpriseNetworkCaches = exports.diagnoseTransportError = exports.getEnterpriseAgent = exports.describeNetworkPosture = exports.installEnterpriseNetworking = exports.runDiagnose = exports.runInit = exports.CommandRouter = exports.resolveConfig = exports.loadConfig = exports.EdgeAgent = void 0;
7
7
  var EdgeAgent_1 = require("./EdgeAgent");
8
8
  Object.defineProperty(exports, "EdgeAgent", { enumerable: true, get: function () { return EdgeAgent_1.EdgeAgent; } });
9
9
  var config_1 = require("./config");
@@ -76,13 +76,6 @@ Object.defineProperty(exports, "isChangeCandidate", { enumerable: true, get: fun
76
76
  Object.defineProperty(exports, "decodeGreyFrame", { enumerable: true, get: function () { return SceneChangeDetector_1.decodeGreyFrame; } });
77
77
  Object.defineProperty(exports, "downscaleRgbaToGrey", { enumerable: true, get: function () { return SceneChangeDetector_1.downscaleRgbaToGrey; } });
78
78
  Object.defineProperty(exports, "motionSignature", { enumerable: true, get: function () { return SceneChangeDetector_1.motionSignature; } });
79
- // Confidence-based cloud escalation: local Gemma gates, the cloud VLM
80
- // adjudicates the candidate frames — bounded by novelty, pacing and an hourly
81
- // budget so a busy camera cannot escalate every frame.
82
- var CloudEscalationPolicy_1 = require("./CloudEscalationPolicy");
83
- Object.defineProperty(exports, "CloudEscalationPolicy", { enumerable: true, get: function () { return CloudEscalationPolicy_1.CloudEscalationPolicy; } });
84
- var localSensing_1 = require("./localSensing");
85
- Object.defineProperty(exports, "isCloudEscalationEnabled", { enumerable: true, get: function () { return localSensing_1.isCloudEscalationEnabled; } });
86
79
  // Mosaic tiling: carve one composite ("mosaic"/quad) RTSP feed into per-screen
87
80
  // tiles, pulling the source once and cropping each tile in ffmpeg.
88
81
  var MosaicSource_1 = require("./MosaicSource");
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,gEAAgE;AAChE,6CAA6C;AAC7C,mEAAmE;;;AAEnE,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAElB,mCAAqD;AAA5C,oGAAA,UAAU,OAAA;AAAE,uGAAA,aAAa,OAAA;AAClC,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AAEtB,+BAAiC;AAAxB,+FAAA,OAAO,OAAA;AAChB,uCAAyC;AAAhC,uGAAA,WAAW,OAAA;AAGpB,8EAA8E;AAC9E,yEAAyE;AACzE,iFAAiF;AACjF,yDAO6B;AAN3B,gIAAA,2BAA2B,OAAA;AAC3B,2HAAA,sBAAsB,OAAA;AACtB,uHAAA,kBAAkB,OAAA;AAClB,2HAAA,sBAAsB,OAAA;AACtB,iIAAA,4BAA4B,OAAA;AAC5B,yHAAA,oBAAoB,OAAA;AAGtB,uDAK4B;AAJ1B,oHAAA,gBAAgB,OAAA;AAChB,0HAAA,sBAAsB,OAAA;AACtB,0HAAA,sBAAsB,OAAA;AACtB,kHAAA,cAAc,OAAA;AAGhB,qDAA8E;AAArE,sHAAA,mBAAmB,OAAA;AAAE,uHAAA,oBAAoB,OAAA;AAElD,qDAAsE;AAA7D,qHAAA,kBAAkB,OAAA;AAAE,gHAAA,aAAa,OAAA;AAE1C,4EAA4E;AAC5E,uDAAuD;AACvD,2DAK8B;AAJ5B,6HAAA,uBAAuB,OAAA;AACvB,+HAAA,yBAAyB,OAAA;AACzB,qIAAA,+BAA+B,OAAA;AAC/B,kIAAA,4BAA4B,OAAA;AAS9B,kFAAkF;AAClF,iEAAmF;AAA1E,8HAAA,qBAAqB,OAAA;AAAE,0HAAA,iBAAiB,OAAA;AAWjD,6DAM+B;AAL7B,0HAAA,mBAAmB,OAAA;AACnB,wHAAA,iBAAiB,OAAA;AACjB,wHAAA,iBAAiB,OAAA;AACjB,+HAAA,wBAAwB,OAAA;AACxB,mHAAA,YAAY,OAAA;AAEd,qEAMmC;AALjC,kIAAA,uBAAuB,OAAA;AACvB,2HAAA,gBAAgB,OAAA;AAChB,8HAAA,mBAAmB,OAAA;AACnB,4HAAA,iBAAiB,OAAA;AACjB,+IAAA,oCAAoC,OAAA;AAStC,+DAA+D;AAC/D,6EAA6E;AAC7E,uBAAuB;AACvB,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AAMzB,wEAAwE;AACxE,sEAAsE;AACtE,2DAAoF;AAA3E,wHAAA,kBAAkB,OAAA;AAAE,8HAAA,wBAAwB,OAAA;AAQrD,6DAO+B;AAN7B,iHAAA,UAAU,OAAA;AACV,0HAAA,mBAAmB,OAAA;AACnB,wHAAA,iBAAiB,OAAA;AACjB,sHAAA,eAAe,OAAA;AACf,0HAAA,mBAAmB,OAAA;AACnB,sHAAA,eAAe,OAAA;AAajB,sEAAsE;AACtE,8EAA8E;AAC9E,uDAAuD;AACvD,iEAAgE;AAAvD,8HAAA,qBAAqB,OAAA;AAC9B,+CAA0D;AAAjD,wHAAA,wBAAwB,OAAA;AASjC,+EAA+E;AAC/E,mEAAmE;AACnE,+CAAqE;AAA5D,iHAAA,iBAAiB,OAAA;AAAE,gHAAA,gBAAgB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,gEAAgE;AAChE,6CAA6C;AAC7C,mEAAmE;;;AAEnE,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAElB,mCAAqD;AAA5C,oGAAA,UAAU,OAAA;AAAE,uGAAA,aAAa,OAAA;AAClC,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AAEtB,+BAAiC;AAAxB,+FAAA,OAAO,OAAA;AAChB,uCAAyC;AAAhC,uGAAA,WAAW,OAAA;AAGpB,8EAA8E;AAC9E,yEAAyE;AACzE,iFAAiF;AACjF,yDAO6B;AAN3B,gIAAA,2BAA2B,OAAA;AAC3B,2HAAA,sBAAsB,OAAA;AACtB,uHAAA,kBAAkB,OAAA;AAClB,2HAAA,sBAAsB,OAAA;AACtB,iIAAA,4BAA4B,OAAA;AAC5B,yHAAA,oBAAoB,OAAA;AAGtB,uDAK4B;AAJ1B,oHAAA,gBAAgB,OAAA;AAChB,0HAAA,sBAAsB,OAAA;AACtB,0HAAA,sBAAsB,OAAA;AACtB,kHAAA,cAAc,OAAA;AAGhB,qDAA8E;AAArE,sHAAA,mBAAmB,OAAA;AAAE,uHAAA,oBAAoB,OAAA;AAElD,qDAAsE;AAA7D,qHAAA,kBAAkB,OAAA;AAAE,gHAAA,aAAa,OAAA;AAE1C,4EAA4E;AAC5E,uDAAuD;AACvD,2DAK8B;AAJ5B,6HAAA,uBAAuB,OAAA;AACvB,+HAAA,yBAAyB,OAAA;AACzB,qIAAA,+BAA+B,OAAA;AAC/B,kIAAA,4BAA4B,OAAA;AAS9B,kFAAkF;AAClF,iEAAmF;AAA1E,8HAAA,qBAAqB,OAAA;AAAE,0HAAA,iBAAiB,OAAA;AAWjD,6DAM+B;AAL7B,0HAAA,mBAAmB,OAAA;AACnB,wHAAA,iBAAiB,OAAA;AACjB,wHAAA,iBAAiB,OAAA;AACjB,+HAAA,wBAAwB,OAAA;AACxB,mHAAA,YAAY,OAAA;AAEd,qEAMmC;AALjC,kIAAA,uBAAuB,OAAA;AACvB,2HAAA,gBAAgB,OAAA;AAChB,8HAAA,mBAAmB,OAAA;AACnB,4HAAA,iBAAiB,OAAA;AACjB,+IAAA,oCAAoC,OAAA;AAStC,+DAA+D;AAC/D,6EAA6E;AAC7E,uBAAuB;AACvB,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AAMzB,wEAAwE;AACxE,sEAAsE;AACtE,2DAAoF;AAA3E,wHAAA,kBAAkB,OAAA;AAAE,8HAAA,wBAAwB,OAAA;AAQrD,6DAO+B;AAN7B,iHAAA,UAAU,OAAA;AACV,0HAAA,mBAAmB,OAAA;AACnB,wHAAA,iBAAiB,OAAA;AACjB,sHAAA,eAAe,OAAA;AACf,0HAAA,mBAAmB,OAAA;AACnB,sHAAA,eAAe,OAAA;AAajB,+EAA+E;AAC/E,mEAAmE;AACnE,+CAAqE;AAA5D,iHAAA,iBAAiB,OAAA;AAAE,gHAAA,gBAAgB,OAAA"}
@@ -114,6 +114,25 @@ export interface LocalSensingSchemaOptions {
114
114
  */
115
115
  extraFields?: ProfileField[];
116
116
  }
117
+ /**
118
+ * Every field key the SDK itself puts in the schema — the union of the presence
119
+ * primitives and the DOOH audience block, whichever field set a profile resolves to.
120
+ *
121
+ * These are the SCENE-OCCUPANCY vocabulary: each one describes the people in front of
122
+ * the camera (or the frame as a whole), and each reads its own "nobody here" value on an
123
+ * empty scene — `person_count: 0`, `people_present: false`, `crowd_density: 'empty'`,
124
+ * `audience_intent_stage: 'none'`. The 'none'/'empty'/'unknown' members are the SDK's own
125
+ * invention (see DEFAULT_FIELD_PROPS: enums that had no "no people" member in the cloud
126
+ * contract were GIVEN one so the model never has to emit null), which is exactly why an
127
+ * empty reading here means "the scene is empty" and nothing more.
128
+ *
129
+ * `localSensing.isAlertWorthy` uses this as the privacy FLOOR: an operator's route may
130
+ * make the absence of their own subject alert-worthy, but it can never do so for these —
131
+ * a blank-room frame is the harm the evidence gate exists to prevent, and no route
132
+ * condition may unlock it. Exported (rather than re-listed in localSensing) so the gate
133
+ * and the schema builder can never drift apart on what counts as a scene field.
134
+ */
135
+ export declare const DEFAULT_SCENE_FIELD_KEYS: ReadonlySet<string>;
117
136
  /**
118
137
  * Build the JSON Schema the on-device model is asked to fill (rendered as a
119
138
  * readable key list by LiteRtVlmProvider, validated client-side). All fields
@@ -1 +1 @@
1
- {"version":3,"file":"localInferenceSchema.d.ts","sourceRoot":"","sources":["../src/localInferenceSchema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AAEH;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,cAAc,GAAG,QAAQ,CAAC;IAC5G,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;CACpD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,UAAU,CAAC;AAE1D,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,yFAAyF;IACzF,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B;;;;OAIG;IACH,WAAW,CAAC,EAAE,YAAY,EAAE,CAAC;CAC9B;AAqID;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,yBAA8B,GACtC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgCzB;AAyBD;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAAC,WAAW,CAAC,EAAE,YAAY,EAAE,CAAA;CAAO,GAC7E,MAAM,CAeR"}
1
+ {"version":3,"file":"localInferenceSchema.d.ts","sourceRoot":"","sources":["../src/localInferenceSchema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AAEH;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,cAAc,GAAG,QAAQ,CAAC;IAC5G,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;CACpD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,UAAU,CAAC;AAE1D,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,yFAAyF;IACzF,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B;;;;OAIG;IACH,WAAW,CAAC,EAAE,YAAY,EAAE,CAAC;CAC9B;AAoCD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,MAAM,CAGvD,CAAC;AAmGH;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,yBAA8B,GACtC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgCzB;AAyBD;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAAC,WAAW,CAAC,EAAE,YAAY,EAAE,CAAA;CAAO,GAC7E,MAAM,CAeR"}
@@ -65,6 +65,7 @@
65
65
  * on the preAnalyzed ingest path (gated OUT of the sold bidstream).
66
66
  */
67
67
  Object.defineProperty(exports, "__esModule", { value: true });
68
+ exports.DEFAULT_SCENE_FIELD_KEYS = void 0;
68
69
  exports.buildLocalSensingSchema = buildLocalSensingSchema;
69
70
  exports.buildLocalSensingPrompt = buildLocalSensingPrompt;
70
71
  /**
@@ -99,6 +100,28 @@ const AUDIENCE_FIELD_ORDER = [
99
100
  'people_present',
100
101
  'confidence',
101
102
  ];
103
+ /**
104
+ * Every field key the SDK itself puts in the schema — the union of the presence
105
+ * primitives and the DOOH audience block, whichever field set a profile resolves to.
106
+ *
107
+ * These are the SCENE-OCCUPANCY vocabulary: each one describes the people in front of
108
+ * the camera (or the frame as a whole), and each reads its own "nobody here" value on an
109
+ * empty scene — `person_count: 0`, `people_present: false`, `crowd_density: 'empty'`,
110
+ * `audience_intent_stage: 'none'`. The 'none'/'empty'/'unknown' members are the SDK's own
111
+ * invention (see DEFAULT_FIELD_PROPS: enums that had no "no people" member in the cloud
112
+ * contract were GIVEN one so the model never has to emit null), which is exactly why an
113
+ * empty reading here means "the scene is empty" and nothing more.
114
+ *
115
+ * `localSensing.isAlertWorthy` uses this as the privacy FLOOR: an operator's route may
116
+ * make the absence of their own subject alert-worthy, but it can never do so for these —
117
+ * a blank-room frame is the harm the evidence gate exists to prevent, and no route
118
+ * condition may unlock it. Exported (rather than re-listed in localSensing) so the gate
119
+ * and the schema builder can never drift apart on what counts as a scene field.
120
+ */
121
+ exports.DEFAULT_SCENE_FIELD_KEYS = new Set([
122
+ ...PRESENCE_PRIMITIVE_ORDER,
123
+ ...AUDIENCE_FIELD_ORDER,
124
+ ]);
102
125
  /**
103
126
  * The property spec for every DEFAULT field, declared ONCE. `buildLocalSensingSchema`
104
127
  * composes a field set out of this table rather than forking into two builders.
@@ -1 +1 @@
1
- {"version":3,"file":"localInferenceSchema.js","sourceRoot":"","sources":["../src/localInferenceSchema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"localInferenceSchema.js","sourceRoot":"","sources":["../src/localInferenceSchema.ts"],"names":[],"mappings":"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"}