@trillboards/edge-sdk 0.2.127 → 0.2.129

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.
@@ -188,6 +188,7 @@
188
188
  * and a second catalogue at worst. The 400 IS the arrival check, from the
189
189
  * only component that knows.
190
190
  */
191
+ import { type NormalizedPoint } from './zoneContainment';
191
192
  import { LocalDetectorClient } from './LocalDetectorClient';
192
193
  /**
193
194
  * One entry of the `producer` half of a field partition.
@@ -243,6 +244,15 @@ export interface RelationDerivation {
243
244
  * fixes: `unmapped` is a registry defect somebody has to correct, this is a
244
245
  * connector that needs updating and is otherwise healthy.
245
246
  *
247
+ * `zone_count` is the OPERATOR'S REGION, applied geometrically. It is here
248
+ * because the alternative is measured and closed: `composeFocusDescription`
249
+ * sends one English line and the model ignores it — shipped polygon and shipped
250
+ * rect leak 100% at every anchor tested, including interior bands, while the
251
+ * geometric rule leaks 0% on the SAME frames and the SAME bands with zero prompt
252
+ * characters. Unlike the other kinds it consumes geometry, and that geometry
253
+ * rides the ROUTE (`regionForField`), never the model: the rule is a property of
254
+ * the class, the region is a property of the camera the operator drew on.
255
+ *
246
256
  * `co_located` is absent on purpose and is not an oversight. Measured
247
257
  * 2026-09-01 on 22 positives / 16 negatives, the detector arm for
248
258
  * `person_using_phone` runs 72.2% precision / 59.1% recall and fires on 31.3%
@@ -492,6 +502,22 @@ export declare function countsForClasses(classes: string[], detections: Array<{
492
502
  label: string;
493
503
  confidence: number;
494
504
  }>, classThresholds?: Map<string, number>): Map<string, number>;
505
+ /**
506
+ * The operator's saved region for one field, as the ROUTE carries it.
507
+ *
508
+ * `zone_count` is the only kind that consumes geometry, and the geometry is not
509
+ * the model's: `cameraPairingController` refuses a producer entry carrying a
510
+ * region because that would be a second home for a fact `sensing_route_screens`
511
+ * already owns. So the rule arrives on the field and the region arrives here,
512
+ * keyed by field, and the producer joins them for one frame.
513
+ */
514
+ export type RegionForField = (field: string) => ({
515
+ points?: NormalizedPoint[];
516
+ x?: number;
517
+ y?: number;
518
+ width?: number;
519
+ height?: number;
520
+ } | null | undefined);
495
521
  export interface DetectorFieldProducerOptions {
496
522
  /** Detector service base URL. Defaults to the client's loopback default. */
497
523
  baseUrl?: string;
@@ -510,6 +536,15 @@ export interface DetectorFieldProducerOptions {
510
536
  minConfidence?: number;
511
537
  /** Clock injection for tests. Default Date.now. */
512
538
  now?: () => number;
539
+ /**
540
+ * The operator's saved region, per field. Consulted ONLY for `zone_count`.
541
+ *
542
+ * Absent, or returning null for a field, means no region was drawn and the
543
+ * count is every detection — which is what the unfocused field already means.
544
+ * Absence must never degrade to zero: a region that silently counts nothing is
545
+ * indistinguishable from a quiet venue.
546
+ */
547
+ regionForField?: RegionForField;
513
548
  }
514
549
  export declare class DetectorFieldProducer {
515
550
  private readonly baseUrl;
@@ -519,6 +554,7 @@ export declare class DetectorFieldProducer {
519
554
  private readonly minConfidence;
520
555
  private readonly now;
521
556
  private readonly clientFor;
557
+ private readonly regionForField;
522
558
  constructor(options?: DetectorFieldProducerOptions, clientFactory?: DetectorClientFactory);
523
559
  /**
524
560
  * Produce this frame's declared fields.
@@ -1 +1 @@
1
- {"version":3,"file":"DetectorFieldProducer.d.ts","sourceRoot":"","sources":["../src/DetectorFieldProducer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DetectorFieldProducer.d.ts","sourceRoot":"","sources":["../src/DetectorFieldProducer.ts"],"names":[],"mappings":"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"}
@@ -194,6 +194,8 @@ exports.toFieldValues = toFieldValues;
194
194
  * and a second catalogue at worst. The 400 IS the arrival check, from the
195
195
  * only component that knows.
196
196
  */
197
+ const zoneContainment_1 = require("./zoneContainment");
198
+ const jpegFrameSize_1 = require("./jpegFrameSize");
197
199
  const LocalDetectorClient_1 = require("./LocalDetectorClient");
198
200
  /**
199
201
  * The kinds this connector build can actually evaluate.
@@ -204,6 +206,15 @@ const LocalDetectorClient_1 = require("./LocalDetectorClient");
204
206
  * fixes: `unmapped` is a registry defect somebody has to correct, this is a
205
207
  * connector that needs updating and is otherwise healthy.
206
208
  *
209
+ * `zone_count` is the OPERATOR'S REGION, applied geometrically. It is here
210
+ * because the alternative is measured and closed: `composeFocusDescription`
211
+ * sends one English line and the model ignores it — shipped polygon and shipped
212
+ * rect leak 100% at every anchor tested, including interior bands, while the
213
+ * geometric rule leaks 0% on the SAME frames and the SAME bands with zero prompt
214
+ * characters. Unlike the other kinds it consumes geometry, and that geometry
215
+ * rides the ROUTE (`regionForField`), never the model: the rule is a property of
216
+ * the class, the region is a property of the camera the operator drew on.
217
+ *
207
218
  * `co_located` is absent on purpose and is not an oversight. Measured
208
219
  * 2026-09-01 on 22 positives / 16 negatives, the detector arm for
209
220
  * `person_using_phone` runs 72.2% precision / 59.1% recall and fires on 31.3%
@@ -211,7 +222,7 @@ const LocalDetectorClient_1 = require("./LocalDetectorClient");
211
222
  * same sold question. The kind is expressible in the registry and is not built
212
223
  * here until a measurement asks for it.
213
224
  */
214
- exports.SUPPORTED_RELATION_KINDS = new Set(['any_of']);
225
+ exports.SUPPORTED_RELATION_KINDS = new Set(['any_of', 'zone_count']);
215
226
  /** Why a declared field has no reading this frame. */
216
227
  exports.PRODUCER_WITHHOLD_REASONS = {
217
228
  /**
@@ -386,13 +397,34 @@ function classifyProducerField(entry) {
386
397
  // An OR of one class is a rename, and a rename is what the suffix rule
387
398
  // already does. Refusing here rather than answering it keeps one shape of
388
399
  // "this field means that class" in the system.
389
- if (classNames.length < 2) {
400
+ if (kindName === 'any_of' && classNames.length < 2) {
390
401
  return {
391
402
  reason: exports.PRODUCER_WITHHOLD_REASONS.UNSUPPORTED_RELATION,
392
403
  detail: `'${field}' declares ${kindName} over ${classNames.length} class(es); `
393
404
  + 'an OR needs at least two, and an OR of one is a rename',
394
405
  };
395
406
  }
407
+ // `zone_count` takes ONE subject class and answers a COUNT; `any_of` takes
408
+ // two or more and answers a presence. Checking the arity per kind rather
409
+ // than once for all of them is why the OR-of-one refusal below does not
410
+ // reject a perfectly good zone.
411
+ if (kindName === 'zone_count' && classNames.length !== 1) {
412
+ return {
413
+ reason: exports.PRODUCER_WITHHOLD_REASONS.UNSUPPORTED_RELATION,
414
+ detail: `'${field}' declares zone_count over ${classNames.length} class(es); it counts ONE`,
415
+ };
416
+ }
417
+ if (kindName === 'zone_count') {
418
+ return {
419
+ ...entry,
420
+ field,
421
+ concept: field,
422
+ className: (0, exports.toDetectorClassName)(classNames[0]),
423
+ classNames: [(0, exports.toDetectorClassName)(classNames[0])],
424
+ kind: 'count',
425
+ relationKind: kindName,
426
+ };
427
+ }
396
428
  return {
397
429
  ...entry,
398
430
  field,
@@ -502,6 +534,7 @@ function countsForClasses(classes, detections, classThresholds) {
502
534
  }
503
535
  class DetectorFieldProducer {
504
536
  constructor(options = {}, clientFactory) {
537
+ this.regionForField = typeof options.regionForField === 'function' ? options.regionForField : null;
505
538
  this.baseUrl = options.baseUrl;
506
539
  this.timeoutMs = Math.max(1, Math.trunc(options.timeoutMs ?? exports.DEFAULT_PRODUCER_TIMEOUT_MS));
507
540
  this.deadlineMs = Math.max(0, Math.trunc(options.deadlineMs ?? exports.DEFAULT_PRODUCE_DEADLINE_MS));
@@ -621,8 +654,12 @@ class DetectorFieldProducer {
621
654
  });
622
655
  let counts;
623
656
  let detectorModel;
657
+ // The raw detections, kept for `zone_count` alone: `countsForClasses`
658
+ // collapses them to integers, and a region needs the BOXES.
659
+ let detections = [];
624
660
  try {
625
661
  const result = await client.detect(jpeg);
662
+ detections = result.detections;
626
663
  // THROWS on an unattributable label; caught right here and booked as
627
664
  // unavailable, because "the service did not apply the class filter" is a
628
665
  // reading we do not have, not a reading of zero.
@@ -686,12 +723,39 @@ class DetectorFieldProducer {
686
723
  continue;
687
724
  }
688
725
  // ── The ONLY place in this file that writes a value. ───────────────────
726
+ //
727
+ // The frame size is read ONCE per group, from the bytes already posted:
728
+ // a detector box is in PIXELS and the operator's region is NORMALIZED, and
729
+ // nothing on the detector wire carries the dimensions. Null when the
730
+ // buffer is not a readable JPEG, and then no region can be applied — which
731
+ // degrades to the unfocused count, never to zero.
732
+ const frame = groupFields.some((f) => f.relationKind === 'zone_count')
733
+ ? (0, jpegFrameSize_1.readJpegFrameSize)(jpeg)
734
+ : null;
689
735
  for (const f of groupFields) {
690
736
  // Summed over EVERY class the field reads. One entry for a suffix
691
737
  // field, so this is the same arithmetic it always was; N for an
692
738
  // `any_of`, where reading only `className` would answer the OR from its
693
739
  // first member and silently ignore the rest.
694
- const n = f.classNames.reduce((acc, c) => acc + counts.get(c), 0);
740
+ let n;
741
+ if (f.relationKind === 'zone_count') {
742
+ // GEOMETRIC, not a prompt. `composeFocusDescription` sends one English
743
+ // line and the model ignores it — shipped polygon and shipped rect
744
+ // leak 100% at every anchor tested, while this leaks 0% on the same
745
+ // frames and the same bands with zero prompt characters.
746
+ const region = this.regionForField ? this.regionForField(f.field) : null;
747
+ const boxes = detections
748
+ .filter((d) => d.label === f.className
749
+ && d.confidence >= effectiveThresholds.get(f.className))
750
+ .map((d) => d.box);
751
+ // No region, or no readable frame: the unfocused count. Not zero.
752
+ n = (region && frame) ? (0, zoneContainment_1.countInRegion)(boxes, frame, region) : boxes.length;
753
+ }
754
+ else {
755
+ // Summed over EVERY class the field reads. One entry for a suffix
756
+ // field, N for an `any_of`.
757
+ n = f.classNames.reduce((acc, c) => acc + counts.get(c), 0);
758
+ }
695
759
  produced.push({
696
760
  field: f.field,
697
761
  value: f.kind === 'present' ? n > 0 : n,
@@ -1 +1 @@
1
- {"version":3,"file":"DetectorFieldProducer.js","sourceRoot":"","sources":["../src/DetectorFieldProducer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DetectorFieldProducer.js","sourceRoot":"","sources":["../src/DetectorFieldProducer.ts"],"names":[],"mappings":"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"}
package/dist/EdgeAgent.js CHANGED
@@ -44,7 +44,7 @@ const edge_ads_1 = require("@trillboards/edge-ads");
44
44
  const CommandRouter_1 = require("./CommandRouter");
45
45
  const config_1 = require("./config");
46
46
  const dataDir_1 = require("./dataDir");
47
- const SDK_VERSION = '0.2.127';
47
+ const SDK_VERSION = '0.2.129';
48
48
  class EdgeAgent extends events_1.EventEmitter {
49
49
  constructor(config, deps) {
50
50
  super();
@@ -36,10 +36,18 @@ export interface SetupCommand {
36
36
  streamUrl?: string;
37
37
  name?: string;
38
38
  }
39
+ /** The claim refusals this build knows how to title. */
40
+ export type ClaimIssueCode = 'ACCOUNT_PERMISSION_REQUIRED' | 'SUBSCRIPTION_REQUIRED' | 'ENTITLEMENT_LAPSED';
39
41
  export interface SetupPollResponse {
40
42
  claimed: boolean;
41
43
  claimIssue: {
42
- code: 'ACCOUNT_PERMISSION_REQUIRED';
44
+ /**
45
+ * Why the owner's claim was refused. Open on purpose: the server decides
46
+ * what can block a claim and adds codes without shipping a connector, and
47
+ * every fielded build below the current one must still render an unknown
48
+ * code sensibly rather than mislabel it.
49
+ */
50
+ code: ClaimIssueCode | (string & {});
43
51
  message: string;
44
52
  atMs: number;
45
53
  } | null;
@@ -76,20 +84,63 @@ export interface SetupPollResponse {
76
84
  export declare class SetupSessionExpiredError extends Error {
77
85
  constructor();
78
86
  }
87
+ /**
88
+ * A call that did not get an answer ABOUT THE CAMERA: the transport failed, or
89
+ * the server refused with something it invites a retry on. `statusCode` is 0
90
+ * when no response was produced at all (timeout, DNS, reset).
91
+ */
92
+ export declare class SetupTransportError extends Error {
93
+ readonly statusCode: number;
94
+ readonly retryAfterMs: number | null;
95
+ constructor(message: string, statusCode: number, retryAfterMs?: number | null);
96
+ }
97
+ /**
98
+ * `Retry-After` in either RFC form — delta-seconds, or an HTTP-date. Returns
99
+ * null when absent/unparseable so the caller falls back to its own backoff, and
100
+ * clamps so a hostile or clock-skewed value cannot park setup for an hour.
101
+ */
102
+ export declare function retryAfterMs(headers: Record<string, string | string[] | undefined> | undefined): number | null;
79
103
  export declare class SetupSessionClient {
80
104
  private readonly apiBaseUrl;
81
105
  private readonly fingerprint;
82
106
  private readonly poster;
83
107
  private readonly timeoutMs;
108
+ private readonly maxAttempts;
109
+ private readonly retryBaseMs;
110
+ private readonly retryMaxMs;
111
+ private readonly retryJitterMs;
112
+ private readonly sleep;
84
113
  private sessionId;
85
114
  private sessionSecret;
86
115
  constructor(options: {
87
116
  apiBaseUrl: string;
88
117
  connectorFingerprint: string;
89
118
  timeoutMs?: number;
119
+ /** Total attempts per call, retries included. 1 disables retrying. */
120
+ maxAttempts?: number;
121
+ retryBaseMs?: number;
122
+ retryMaxMs?: number;
123
+ /** Spread added ON TOP of a server-stated `Retry-After`, never inside it. */
124
+ retryJitterMs?: number;
125
+ /** Injectable so tests do not spend the backoff in real time. */
126
+ sleep?: (ms: number) => Promise<void>;
90
127
  }, poster?: HttpPoster);
91
128
  private url;
92
129
  private authHeaders;
130
+ private callOnce;
131
+ /**
132
+ * One HTTP call, retried while the failure is one the SERVER told us to come
133
+ * back from. A 429 carries a window and a 5xx/network drop is not an answer
134
+ * about the camera — treating either as a terminal result is what let a probe
135
+ * the server never recorded still render as a green tick in the installer,
136
+ * leaving the portal with nothing to select and the customer with no way
137
+ * forward. `SESSION_EXPIRED` and every other 4xx are answers, and are raised
138
+ * on the first attempt.
139
+ *
140
+ * The retry lives HERE, not at the three call sites, because all of
141
+ * `discovered`, `results` and `ack` are the same statement — "this is what
142
+ * this machine found" — and a per-site retry is three chances to disagree.
143
+ */
93
144
  private call;
94
145
  /** Create the session + first display code. */
95
146
  start(meta?: {
@@ -1 +1 @@
1
- {"version":3,"file":"SetupSessionClient.d.ts","sourceRoot":"","sources":["../src/SetupSessionClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SetupSessionClient.d.ts","sourceRoot":"","sources":["../src/SetupSessionClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE7E;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,GAAG,WAAW,GAAG,UAAU,CAAC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wDAAwD;AACxD,MAAM,MAAM,cAAc,GACtB,6BAA6B,GAC7B,uBAAuB,GACvB,oBAAoB,CAAC;AAEzB,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE;QACV;;;;;WAKG;QACH,IAAI,EAAE,cAAc,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QACrC,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,IAAI,CAAC;IACT,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB;;;;;WAKG;QACH,YAAY,EAAE;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAChE,YAAY,CAAC,EAAE;YAAE,OAAO,EAAE,OAAO,CAAA;SAAE,CAAC;QACpC,OAAO,EAAE,KAAK,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,EAAE,MAAM,CAAC;YACjB,WAAW,EAAE,MAAM,CAAC;YACpB,UAAU,EAAE,MAAM,CAAC;YACnB,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,UAAU,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;YACvC,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,SAAS,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;SAC3B,CAAC,CAAC;KACJ,GAAG,IAAI,CAAC;CACV;AAED,qBAAa,wBAAyB,SAAQ,KAAK;;CAIlD;AAED;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;gBACzB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,GAAE,MAAM,GAAG,IAAW;CAKpF;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,SAAS,GACjE,MAAM,GAAG,IAAI,CAef;AAID,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;IACtD,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,aAAa,CAAuB;gBAG1C,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,sEAAsE;QACtE,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,6EAA6E;QAC7E,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,iEAAiE;QACjE,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KACvC,EACD,MAAM,CAAC,EAAE,UAAU;IAcrB,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,WAAW;YAQL,QAAQ;IA0CtB;;;;;;;;;;;;OAYG;YACW,IAAI;IAqClB,+CAA+C;IACzC,KAAK,CAAC,IAAI,GAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAgBrG,kDAAkD;IAClD,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI;IAKhD,cAAc,IAAI,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,oBAAoB,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAIvG,IAAI,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAUlC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,gBAAgB,CAAC,OAAO,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzF,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG3E"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SetupSessionClient = exports.SetupSessionExpiredError = void 0;
3
+ exports.SetupSessionClient = exports.SetupTransportError = exports.SetupSessionExpiredError = void 0;
4
+ exports.retryAfterMs = retryAfterMs;
4
5
  const AudienceAnalyzeClient_1 = require("./AudienceAnalyzeClient");
5
6
  class SetupSessionExpiredError extends Error {
6
7
  constructor() {
@@ -8,6 +9,46 @@ class SetupSessionExpiredError extends Error {
8
9
  }
9
10
  }
10
11
  exports.SetupSessionExpiredError = SetupSessionExpiredError;
12
+ /**
13
+ * A call that did not get an answer ABOUT THE CAMERA: the transport failed, or
14
+ * the server refused with something it invites a retry on. `statusCode` is 0
15
+ * when no response was produced at all (timeout, DNS, reset).
16
+ */
17
+ class SetupTransportError extends Error {
18
+ constructor(message, statusCode, retryAfterMs = null) {
19
+ super(message);
20
+ this.statusCode = statusCode;
21
+ this.retryAfterMs = retryAfterMs;
22
+ }
23
+ }
24
+ exports.SetupTransportError = SetupTransportError;
25
+ /**
26
+ * `Retry-After` in either RFC form — delta-seconds, or an HTTP-date. Returns
27
+ * null when absent/unparseable so the caller falls back to its own backoff, and
28
+ * clamps so a hostile or clock-skewed value cannot park setup for an hour.
29
+ */
30
+ function retryAfterMs(headers) {
31
+ if (!headers)
32
+ return null;
33
+ const raw = headers['retry-after'] ?? headers['Retry-After'];
34
+ const value = Array.isArray(raw) ? raw[0] : raw;
35
+ if (!value)
36
+ return null;
37
+ const seconds = Number(String(value).trim());
38
+ if (Number.isFinite(seconds)) {
39
+ if (seconds < 0)
40
+ return null;
41
+ return Math.min(seconds * 1000, RETRY_AFTER_CAP_MS);
42
+ }
43
+ const at = Date.parse(String(value));
44
+ if (!Number.isFinite(at))
45
+ return null;
46
+ const delta = at - Date.now();
47
+ if (delta <= 0)
48
+ return 0;
49
+ return Math.min(delta, RETRY_AFTER_CAP_MS);
50
+ }
51
+ const RETRY_AFTER_CAP_MS = 60000;
11
52
  class SetupSessionClient {
12
53
  constructor(options, poster) {
13
54
  this.sessionId = null;
@@ -15,6 +56,12 @@ class SetupSessionClient {
15
56
  this.apiBaseUrl = options.apiBaseUrl.replace(/\/+$/, '');
16
57
  this.fingerprint = options.connectorFingerprint;
17
58
  this.timeoutMs = options.timeoutMs ?? 15000;
59
+ this.maxAttempts = Math.max(1, options.maxAttempts ?? 4);
60
+ this.retryBaseMs = options.retryBaseMs ?? 1000;
61
+ this.retryMaxMs = options.retryMaxMs ?? 15000;
62
+ this.retryJitterMs = options.retryJitterMs ?? 1000;
63
+ this.sleep =
64
+ options.sleep ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
18
65
  this.poster = poster ?? AudienceAnalyzeClient_1.defaultHttpPoster;
19
66
  }
20
67
  url(path) {
@@ -28,13 +75,23 @@ class SetupSessionClient {
28
75
  'X-Connector-Fingerprint': this.fingerprint,
29
76
  };
30
77
  }
31
- async call(method, path, body, { authed = true } = {}) {
78
+ async callOnce(method, path, body, { authed = true } = {}) {
32
79
  const headers = { Accept: 'application/json' };
33
80
  if (method === 'POST')
34
81
  headers['Content-Type'] = 'application/json';
35
82
  if (authed)
36
83
  Object.assign(headers, this.authHeaders());
37
- const res = await this.poster(this.url(path), { method, headers, timeoutMs: this.timeoutMs }, body ? JSON.stringify(body) : '');
84
+ // A throw from the poster is the transport failing, never an answer about
85
+ // the camera. Tag it so the retry loop can tell it from a programming error
86
+ // raised above (`authHeaders()` on an unstarted session), which must surface
87
+ // on the first attempt rather than be retried into a backoff.
88
+ let res;
89
+ try {
90
+ res = await this.poster(this.url(path), { method, headers, timeoutMs: this.timeoutMs }, body ? JSON.stringify(body) : '');
91
+ }
92
+ catch (err) {
93
+ throw new SetupTransportError(`setup/${path} failed: ${err.message}`, 0);
94
+ }
38
95
  let parsed = {};
39
96
  try {
40
97
  parsed = res.body ? JSON.parse(res.body) : {};
@@ -46,10 +103,58 @@ class SetupSessionClient {
46
103
  throw new SetupSessionExpiredError();
47
104
  }
48
105
  if (res.statusCode < 200 || res.statusCode >= 300) {
49
- throw new Error(`setup/${path} failed (HTTP ${res.statusCode}): ${parsed.error || parsed.message || res.body.slice(0, 120)}`);
106
+ throw new SetupTransportError(`setup/${path} failed (HTTP ${res.statusCode}): ${parsed.error || parsed.message || res.body.slice(0, 120)}`, res.statusCode, retryAfterMs(res.headers));
50
107
  }
51
108
  return parsed;
52
109
  }
110
+ /**
111
+ * One HTTP call, retried while the failure is one the SERVER told us to come
112
+ * back from. A 429 carries a window and a 5xx/network drop is not an answer
113
+ * about the camera — treating either as a terminal result is what let a probe
114
+ * the server never recorded still render as a green tick in the installer,
115
+ * leaving the portal with nothing to select and the customer with no way
116
+ * forward. `SESSION_EXPIRED` and every other 4xx are answers, and are raised
117
+ * on the first attempt.
118
+ *
119
+ * The retry lives HERE, not at the three call sites, because all of
120
+ * `discovered`, `results` and `ack` are the same statement — "this is what
121
+ * this machine found" — and a per-site retry is three chances to disagree.
122
+ */
123
+ async call(method, path, body, opts = {}) {
124
+ let lastErr;
125
+ for (let attempt = 0; attempt < this.maxAttempts; attempt++) {
126
+ try {
127
+ return await this.callOnce(method, path, body, opts);
128
+ }
129
+ catch (err) {
130
+ lastErr = err;
131
+ if (err instanceof SetupSessionExpiredError)
132
+ throw err;
133
+ if (!(err instanceof SetupTransportError))
134
+ throw err;
135
+ // statusCode 0 = the request never produced a response (timeout, DNS, reset).
136
+ const status = err.statusCode;
137
+ const retryable = status === 0 || status === 429 || status >= 500;
138
+ if (!retryable || attempt === this.maxAttempts - 1)
139
+ throw err;
140
+ // `Retry-After` is a FLOOR, never a value to jitter below. The setup
141
+ // API's PG limiter reports the time left in a FIXED 60-second bucket
142
+ // (middleware/pgRateLimiter.js), so sleeping even 99% of it retries
143
+ // inside the same bucket, earns another 429 and burns an attempt.
144
+ // Wait it out in full and add the jitter on top.
145
+ //
146
+ // Full jitter is right for the fallback backoff, where the point is to
147
+ // de-collide many feeds on one box that all lost the same per-IP window
148
+ // — there is no server-stated deadline to undershoot.
149
+ const serverAsked = err.retryAfterMs;
150
+ const delay = serverAsked === null
151
+ ? Math.min(this.retryBaseMs * 2 ** attempt, this.retryMaxMs) * (0.5 + Math.random() * 0.5)
152
+ : serverAsked + Math.random() * this.retryJitterMs;
153
+ await this.sleep(Math.round(delay));
154
+ }
155
+ }
156
+ throw lastErr;
157
+ }
53
158
  /** Create the session + first display code. */
54
159
  async start(meta = {}) {
55
160
  const out = (await this.call('POST', 'start', {
@@ -1 +1 @@
1
- {"version":3,"file":"SetupSessionClient.js","sourceRoot":"","sources":["../src/SetupSessionClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SetupSessionClient.js","sourceRoot":"","sources":["../src/SetupSessionClient.ts"],"names":[],"mappings":"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"}
@@ -31,7 +31,7 @@ export interface DiagnosticReport {
31
31
  skipped: number;
32
32
  };
33
33
  }
34
- declare const SDK_VERSION = "0.2.127";
34
+ declare const SDK_VERSION = "0.2.129";
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.127';
66
+ const SDK_VERSION = '0.2.129';
67
67
  exports._SDK_VERSION = SDK_VERSION;
68
68
  // ---------------------------------------------------------------------------
69
69
  // ANSI helpers (no external deps)
@@ -0,0 +1,30 @@
1
+ /**
2
+ * The pixel dimensions of a JPEG, read from its own header.
3
+ *
4
+ * WHY THIS EXISTS AT ALL. A detector box arrives in PIXELS and an operator's
5
+ * region is NORMALIZED, so one of them has to be converted and neither the
6
+ * detector wire nor `DetectResult` carries a frame size. Asking the service for
7
+ * one would change a FROZEN contract (`cctv-detector-tier.md`: it carries
8
+ * `classes` and nothing else) to obtain a number already present in the bytes we
9
+ * just sent it.
10
+ *
11
+ * WHY NOT A DECODE. `sharp` is not a connector dependency and a full decode of
12
+ * every frame to learn two integers is a per-frame cost on the hot path. The SOF
13
+ * marker is 9 bytes into a segment that appears once, near the front.
14
+ *
15
+ * IT RETURNS NULL RATHER THAN GUESSING. A truncated or non-JPEG buffer has no
16
+ * dimensions, and inventing 1920x1080 would silently rescale every region — a
17
+ * doorway at x=0.4 lands somewhere else and the alert quietly watches the wrong
18
+ * part of the room. The caller must treat null as "no region can be applied",
19
+ * which degrades to the unfocused count rather than to zero.
20
+ */
21
+ export interface JpegFrameSize {
22
+ width: number;
23
+ height: number;
24
+ }
25
+ /**
26
+ * @param jpeg the raw bytes, exactly as posted to the detector
27
+ * @returns the frame size, or null when the buffer is not a readable JPEG
28
+ */
29
+ export declare function readJpegFrameSize(jpeg: Uint8Array | null | undefined): JpegFrameSize | null;
30
+ //# sourceMappingURL=jpegFrameSize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jpegFrameSize.d.ts","sourceRoot":"","sources":["../src/jpegFrameSize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAiBH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,GAAG,aAAa,GAAG,IAAI,CAyC3F"}