@trillboards/edge-sdk 0.2.93 → 0.2.95
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/deploy/detector/bench/litert-twin-parity.json +73 -1
- package/deploy/detector/tests/test_onnx_artifact_probe.py +618 -0
- package/deploy/detector/trillboards_detector/labels.py +181 -1
- package/dist/EdgeAgent.js +1 -1
- package/dist/diagnose.d.ts +1 -1
- package/dist/diagnose.js +1 -1
- package/dist/setupMode.d.ts +7 -0
- package/dist/setupMode.d.ts.map +1 -1
- package/dist/setupMode.js +37 -3
- package/dist/setupMode.js.map +1 -1
- package/package.json +9 -2
|
@@ -81,6 +81,24 @@
|
|
|
81
81
|
"onnx": "forklift_akdve_11n.onnx",
|
|
82
82
|
"litert": "forklift_akdve_11n.tflite"
|
|
83
83
|
},
|
|
84
|
+
{
|
|
85
|
+
"layout": "anchor_4_plus_nc",
|
|
86
|
+
"imgsz": 640,
|
|
87
|
+
"box_scale_applied": 640.0,
|
|
88
|
+
"box_residual_px": 0.001003265380859375,
|
|
89
|
+
"box_residual_unscaled": 651.8335539102554,
|
|
90
|
+
"cls_residual": 1.3380153518482985e-07,
|
|
91
|
+
"pass": true,
|
|
92
|
+
"reason": "ok",
|
|
93
|
+
"onnx": "gh_forklift_combine.onnx",
|
|
94
|
+
"litert": "gh_forklift_combine.tflite",
|
|
95
|
+
"model_id": "gh_forklift_combine",
|
|
96
|
+
"box_units": "normalized",
|
|
97
|
+
"box_scale_to_pixels": 640.0,
|
|
98
|
+
"litert_sha256": "c196a45613726e1a0bd522cd7140fde58784d71d9ffadfec00b033f8914b9df5",
|
|
99
|
+
"litert_bytes": 12257807,
|
|
100
|
+
"evidence": "twin parity: box residual 0.001003 px after x640, UNSCALED 651.8 px \u2014 the scale is load-bearing, not cosmetic. Class residual 1.34e-07 with no scaling at all."
|
|
101
|
+
},
|
|
84
102
|
{
|
|
85
103
|
"layout": "anchor_4_plus_nc",
|
|
86
104
|
"imgsz": 640,
|
|
@@ -141,6 +159,24 @@
|
|
|
141
159
|
"onnx": "hg-v6.onnx",
|
|
142
160
|
"litert": "hg-v6.tflite"
|
|
143
161
|
},
|
|
162
|
+
{
|
|
163
|
+
"layout": "anchor_4_plus_nc",
|
|
164
|
+
"imgsz": 640,
|
|
165
|
+
"box_scale_applied": 640.0,
|
|
166
|
+
"box_residual_px": 0.001068115234375,
|
|
167
|
+
"box_residual_unscaled": 634.6248278617859,
|
|
168
|
+
"cls_residual": 1.2764758139383048e-07,
|
|
169
|
+
"pass": true,
|
|
170
|
+
"reason": "ok",
|
|
171
|
+
"onnx": "ppe_construction_17cls_v8n.onnx",
|
|
172
|
+
"litert": "ppe_construction_17cls_v8n.tflite",
|
|
173
|
+
"model_id": "ppe_construction_17cls_v8n",
|
|
174
|
+
"box_units": "normalized",
|
|
175
|
+
"box_scale_to_pixels": 640.0,
|
|
176
|
+
"litert_sha256": "08ebf94fec8c864eb4c1fae009d8f7686252c622fafed37c71d80f117884173b",
|
|
177
|
+
"litert_bytes": 12268767,
|
|
178
|
+
"evidence": "twin parity: box residual 0.001068 px after x640, UNSCALED 634.6 px \u2014 the scale is load-bearing, not cosmetic. Class residual 1.28e-07 with no scaling at all."
|
|
179
|
+
},
|
|
144
180
|
{
|
|
145
181
|
"layout": "anchor_4_plus_nc",
|
|
146
182
|
"imgsz": 640,
|
|
@@ -177,6 +213,42 @@
|
|
|
177
213
|
"onnx": "ppe_keremberke_v8s.onnx",
|
|
178
214
|
"litert": "ppe_keremberke_v8s.tflite"
|
|
179
215
|
},
|
|
216
|
+
{
|
|
217
|
+
"layout": "anchor_4_plus_nc",
|
|
218
|
+
"imgsz": 640,
|
|
219
|
+
"box_scale_applied": 640.0,
|
|
220
|
+
"box_residual_px": 0.00225830078125,
|
|
221
|
+
"box_residual_unscaled": 641.4581891298294,
|
|
222
|
+
"cls_residual": 1.3920431740643835e-07,
|
|
223
|
+
"pass": true,
|
|
224
|
+
"reason": "ok",
|
|
225
|
+
"onnx": "ppe_killuminati_19cls_v8s.onnx",
|
|
226
|
+
"litert": "ppe_killuminati_19cls_v8s.tflite",
|
|
227
|
+
"model_id": "ppe_killuminati_19cls_v8s",
|
|
228
|
+
"box_units": "normalized",
|
|
229
|
+
"box_scale_to_pixels": 640.0,
|
|
230
|
+
"litert_sha256": "493f93835ba89904296f14b5dd8dc1451612ec319fdf968a29bede69b24debb5",
|
|
231
|
+
"litert_bytes": 44764391,
|
|
232
|
+
"evidence": "twin parity: box residual 0.002258 px after x640, UNSCALED 641.5 px \u2014 the scale is load-bearing, not cosmetic. Class residual 1.39e-07 with no scaling at all."
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"layout": "anchor_4_plus_nc",
|
|
236
|
+
"imgsz": 640,
|
|
237
|
+
"box_scale_applied": 640.0,
|
|
238
|
+
"box_residual_px": 0.0002117156982421875,
|
|
239
|
+
"box_residual_unscaled": 636.5309634804726,
|
|
240
|
+
"cls_residual": 1.373183451391924e-07,
|
|
241
|
+
"pass": true,
|
|
242
|
+
"reason": "ok",
|
|
243
|
+
"onnx": "ppe_vyra_14cls_v8m.onnx",
|
|
244
|
+
"litert": "ppe_vyra_14cls_v8m.tflite",
|
|
245
|
+
"model_id": "ppe_vyra_14cls_v8m",
|
|
246
|
+
"box_units": "normalized",
|
|
247
|
+
"box_scale_to_pixels": 640.0,
|
|
248
|
+
"litert_sha256": "bef4efe403c834d1b05fa5217d97fcbcefde3da890b964141692fad66ca260f1",
|
|
249
|
+
"litert_bytes": 103663784,
|
|
250
|
+
"evidence": "twin parity: box residual 0.0002117 px after x640, UNSCALED 636.5 px \u2014 the scale is load-bearing, not cosmetic. Class residual 1.37e-07 with no scaling at all."
|
|
251
|
+
},
|
|
180
252
|
{
|
|
181
253
|
"layout": "end2end_n_6",
|
|
182
254
|
"imgsz": 640,
|
|
@@ -238,4 +310,4 @@
|
|
|
238
310
|
"litert": "weapon_gunknife_11n.tflite"
|
|
239
311
|
}
|
|
240
312
|
]
|
|
241
|
-
}
|
|
313
|
+
}
|
|
@@ -0,0 +1,618 @@
|
|
|
1
|
+
"""`scripts/sensing/onnx_artifact_probe.py` — the DECLARED layout, VERIFIED.
|
|
2
|
+
|
|
3
|
+
WHY THIS SUITE LIVES HERE AND NOT NEXT TO THE SCRIPT
|
|
4
|
+
----------------------------------------------------
|
|
5
|
+
The probe is Python, and the only lane in this repo that executes Python is
|
|
6
|
+
`detector-service`, which discovers `test_*.py` under `deploy/detector`. Putting
|
|
7
|
+
these cases anywhere else would make them the shape the probe itself is written
|
|
8
|
+
against: a check that exists and never runs. `test_session.py`'s
|
|
9
|
+
`TestEveryVocabularyConstructionDeclaresItsVariant` already reaches out of this
|
|
10
|
+
package into `scripts/sensing` for the same reason, and it did so because the
|
|
11
|
+
first version of that guard scanned only `deploy/detector` and passed while the
|
|
12
|
+
probe held a broken `ModelVocabulary` construction.
|
|
13
|
+
|
|
14
|
+
STDLIB ONLY, so it runs on that lane's bare interpreter — no onnxruntime, no
|
|
15
|
+
numpy, no Pillow, no ~12 MiB artifact. Everything under test here is arithmetic
|
|
16
|
+
over shapes an exporter wrote down, so a fake output descriptor with a `.name`
|
|
17
|
+
and a `.shape` is not a weaker input than a real `NodeArg`; it is the same two
|
|
18
|
+
fields. What it cannot reach — that a graph this accepts also RUNS — is covered
|
|
19
|
+
by the probe's own measurement child, which loads the artifact and infers.
|
|
20
|
+
|
|
21
|
+
WHAT IS BEING PROTECTED
|
|
22
|
+
-----------------------
|
|
23
|
+
Three failures, none of which raises anything at runtime:
|
|
24
|
+
|
|
25
|
+
* a DEFAULT that moved. The probe answers `--artifact` alone exactly as it did
|
|
26
|
+
before layouts were declarable, which is the only reason `rfdetr_medium`'s
|
|
27
|
+
published probe result is still reproducible. A new flag that quietly widened
|
|
28
|
+
that path would republish a different number under the same provenance.
|
|
29
|
+
* a layout DECLARED that the graph cannot speak. `[1, 300, 6]` and
|
|
30
|
+
`[1, 6, 8400]` are both rank-3 with a 6 in them, and the wrong one decodes
|
|
31
|
+
into a confident, meaningless table.
|
|
32
|
+
* a `4 + nc` check counting the wrong `nc`. Distinct NAMES and LOGIT SLOTS are
|
|
33
|
+
different numbers on real artifacts in both directions, and using the name
|
|
34
|
+
count rejects healthy graphs.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
from __future__ import annotations
|
|
38
|
+
|
|
39
|
+
import contextlib
|
|
40
|
+
import importlib.util
|
|
41
|
+
import io
|
|
42
|
+
import json
|
|
43
|
+
import pathlib
|
|
44
|
+
import sys
|
|
45
|
+
import tempfile
|
|
46
|
+
import unittest
|
|
47
|
+
|
|
48
|
+
from trillboards_detector import labels as labels_mod
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def _load_probe():
|
|
52
|
+
"""Import the probe BY PATH, or return None on a checkout that has none.
|
|
53
|
+
|
|
54
|
+
`deploy/` ships inside the npm tarball, so on an installed connector
|
|
55
|
+
`scripts/sensing` is simply absent. The module is loaded rather than asserted
|
|
56
|
+
for exactly that reason — the same concession `test_session.py` makes about
|
|
57
|
+
the repo roots it scans.
|
|
58
|
+
"""
|
|
59
|
+
here = pathlib.Path(__file__).resolve().parent.parent
|
|
60
|
+
for parent in here.parents:
|
|
61
|
+
# A git WORKTREE's `.git` is a file, not a directory.
|
|
62
|
+
if not (parent / ".git").exists():
|
|
63
|
+
continue
|
|
64
|
+
candidate = parent / "scripts" / "sensing" / "onnx_artifact_probe.py"
|
|
65
|
+
if not candidate.is_file():
|
|
66
|
+
return None
|
|
67
|
+
spec = importlib.util.spec_from_file_location("onnx_artifact_probe_under_test", candidate)
|
|
68
|
+
module = importlib.util.module_from_spec(spec)
|
|
69
|
+
spec.loader.exec_module(module)
|
|
70
|
+
return module
|
|
71
|
+
return None
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
PROBE = _load_probe()
|
|
75
|
+
NO_PROBE = "scripts/sensing/onnx_artifact_probe.py is not in this checkout"
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
class Out:
|
|
79
|
+
"""An ORT output descriptor, which is a `.name` and a `.shape` and nothing else.
|
|
80
|
+
|
|
81
|
+
A dynamic axis arrives from onnxruntime as a symbolic STRING rather than an
|
|
82
|
+
int, so several cases here pass one — that is a real artifact property and
|
|
83
|
+
the probe's branches turn on it.
|
|
84
|
+
"""
|
|
85
|
+
|
|
86
|
+
def __init__(self, name: str, shape: "list"):
|
|
87
|
+
self.name = name
|
|
88
|
+
self.shape = shape
|
|
89
|
+
|
|
90
|
+
def __repr__(self) -> str: # pragma: no cover - only reached in a failure message
|
|
91
|
+
return f"Out({self.name!r}, {self.shape!r})"
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
DETS_LABELS_91 = [Out("dets", [1, 300, 4]), Out("labels", [1, 300, 91])]
|
|
95
|
+
#: `ppe_vyra_14cls_v8m.onnx`, measured: 14 classes, so 4 + 14 = 18 channels.
|
|
96
|
+
ANCHOR_14 = [Out("output0", [1, 18, 8400])]
|
|
97
|
+
#: `gh_fall_tonlong.onnx`, measured: 11 channels over 8400 anchors.
|
|
98
|
+
ANCHOR_FALL = [Out("output0", [1, 11, 8400])]
|
|
99
|
+
END2END = [Out("output0", [1, 300, 6])]
|
|
100
|
+
|
|
101
|
+
#: `gh_fall_tonlong.onnx`'s own `names` metadata, byte for byte. SEVEN slots,
|
|
102
|
+
#: and `Violence`/`violence` fold to ONE canonical name.
|
|
103
|
+
FALL_NAMES = {0: "Violence", 1: "fall", 2: "fire", 3: "sit", 4: "sleep", 5: "standing", 6: "violence"}
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
@contextlib.contextmanager
|
|
107
|
+
def _captured_stdout():
|
|
108
|
+
buf = io.StringIO()
|
|
109
|
+
original = sys.stdout
|
|
110
|
+
sys.stdout = buf
|
|
111
|
+
try:
|
|
112
|
+
yield buf
|
|
113
|
+
finally:
|
|
114
|
+
sys.stdout = original
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
class ProbeCase(unittest.TestCase):
|
|
118
|
+
"""Shared helpers: the probe refuses by writing JSON and exiting 1."""
|
|
119
|
+
|
|
120
|
+
def args(self, *argv):
|
|
121
|
+
"""A parsed `Namespace` through the REAL CLI, never a hand-built stand-in.
|
|
122
|
+
|
|
123
|
+
Every case that pretends to be a command line has to go through the
|
|
124
|
+
parser the command line goes through, or the suite stops covering the
|
|
125
|
+
surface it claims to.
|
|
126
|
+
"""
|
|
127
|
+
return PROBE.parse_args(["--artifact", "unused.onnx", *argv])
|
|
128
|
+
|
|
129
|
+
def assertRefuses(self, fn, *args, **kwargs):
|
|
130
|
+
"""Run something expected to `_fail`, and return its refusal payload.
|
|
131
|
+
|
|
132
|
+
Asserts the WHOLE contract of a refusal, not merely that it happened:
|
|
133
|
+
`{"ok": false, "step": ..., "reason": ...}` on stdout and exit 1. The
|
|
134
|
+
publisher reads `reason` off the LAST stdout line of a non-zero exit, so
|
|
135
|
+
a refusal that raised instead — or exited 0, or wrote prose — would reach
|
|
136
|
+
it as "the probe failed" with a stack trace attached.
|
|
137
|
+
"""
|
|
138
|
+
with _captured_stdout() as buf:
|
|
139
|
+
with self.assertRaises(SystemExit) as raised:
|
|
140
|
+
fn(*args, **kwargs)
|
|
141
|
+
self.assertEqual(raised.exception.code, 1)
|
|
142
|
+
lines = [line for line in buf.getvalue().splitlines() if line.strip()]
|
|
143
|
+
self.assertTrue(lines, "a refusal must write JSON on stdout")
|
|
144
|
+
payload = json.loads(lines[-1])
|
|
145
|
+
self.assertIs(payload["ok"], False)
|
|
146
|
+
self.assertTrue(payload["step"])
|
|
147
|
+
self.assertTrue(payload["reason"])
|
|
148
|
+
return payload
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
@unittest.skipIf(PROBE is None, NO_PROBE)
|
|
152
|
+
class TestTheDefaultDidNotMove(ProbeCase):
|
|
153
|
+
"""`--artifact` alone must answer exactly as it did before layouts existed.
|
|
154
|
+
|
|
155
|
+
`rfdetr_medium` was published by a run that passed nothing else, and its
|
|
156
|
+
`coco_classes`, `resident_mb` and graph contract are committed against that
|
|
157
|
+
run. A widened default would republish different numbers under the same
|
|
158
|
+
provenance, which is worse than a refusal because nothing would notice.
|
|
159
|
+
"""
|
|
160
|
+
|
|
161
|
+
def test_no_declaration_is_the_rfdetr_contract(self):
|
|
162
|
+
contract, source = PROBE._resolve_variant(labels_mod, self.args())
|
|
163
|
+
self.assertEqual(contract.output_layout, labels_mod.RFDETR_DETS_LABELS)
|
|
164
|
+
self.assertEqual(contract.box_units, labels_mod.BOX_UNITS_PIXELS)
|
|
165
|
+
self.assertEqual(contract.box_scale_to_pixels, 1.0)
|
|
166
|
+
self.assertIn("default", source)
|
|
167
|
+
|
|
168
|
+
def test_a_graph_with_no_labels_output_is_still_refused(self):
|
|
169
|
+
reason = self.assertRefuses(
|
|
170
|
+
PROBE._graph_class_axis, labels_mod, labels_mod.RFDETR_DETS_LABELS, ANCHOR_14,
|
|
171
|
+
)["reason"]
|
|
172
|
+
# The refusal that has always been here, and the fact that identifies it.
|
|
173
|
+
self.assertIn("`labels`", reason)
|
|
174
|
+
# It now also says what to do about it, because there IS something.
|
|
175
|
+
self.assertIn("--variant-from-card", reason)
|
|
176
|
+
self.assertIn("output0[1, 18, 8400]", reason)
|
|
177
|
+
|
|
178
|
+
def test_the_rfdetr_class_axis_is_still_read_off_labels(self):
|
|
179
|
+
self.assertEqual(
|
|
180
|
+
PROBE._graph_class_axis(labels_mod, labels_mod.RFDETR_DETS_LABELS, DETS_LABELS_91),
|
|
181
|
+
91,
|
|
182
|
+
)
|
|
183
|
+
|
|
184
|
+
def test_a_dynamic_rfdetr_class_axis_is_still_refused(self):
|
|
185
|
+
outputs = [Out("dets", [1, 300, 4]), Out("labels", [1, 300, "num_classes"])]
|
|
186
|
+
reason = self.assertRefuses(
|
|
187
|
+
PROBE._graph_class_axis, labels_mod, labels_mod.RFDETR_DETS_LABELS, outputs,
|
|
188
|
+
)["reason"]
|
|
189
|
+
self.assertIn("fixed class axis", reason)
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
@unittest.skipIf(PROBE is None, NO_PROBE)
|
|
193
|
+
class TestDeclaredLayoutIsVerified(ProbeCase):
|
|
194
|
+
"""Each layout accepted on a shape it can speak, refused on one it cannot.
|
|
195
|
+
|
|
196
|
+
The refusals name the DECLARED layout and the ACTUAL outputs, because those
|
|
197
|
+
two facts are what tells an operator whether the artifact is wrong or the
|
|
198
|
+
card is.
|
|
199
|
+
"""
|
|
200
|
+
|
|
201
|
+
def test_anchor_accepted_and_its_class_axis_is_channels_minus_four(self):
|
|
202
|
+
self.assertEqual(
|
|
203
|
+
PROBE._graph_class_axis(labels_mod, labels_mod.ANCHOR_4_PLUS_NC, ANCHOR_14), 14,
|
|
204
|
+
)
|
|
205
|
+
|
|
206
|
+
def test_end2end_accepted_and_declares_no_class_axis(self):
|
|
207
|
+
# `None`, not 0 and not a guess: the class index rides in column 5, so
|
|
208
|
+
# the graph says nothing at all about how many classes this model has.
|
|
209
|
+
self.assertIsNone(
|
|
210
|
+
PROBE._graph_class_axis(labels_mod, labels_mod.END2END_N_6, END2END),
|
|
211
|
+
)
|
|
212
|
+
|
|
213
|
+
def test_anchor_refused_on_an_end2end_shape(self):
|
|
214
|
+
# THE DISAMBIGUATOR. `[1, 300, 6]` read as an anchor head is 296 classes
|
|
215
|
+
# over 6 anchors and decodes without raising.
|
|
216
|
+
reason = self.assertRefuses(
|
|
217
|
+
PROBE._graph_class_axis, labels_mod, labels_mod.ANCHOR_4_PLUS_NC, END2END,
|
|
218
|
+
)["reason"]
|
|
219
|
+
self.assertIn(labels_mod.ANCHOR_4_PLUS_NC, reason)
|
|
220
|
+
self.assertIn("output0[1, 300, 6]", reason)
|
|
221
|
+
self.assertIn("296 classes over 6 anchors", reason)
|
|
222
|
+
|
|
223
|
+
def test_end2end_refused_on_an_anchor_shape(self):
|
|
224
|
+
reason = self.assertRefuses(
|
|
225
|
+
PROBE._graph_class_axis, labels_mod, labels_mod.END2END_N_6, ANCHOR_FALL,
|
|
226
|
+
)["reason"]
|
|
227
|
+
self.assertIn(labels_mod.END2END_N_6, reason)
|
|
228
|
+
self.assertIn("output0[1, 11, 8400]", reason)
|
|
229
|
+
|
|
230
|
+
def test_rfdetr_refused_on_an_anchor_shape(self):
|
|
231
|
+
reason = self.assertRefuses(
|
|
232
|
+
PROBE._graph_class_axis, labels_mod, labels_mod.RFDETR_DETS_LABELS, ANCHOR_FALL,
|
|
233
|
+
)["reason"]
|
|
234
|
+
self.assertIn(labels_mod.RFDETR_DETS_LABELS, reason)
|
|
235
|
+
|
|
236
|
+
def test_a_single_output_layout_refuses_a_two_output_graph(self):
|
|
237
|
+
outputs = [Out("output0", [1, 18, 8400]), Out("proto", [1, 32, 160, 160])]
|
|
238
|
+
reason = self.assertRefuses(
|
|
239
|
+
PROBE._graph_class_axis, labels_mod, labels_mod.ANCHOR_4_PLUS_NC, outputs,
|
|
240
|
+
)["reason"]
|
|
241
|
+
self.assertIn("exactly ONE graph output", reason)
|
|
242
|
+
self.assertIn("proto", reason)
|
|
243
|
+
|
|
244
|
+
def test_anchor_refuses_a_rank_two_output(self):
|
|
245
|
+
reason = self.assertRefuses(
|
|
246
|
+
PROBE._graph_class_axis, labels_mod, labels_mod.ANCHOR_4_PLUS_NC, [Out("output0", [18, 8400])],
|
|
247
|
+
)["reason"]
|
|
248
|
+
self.assertIn("rank-3", reason)
|
|
249
|
+
|
|
250
|
+
def test_anchor_refuses_a_batch_that_is_not_one(self):
|
|
251
|
+
reason = self.assertRefuses(
|
|
252
|
+
PROBE._graph_class_axis, labels_mod, labels_mod.ANCHOR_4_PLUS_NC, [Out("output0", [4, 18, 8400])],
|
|
253
|
+
)["reason"]
|
|
254
|
+
self.assertIn("batch-1", reason)
|
|
255
|
+
|
|
256
|
+
def test_anchor_refuses_a_dynamic_class_axis(self):
|
|
257
|
+
# The class count is one of the two numbers a detector arm is meaningless
|
|
258
|
+
# without, and a symbolic axis does not carry it.
|
|
259
|
+
reason = self.assertRefuses(
|
|
260
|
+
PROBE._graph_class_axis, labels_mod, labels_mod.ANCHOR_4_PLUS_NC,
|
|
261
|
+
[Out("output0", [1, "channels", 8400])],
|
|
262
|
+
)["reason"]
|
|
263
|
+
self.assertIn("dynamic", reason)
|
|
264
|
+
|
|
265
|
+
def test_anchor_refuses_box_channels_with_no_class_left(self):
|
|
266
|
+
reason = self.assertRefuses(
|
|
267
|
+
PROBE._graph_class_axis, labels_mod, labels_mod.ANCHOR_4_PLUS_NC, [Out("output0", [1, 4, 8400])],
|
|
268
|
+
)["reason"]
|
|
269
|
+
self.assertIn("at least one class", reason)
|
|
270
|
+
|
|
271
|
+
def test_a_dynamic_anchor_count_does_not_block_a_real_head(self):
|
|
272
|
+
# `anchors > channels` is skipped rather than guessed when the axis is
|
|
273
|
+
# symbolic. The tensor ORT actually returns is still checked by
|
|
274
|
+
# `decode_anchor_4_plus_nc`'s own `expected_classes` refusal.
|
|
275
|
+
self.assertEqual(
|
|
276
|
+
PROBE._graph_class_axis(
|
|
277
|
+
labels_mod, labels_mod.ANCHOR_4_PLUS_NC, [Out("output0", [1, 18, "anchors"])],
|
|
278
|
+
),
|
|
279
|
+
14,
|
|
280
|
+
)
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
@unittest.skipIf(PROBE is None, NO_PROBE)
|
|
284
|
+
class TestFourPlusNcCountsLogitSlots(ProbeCase):
|
|
285
|
+
"""`4 + nc` where nc is the LOGIT WIDTH — never the number of distinct names.
|
|
286
|
+
|
|
287
|
+
This is the case that would silently invert the check. Both directions are
|
|
288
|
+
live on real artifacts:
|
|
289
|
+
|
|
290
|
+
* COCO-91 names 80 classes on a 91-wide axis (gaps in the category ids);
|
|
291
|
+
* `gh_fall_tonlong` declares SEVEN slots of which `Violence` and `violence`
|
|
292
|
+
fold to one canonical name, so it has 7 logit slots and 6 names.
|
|
293
|
+
|
|
294
|
+
Its graph is `[1, 11, 8400]`. `4 + 7` is 11 and matches; `4 + 6` is 10 and
|
|
295
|
+
would reject a perfectly healthy head.
|
|
296
|
+
|
|
297
|
+
`_verify_class_axis_width` passes by construction on a real run — the width it
|
|
298
|
+
is handed was read off the same graph — so these cases are what EXERCISES it.
|
|
299
|
+
That is the point of it: it is a tripwire on the derivation, and a tripwire
|
|
300
|
+
nothing pulls is indistinguishable from one that is wired wrong.
|
|
301
|
+
"""
|
|
302
|
+
|
|
303
|
+
def test_the_fall_artifact_has_seven_slots_and_six_names(self):
|
|
304
|
+
slot_map = PROBE._canonical_slot_map(labels_mod, FALL_NAMES)
|
|
305
|
+
self.assertEqual(len(slot_map), 7)
|
|
306
|
+
self.assertEqual(len(set(slot_map.values())), 6)
|
|
307
|
+
self.assertEqual(slot_map[0], slot_map[6])
|
|
308
|
+
|
|
309
|
+
def test_the_logit_width_matches_the_real_graph(self):
|
|
310
|
+
# No refusal: this is the healthy case, and it must stay healthy.
|
|
311
|
+
PROBE._verify_class_axis_width(
|
|
312
|
+
labels_mod, labels_mod.ANCHOR_4_PLUS_NC, ANCHOR_FALL, 7,
|
|
313
|
+
)
|
|
314
|
+
|
|
315
|
+
def test_the_distinct_name_count_would_reject_the_same_graph(self):
|
|
316
|
+
reason = self.assertRefuses(
|
|
317
|
+
PROBE._verify_class_axis_width,
|
|
318
|
+
labels_mod, labels_mod.ANCHOR_4_PLUS_NC, ANCHOR_FALL, 6,
|
|
319
|
+
)["reason"]
|
|
320
|
+
self.assertIn("11 wide", reason)
|
|
321
|
+
self.assertIn("needs 10", reason)
|
|
322
|
+
|
|
323
|
+
def test_a_committed_vocabulary_narrower_than_the_graph_is_refused(self):
|
|
324
|
+
reason = self.assertRefuses(
|
|
325
|
+
PROBE._verify_class_axis_width,
|
|
326
|
+
labels_mod, labels_mod.ANCHOR_4_PLUS_NC, ANCHOR_14, 13,
|
|
327
|
+
)["reason"]
|
|
328
|
+
self.assertIn("18 wide", reason)
|
|
329
|
+
self.assertIn("needs 17", reason)
|
|
330
|
+
|
|
331
|
+
def test_rfdetr_width_is_checked_against_the_labels_axis(self):
|
|
332
|
+
PROBE._verify_class_axis_width(
|
|
333
|
+
labels_mod, labels_mod.RFDETR_DETS_LABELS, DETS_LABELS_91, 91,
|
|
334
|
+
)
|
|
335
|
+
reason = self.assertRefuses(
|
|
336
|
+
PROBE._verify_class_axis_width,
|
|
337
|
+
labels_mod, labels_mod.RFDETR_DETS_LABELS, DETS_LABELS_91, 80,
|
|
338
|
+
)["reason"]
|
|
339
|
+
# COCO-91 names EIGHTY classes on a NINETY-ONE-wide axis, so the name
|
|
340
|
+
# count is the wrong number here too — in the other direction.
|
|
341
|
+
self.assertIn("91 wide", reason)
|
|
342
|
+
|
|
343
|
+
def test_end2end_has_no_width_to_check(self):
|
|
344
|
+
# Not an omission: the class index is a column, so any width is
|
|
345
|
+
# consistent with the graph and a check would be theatre.
|
|
346
|
+
PROBE._verify_class_axis_width(labels_mod, labels_mod.END2END_N_6, END2END, 3)
|
|
347
|
+
PROBE._verify_class_axis_width(labels_mod, labels_mod.END2END_N_6, END2END, 91)
|
|
348
|
+
|
|
349
|
+
def test_a_vocabulary_with_two_spellings_of_one_word_is_unpublishable(self):
|
|
350
|
+
# The other half of the same artifact: the SHAPE is fine, the LIST is
|
|
351
|
+
# not, and `ModelVocabulary` refuses it at construction on a device too.
|
|
352
|
+
with self.assertRaises(ValueError) as raised:
|
|
353
|
+
PROBE._build_vocabulary(
|
|
354
|
+
labels_mod,
|
|
355
|
+
"fall_specialist",
|
|
356
|
+
PROBE._canonical_slot_map(labels_mod, FALL_NAMES),
|
|
357
|
+
7,
|
|
358
|
+
labels_mod.VariantContract(
|
|
359
|
+
labels_mod.ANCHOR_4_PLUS_NC, labels_mod.BOX_UNITS_PIXELS, 1.0,
|
|
360
|
+
),
|
|
361
|
+
)
|
|
362
|
+
self.assertIn("two slots share one class name", str(raised.exception))
|
|
363
|
+
|
|
364
|
+
|
|
365
|
+
@unittest.skipIf(PROBE is None, NO_PROBE)
|
|
366
|
+
class TestBoxUnitsAreRecordedNeverInvented(ProbeCase):
|
|
367
|
+
"""A coordinate space is declared or the run is refused. It is never guessed.
|
|
368
|
+
|
|
369
|
+
`session.py` multiplies by `box_scale_to_pixels` and draws, without ever
|
|
370
|
+
re-deriving from the tensor, so a defaulted value is a 640x error that raises
|
|
371
|
+
nothing on an unpadded frame. RF-DETR is the one exemption and it is
|
|
372
|
+
structural: its branch calls `postprocess`, which does its own
|
|
373
|
+
normalised-to-frame scaling and never reads the contract.
|
|
374
|
+
"""
|
|
375
|
+
|
|
376
|
+
def test_a_non_rfdetr_layout_without_box_units_is_refused(self):
|
|
377
|
+
reason = self.assertRefuses(
|
|
378
|
+
PROBE._resolve_variant, labels_mod, self.args("--output-layout", labels_mod.ANCHOR_4_PLUS_NC),
|
|
379
|
+
)["reason"]
|
|
380
|
+
self.assertIn("--box-units", reason)
|
|
381
|
+
self.assertIn("640x too small", reason)
|
|
382
|
+
|
|
383
|
+
def test_end2end_without_box_units_is_refused_too(self):
|
|
384
|
+
self.assertRefuses(
|
|
385
|
+
PROBE._resolve_variant, labels_mod, self.args("--output-layout", labels_mod.END2END_N_6),
|
|
386
|
+
)
|
|
387
|
+
|
|
388
|
+
def test_normalized_without_a_scale_is_refused(self):
|
|
389
|
+
# 1.0 IS positive, so `VariantContract` would accept the default and the
|
|
390
|
+
# boxes would be silently wrong. The refusal has to happen before it.
|
|
391
|
+
reason = self.assertRefuses(
|
|
392
|
+
PROBE._resolve_variant, labels_mod,
|
|
393
|
+
self.args("--output-layout", labels_mod.ANCHOR_4_PLUS_NC, "--box-units", "normalized"),
|
|
394
|
+
)["reason"]
|
|
395
|
+
self.assertIn("--box-scale-to-pixels", reason)
|
|
396
|
+
|
|
397
|
+
def test_normalized_with_a_scale_is_carried_through(self):
|
|
398
|
+
contract, source = PROBE._resolve_variant(labels_mod, self.args(
|
|
399
|
+
"--output-layout", labels_mod.ANCHOR_4_PLUS_NC,
|
|
400
|
+
"--box-units", "normalized", "--box-scale-to-pixels", "640",
|
|
401
|
+
))
|
|
402
|
+
self.assertEqual(contract.box_units, labels_mod.BOX_UNITS_NORMALIZED)
|
|
403
|
+
self.assertEqual(contract.box_scale_to_pixels, 640.0)
|
|
404
|
+
self.assertIn("--output-layout", source)
|
|
405
|
+
|
|
406
|
+
def test_pixels_with_a_scale_that_is_not_one_is_refused(self):
|
|
407
|
+
reason = self.assertRefuses(
|
|
408
|
+
PROBE._resolve_variant, labels_mod,
|
|
409
|
+
self.args("--output-layout", labels_mod.ANCHOR_4_PLUS_NC,
|
|
410
|
+
"--box-units", "pixels", "--box-scale-to-pixels", "640"),
|
|
411
|
+
)["reason"]
|
|
412
|
+
self.assertIn("already pixels", reason)
|
|
413
|
+
|
|
414
|
+
def test_a_scale_without_units_is_refused_rather_than_overwritten(self):
|
|
415
|
+
# RF-DETR is the one layout whose units may be omitted, so it is also the
|
|
416
|
+
# one place a declared scale could be silently replaced by the 1.0 that
|
|
417
|
+
# fallback supplies. A declaration accepted and discarded is worse than a
|
|
418
|
+
# refusal: nothing downstream can tell it happened.
|
|
419
|
+
reason = self.assertRefuses(
|
|
420
|
+
PROBE._resolve_variant, labels_mod,
|
|
421
|
+
self.args("--output-layout", labels_mod.RFDETR_DETS_LABELS, "--box-scale-to-pixels", "640"),
|
|
422
|
+
)["reason"]
|
|
423
|
+
self.assertIn("no box_units", reason)
|
|
424
|
+
self.assertIn("640", reason)
|
|
425
|
+
|
|
426
|
+
def test_units_without_a_layout_are_a_claim_about_nothing(self):
|
|
427
|
+
reason = self.assertRefuses(
|
|
428
|
+
PROBE._resolve_variant, labels_mod, self.args("--box-units", "pixels"),
|
|
429
|
+
)["reason"]
|
|
430
|
+
self.assertIn("--output-layout", reason)
|
|
431
|
+
|
|
432
|
+
def test_an_unknown_layout_is_refused_by_name(self):
|
|
433
|
+
reason = self.assertRefuses(
|
|
434
|
+
PROBE._resolve_variant, labels_mod, self.args("--output-layout", "yolo_v8_raw"),
|
|
435
|
+
)["reason"]
|
|
436
|
+
self.assertIn("yolo_v8_raw", reason)
|
|
437
|
+
|
|
438
|
+
def test_an_unknown_box_unit_is_refused_by_name(self):
|
|
439
|
+
reason = self.assertRefuses(
|
|
440
|
+
PROBE._resolve_variant, labels_mod,
|
|
441
|
+
self.args("--output-layout", labels_mod.ANCHOR_4_PLUS_NC, "--box-units", "pixel"),
|
|
442
|
+
)["reason"]
|
|
443
|
+
self.assertIn("'pixel'", reason)
|
|
444
|
+
|
|
445
|
+
|
|
446
|
+
@unittest.skipIf(PROBE is None, NO_PROBE)
|
|
447
|
+
class TestVariantFromCard(ProbeCase):
|
|
448
|
+
"""The card is the primary path: a MEASUREMENT with provenance, not a claim."""
|
|
449
|
+
|
|
450
|
+
def _card(self, variant, **extra):
|
|
451
|
+
handle = tempfile.NamedTemporaryFile("w", suffix=".json", delete=False)
|
|
452
|
+
blob = {"schema": "detector-score-card/1", "verdict": {"publishable": True}}
|
|
453
|
+
blob.update(extra)
|
|
454
|
+
if variant is not None:
|
|
455
|
+
blob["variant"] = variant
|
|
456
|
+
json.dump(blob, handle)
|
|
457
|
+
handle.close()
|
|
458
|
+
self.addCleanup(lambda: pathlib.Path(handle.name).unlink(missing_ok=True))
|
|
459
|
+
return handle.name
|
|
460
|
+
|
|
461
|
+
#: The `variant` block `score-detector-candidate.js` wrote for every one of
|
|
462
|
+
#: the five staged specialists, verbatim in shape.
|
|
463
|
+
MEASURED = {
|
|
464
|
+
"format": "onnx",
|
|
465
|
+
"output_layout": "anchor_4_plus_nc",
|
|
466
|
+
"end2end": False,
|
|
467
|
+
"box_units": "pixels",
|
|
468
|
+
"box_scale_to_pixels": 1,
|
|
469
|
+
"box_units_evidence": "max|box channel| = 640.0000 over 110 real frames",
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
def test_the_three_values_are_read_off_the_card(self):
|
|
473
|
+
contract, source = PROBE._resolve_variant(
|
|
474
|
+
labels_mod, self.args("--variant-from-card", self._card(self.MEASURED)),
|
|
475
|
+
)
|
|
476
|
+
self.assertEqual(contract.output_layout, labels_mod.ANCHOR_4_PLUS_NC)
|
|
477
|
+
self.assertEqual(contract.box_units, labels_mod.BOX_UNITS_PIXELS)
|
|
478
|
+
# A JSON `1` is a scale of 1.0. `VariantContract` compares it against
|
|
479
|
+
# 1.0 exactly, so the coercion is load-bearing rather than cosmetic.
|
|
480
|
+
self.assertEqual(contract.box_scale_to_pixels, 1.0)
|
|
481
|
+
self.assertIn("--variant-from-card", source)
|
|
482
|
+
|
|
483
|
+
def test_a_card_with_no_variant_block_is_refused(self):
|
|
484
|
+
reason = self.assertRefuses(
|
|
485
|
+
PROBE._resolve_variant, labels_mod, self.args("--variant-from-card", self._card(None)),
|
|
486
|
+
)["reason"]
|
|
487
|
+
self.assertIn("no `variant` block", reason)
|
|
488
|
+
|
|
489
|
+
def test_a_partial_variant_block_is_refused(self):
|
|
490
|
+
partial = {k: v for k, v in self.MEASURED.items() if k != "box_units"}
|
|
491
|
+
reason = self.assertRefuses(
|
|
492
|
+
PROBE._resolve_variant, labels_mod, self.args("--variant-from-card", self._card(partial)),
|
|
493
|
+
)["reason"]
|
|
494
|
+
self.assertIn("variant.box_units", reason)
|
|
495
|
+
|
|
496
|
+
def test_unreadable_json_is_refused_rather_than_raised(self):
|
|
497
|
+
handle = tempfile.NamedTemporaryFile("w", suffix=".json", delete=False)
|
|
498
|
+
handle.write("{not json")
|
|
499
|
+
handle.close()
|
|
500
|
+
self.addCleanup(lambda: pathlib.Path(handle.name).unlink(missing_ok=True))
|
|
501
|
+
self.assertRefuses(
|
|
502
|
+
PROBE._resolve_variant, labels_mod, self.args("--variant-from-card", handle.name),
|
|
503
|
+
)
|
|
504
|
+
|
|
505
|
+
def test_a_card_and_a_flag_that_AGREE_are_fine(self):
|
|
506
|
+
contract, source = PROBE._resolve_variant(labels_mod, self.args(
|
|
507
|
+
"--variant-from-card", self._card(self.MEASURED),
|
|
508
|
+
"--output-layout", labels_mod.ANCHOR_4_PLUS_NC,
|
|
509
|
+
))
|
|
510
|
+
self.assertEqual(contract.output_layout, labels_mod.ANCHOR_4_PLUS_NC)
|
|
511
|
+
# A flag that states ONE field must not read as disagreeing with a card
|
|
512
|
+
# that states three — the agreement is checked per field, not per tuple.
|
|
513
|
+
self.assertIn("--variant-from-card", source)
|
|
514
|
+
|
|
515
|
+
def test_a_card_and_a_flag_that_DISAGREE_are_refused(self):
|
|
516
|
+
reason = self.assertRefuses(PROBE._resolve_variant, labels_mod, self.args(
|
|
517
|
+
"--variant-from-card", self._card(self.MEASURED),
|
|
518
|
+
"--output-layout", labels_mod.END2END_N_6,
|
|
519
|
+
))["reason"]
|
|
520
|
+
self.assertIn("DISAGREES", reason)
|
|
521
|
+
self.assertIn(labels_mod.ANCHOR_4_PLUS_NC, reason)
|
|
522
|
+
self.assertIn(labels_mod.END2END_N_6, reason)
|
|
523
|
+
|
|
524
|
+
def test_a_disagreeing_scale_is_refused_too(self):
|
|
525
|
+
normalized = dict(self.MEASURED, box_units="normalized", box_scale_to_pixels=640)
|
|
526
|
+
reason = self.assertRefuses(PROBE._resolve_variant, labels_mod, self.args(
|
|
527
|
+
"--variant-from-card", self._card(normalized),
|
|
528
|
+
"--output-layout", labels_mod.ANCHOR_4_PLUS_NC,
|
|
529
|
+
"--box-units", "normalized", "--box-scale-to-pixels", "320",
|
|
530
|
+
))["reason"]
|
|
531
|
+
self.assertIn("box_scale_to_pixels", reason)
|
|
532
|
+
|
|
533
|
+
|
|
534
|
+
@unittest.skipIf(PROBE is None, NO_PROBE)
|
|
535
|
+
class TestClassAxisWidthWhenTheGraphDeclaresNone(ProbeCase):
|
|
536
|
+
"""`end2end_n_6` has no class axis, so the width comes from the class LIST."""
|
|
537
|
+
|
|
538
|
+
def _classes_file(self, blob):
|
|
539
|
+
handle = tempfile.NamedTemporaryFile("w", suffix=".json", delete=False)
|
|
540
|
+
json.dump(blob, handle)
|
|
541
|
+
handle.close()
|
|
542
|
+
self.addCleanup(lambda: pathlib.Path(handle.name).unlink(missing_ok=True))
|
|
543
|
+
return handle.name
|
|
544
|
+
|
|
545
|
+
def test_a_dense_list_sets_the_width_to_one_past_its_last_slot(self):
|
|
546
|
+
args = self.args("--classes-file", self._classes_file(["forklift", "pallet", "person"]))
|
|
547
|
+
slot_names, source, width = PROBE._resolve_slot_names(
|
|
548
|
+
labels_mod, args, None, "(no graph metadata)", None,
|
|
549
|
+
)
|
|
550
|
+
self.assertEqual(slot_names, {0: "forklift", 1: "pallet", 2: "person"})
|
|
551
|
+
self.assertIn("--classes-file", source)
|
|
552
|
+
self.assertEqual(width, 3)
|
|
553
|
+
|
|
554
|
+
def test_a_sparse_map_sets_the_width_from_its_highest_slot(self):
|
|
555
|
+
args = self.args("--classes-file", self._classes_file({"0": "forklift", "9": "person"}))
|
|
556
|
+
_, _, width = PROBE._resolve_slot_names(labels_mod, args, None, "(no graph metadata)", None)
|
|
557
|
+
self.assertEqual(width, 10)
|
|
558
|
+
|
|
559
|
+
def test_a_graph_declaring_fewer_names_than_its_axis_is_still_ambiguous(self):
|
|
560
|
+
# The check that DOES depend on a width, unchanged: it fires whenever the
|
|
561
|
+
# graph declares one, and is skipped only when the layout carries none.
|
|
562
|
+
args = self.args()
|
|
563
|
+
reason = self.assertRefuses(
|
|
564
|
+
PROBE._resolve_slot_names, labels_mod, args, ["person", "car"], "graph metadata key 'names'", 91,
|
|
565
|
+
)["reason"]
|
|
566
|
+
self.assertIn("--slot-offset", reason)
|
|
567
|
+
|
|
568
|
+
def test_the_same_list_is_unambiguous_when_the_graph_declares_no_axis(self):
|
|
569
|
+
args = self.args()
|
|
570
|
+
slot_names, _, width = PROBE._resolve_slot_names(
|
|
571
|
+
labels_mod, args, ["person", "car"], "graph metadata key 'names'", None,
|
|
572
|
+
)
|
|
573
|
+
self.assertEqual(slot_names, {0: "person", 1: "car"})
|
|
574
|
+
self.assertEqual(width, 2)
|
|
575
|
+
|
|
576
|
+
|
|
577
|
+
@unittest.skipIf(PROBE is None, NO_PROBE)
|
|
578
|
+
class TestTheCliSurface(ProbeCase):
|
|
579
|
+
"""The flags this script offers, asserted so a rename cannot be silent.
|
|
580
|
+
|
|
581
|
+
`publish-sensing-model.js` builds `--variant-from-card` by hand into an
|
|
582
|
+
`argv` array and reads the probe's stdout back. Nothing type-checks that
|
|
583
|
+
join, so a flag renamed on one side surfaces as "the probe failed" with an
|
|
584
|
+
argparse usage string attached — at publish time, on a real artifact.
|
|
585
|
+
"""
|
|
586
|
+
|
|
587
|
+
EXPECTED = {
|
|
588
|
+
"-h", "--help", "--mode", "--measure-payload", "--artifact", "--model-id",
|
|
589
|
+
"--classes-file", "--slot-offset",
|
|
590
|
+
"--variant-from-card", "--output-layout", "--box-units", "--box-scale-to-pixels",
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
def test_the_option_strings_are_exactly_these(self):
|
|
594
|
+
offered = set()
|
|
595
|
+
for action in PROBE.build_parser()._actions:
|
|
596
|
+
offered.update(action.option_strings)
|
|
597
|
+
self.assertEqual(offered, self.EXPECTED)
|
|
598
|
+
|
|
599
|
+
def test_the_declaration_flags_all_default_to_none(self):
|
|
600
|
+
# NOT to the RF-DETR values. `_resolve_variant` has to be able to tell
|
|
601
|
+
# "nobody declared a layout" from "somebody declared this one", because
|
|
602
|
+
# only the first may fall back to a default.
|
|
603
|
+
args = self.args()
|
|
604
|
+
self.assertIsNone(args.variant_from_card)
|
|
605
|
+
self.assertIsNone(args.output_layout)
|
|
606
|
+
self.assertIsNone(args.box_units)
|
|
607
|
+
self.assertIsNone(args.box_scale_to_pixels)
|
|
608
|
+
|
|
609
|
+
def test_slot_offset_still_records_whether_it_was_typed(self):
|
|
610
|
+
self.assertFalse(self.args().slot_offset_given)
|
|
611
|
+
self.assertEqual(self.args().slot_offset, 0)
|
|
612
|
+
typed = self.args("--slot-offset", "0")
|
|
613
|
+
self.assertTrue(typed.slot_offset_given)
|
|
614
|
+
self.assertEqual(typed.slot_offset, 0)
|
|
615
|
+
|
|
616
|
+
|
|
617
|
+
if __name__ == "__main__": # pragma: no cover
|
|
618
|
+
unittest.main()
|
|
@@ -347,7 +347,183 @@ RFDETR_MEDIUM = ModelVocabulary(
|
|
|
347
347
|
#: nothing (see `ClassIndex`, built over models whose file is present), and
|
|
348
348
|
#: publishing is a separate task. What changed is that the service can now
|
|
349
349
|
#: EXPRESS a second entry, which before this it structurally could not.
|
|
350
|
-
|
|
350
|
+
#: Forklift Detector — published 2026-08-25 by
|
|
351
|
+
#: scripts/sensing/publish-sensing-model.js. The class list is the artifact's own
|
|
352
|
+
#: (graph metadata key 'names'); the footprint is MEASURED, 119.0938 MiB after a
|
|
353
|
+
#: probe inference via rusage-maxrss, not an estimate from the file size.
|
|
354
|
+
#: Coordinate space MEASURED, not assumed: max|box channel| = 640.0000 over 110 real frames; / imgsz 640 = 1.0000. pixels at >= 0.2, normalized at <= 0.02, refused in between.
|
|
355
|
+
GH_FORKLIFT_COMBINE_CLASS_NAMES: "MappingProxyType[int, str]" = MappingProxyType({
|
|
356
|
+
0: "forklift",
|
|
357
|
+
1: "forklift partial",
|
|
358
|
+
})
|
|
359
|
+
|
|
360
|
+
GH_FORKLIFT_COMBINE = ModelVocabulary(
|
|
361
|
+
model_name="gh_forklift_combine",
|
|
362
|
+
slot_names=GH_FORKLIFT_COMBINE_CLASS_NAMES,
|
|
363
|
+
logit_slots=2,
|
|
364
|
+
approx_ram_bytes=124878901,
|
|
365
|
+
onnx_variant=VariantContract(
|
|
366
|
+
output_layout="anchor_4_plus_nc",
|
|
367
|
+
box_units="pixels",
|
|
368
|
+
box_scale_to_pixels=1.0,
|
|
369
|
+
),
|
|
370
|
+
)
|
|
371
|
+
|
|
372
|
+
#: PPE Detector (hard hat) — published 2026-08-25 by
|
|
373
|
+
#: scripts/sensing/publish-sensing-model.js. The class list is the artifact's own
|
|
374
|
+
#: (graph metadata key 'names'); the footprint is MEASURED, 420.5156 MiB after a
|
|
375
|
+
#: probe inference via rusage-maxrss, not an estimate from the file size.
|
|
376
|
+
#: Coordinate space MEASURED, not assumed: max|box channel| = 640.0000 over 110 real frames; / imgsz 640 = 1.0000. pixels at >= 0.2, normalized at <= 0.02, refused in between.
|
|
377
|
+
PPE_VYRA_14CLS_V8M_CLASS_NAMES: "MappingProxyType[int, str]" = MappingProxyType({
|
|
378
|
+
0: "fall detected",
|
|
379
|
+
1: "gloves",
|
|
380
|
+
2: "goggles",
|
|
381
|
+
3: "hardhat",
|
|
382
|
+
4: "ladder",
|
|
383
|
+
5: "mask",
|
|
384
|
+
6: "no gloves",
|
|
385
|
+
7: "no goggles",
|
|
386
|
+
8: "no hardhat",
|
|
387
|
+
9: "no mask",
|
|
388
|
+
10: "no safety vest",
|
|
389
|
+
11: "person",
|
|
390
|
+
12: "safety cone",
|
|
391
|
+
13: "safety vest",
|
|
392
|
+
})
|
|
393
|
+
|
|
394
|
+
PPE_VYRA_14CLS_V8M = ModelVocabulary(
|
|
395
|
+
model_name="ppe_vyra_14cls_v8m",
|
|
396
|
+
slot_names=PPE_VYRA_14CLS_V8M_CLASS_NAMES,
|
|
397
|
+
logit_slots=14,
|
|
398
|
+
approx_ram_bytes=440942566,
|
|
399
|
+
onnx_variant=VariantContract(
|
|
400
|
+
output_layout="anchor_4_plus_nc",
|
|
401
|
+
box_units="pixels",
|
|
402
|
+
box_scale_to_pixels=1.0,
|
|
403
|
+
),
|
|
404
|
+
)
|
|
405
|
+
|
|
406
|
+
#: Heavy Machinery Detector — published 2026-08-25 by
|
|
407
|
+
#: scripts/sensing/publish-sensing-model.js. The class list is the artifact's own
|
|
408
|
+
#: (graph metadata key 'names'); the footprint is MEASURED, 118.6875 MiB after a
|
|
409
|
+
#: probe inference via rusage-maxrss, not an estimate from the file size.
|
|
410
|
+
#: Coordinate space MEASURED, not assumed: max|box channel| = 1832.0278 over 120 real frames; / imgsz 640 = 2.8625. pixels at >= 0.2, normalized at <= 0.02, refused in between.
|
|
411
|
+
PPE_CONSTRUCTION_17CLS_V8N_CLASS_NAMES: "MappingProxyType[int, str]" = MappingProxyType({
|
|
412
|
+
0: "barricade",
|
|
413
|
+
1: "dumpster",
|
|
414
|
+
2: "excavators",
|
|
415
|
+
3: "gloves",
|
|
416
|
+
4: "hardhat",
|
|
417
|
+
5: "mask",
|
|
418
|
+
6: "no hardhat",
|
|
419
|
+
7: "no mask",
|
|
420
|
+
8: "no safety vest",
|
|
421
|
+
9: "person",
|
|
422
|
+
10: "safety net",
|
|
423
|
+
11: "safety shoes",
|
|
424
|
+
12: "safety vest",
|
|
425
|
+
13: "dump truck",
|
|
426
|
+
14: "mini van",
|
|
427
|
+
15: "truck",
|
|
428
|
+
16: "wheel loader",
|
|
429
|
+
})
|
|
430
|
+
|
|
431
|
+
PPE_CONSTRUCTION_17CLS_V8N = ModelVocabulary(
|
|
432
|
+
model_name="ppe_construction_17cls_v8n",
|
|
433
|
+
slot_names=PPE_CONSTRUCTION_17CLS_V8N_CLASS_NAMES,
|
|
434
|
+
logit_slots=17,
|
|
435
|
+
approx_ram_bytes=124452864,
|
|
436
|
+
onnx_variant=VariantContract(
|
|
437
|
+
output_layout="anchor_4_plus_nc",
|
|
438
|
+
box_units="pixels",
|
|
439
|
+
box_scale_to_pixels=1.0,
|
|
440
|
+
),
|
|
441
|
+
)
|
|
442
|
+
|
|
443
|
+
#: Fire-Safety Detector — published 2026-08-25 by
|
|
444
|
+
#: scripts/sensing/publish-sensing-model.js. The class list is the artifact's own
|
|
445
|
+
#: (graph metadata key 'names'); the footprint is MEASURED, 239.25 MiB after a
|
|
446
|
+
#: probe inference via rusage-maxrss, not an estimate from the file size.
|
|
447
|
+
#: Coordinate space MEASURED, not assumed: max|box channel| = 1971.5000 over 100 real frames; / imgsz 640 = 3.0805. pixels at >= 0.2, normalized at <= 0.02, refused in between.
|
|
448
|
+
PPE_KILLUMINATI_19CLS_V8S_CLASS_NAMES: "MappingProxyType[int, str]" = MappingProxyType({
|
|
449
|
+
0: "boots",
|
|
450
|
+
1: "ear protection",
|
|
451
|
+
2: "glass",
|
|
452
|
+
3: "glove",
|
|
453
|
+
4: "hard hat",
|
|
454
|
+
5: "mask",
|
|
455
|
+
6: "no boots",
|
|
456
|
+
7: "no ear protection",
|
|
457
|
+
8: "no glass",
|
|
458
|
+
9: "no glove",
|
|
459
|
+
10: "no helmet",
|
|
460
|
+
11: "no mask",
|
|
461
|
+
12: "no vest",
|
|
462
|
+
13: "worker",
|
|
463
|
+
14: "vest",
|
|
464
|
+
15: "circular saw",
|
|
465
|
+
16: "fire extinguisher",
|
|
466
|
+
17: "fire prevention net",
|
|
467
|
+
18: "welding equipment",
|
|
468
|
+
})
|
|
469
|
+
|
|
470
|
+
PPE_KILLUMINATI_19CLS_V8S = ModelVocabulary(
|
|
471
|
+
model_name="ppe_killuminati_19cls_v8s",
|
|
472
|
+
slot_names=PPE_KILLUMINATI_19CLS_V8S_CLASS_NAMES,
|
|
473
|
+
logit_slots=19,
|
|
474
|
+
approx_ram_bytes=250871808,
|
|
475
|
+
onnx_variant=VariantContract(
|
|
476
|
+
output_layout="anchor_4_plus_nc",
|
|
477
|
+
box_units="pixels",
|
|
478
|
+
box_scale_to_pixels=1.0,
|
|
479
|
+
),
|
|
480
|
+
)
|
|
481
|
+
|
|
482
|
+
#: FIVE SPECIALISTS WERE SCORED; FOUR ARE HERE. `gh_fall_tonlong` IS ABSENT ON
|
|
483
|
+
#: PURPOSE, AND THIS NOTE IS WHY IT MUST STAY ABSENT.
|
|
484
|
+
#:
|
|
485
|
+
#: It has a committed score card and a committed 94-frame eval set, and its
|
|
486
|
+
#: numbers are good — the `fall` gate fits at 0.7924 with precision 1.0 and
|
|
487
|
+
#: recall 1.0 on the held-out half. It is not withheld for being weak.
|
|
488
|
+
#:
|
|
489
|
+
#: It is withheld because its own exporter named two logit slots the same word:
|
|
490
|
+
#: the graph's `names` metadata is
|
|
491
|
+
#:
|
|
492
|
+
#: {0: 'Violence', 1: 'fall', 2: 'fire', 3: 'sit', 4: 'sleep',
|
|
493
|
+
#: 5: 'standing', 6: 'violence'}
|
|
494
|
+
#:
|
|
495
|
+
#: and `normalize_class_name` lowercases, so slots 0 and 6 both fold to
|
|
496
|
+
#: `violence`. SEVEN logit slots, SIX names. `ModelVocabulary.__post_init__`
|
|
497
|
+
#: refuses that pair — "two slots share one class name, so a filter would be
|
|
498
|
+
#: ambiguous" — because `_to_wire` puts the declared name on the wire and
|
|
499
|
+
#: `postprocess` filters on the canonical one, so the service could not attribute
|
|
500
|
+
#: a `violence` detection to a slot. The refusal is at CONSTRUCTION, so the
|
|
501
|
+
#: artifact would not load on a device: a registry row for it would be a row for
|
|
502
|
+
#: a model that can never answer, which is the `yolov8_nano` shape this whole
|
|
503
|
+
#: publish path exists to stop.
|
|
504
|
+
#:
|
|
505
|
+
#: AND IT CANNOT BE PAPERED OVER FROM OUR SIDE. `_resolve_slot_names` in
|
|
506
|
+
#: `scripts/sensing/onnx_artifact_probe.py` is deliberately NOT a precedence
|
|
507
|
+
#: order — every source that exists must AGREE — so a `--classes-file` cannot
|
|
508
|
+
#: override the graph, only restate it, collision included. Renaming one of the
|
|
509
|
+
#: two would also be a guess about which logit the exporter wired, and a wrong
|
|
510
|
+
#: guess is invisible: the boxes stay real and the counts stay plausible while
|
|
511
|
+
#: every `violence` answer names the wrong slot.
|
|
512
|
+
#:
|
|
513
|
+
#: WHAT UNBLOCKS IT is a re-export with one spelling per class, which changes the
|
|
514
|
+
#: bytes and therefore the sha256 — so it is a NEW artifact that must be scored
|
|
515
|
+
#: again before it can ship. `person_fall` is already a legal `corpus_name` in
|
|
516
|
+
#: both CHECK constraints and holds zero fixtures, which is inert while no
|
|
517
|
+
#: registry row names it (and `publish-sensing-model.js` refuses to deploy
|
|
518
|
+
#: against an empty corpus), so the family is ready for that artifact and is
|
|
519
|
+
#: waiting on nothing else.
|
|
520
|
+
#:
|
|
521
|
+
#: The collision is not folklore: `tests/test_onnx_artifact_probe.py`
|
|
522
|
+
#: (TestFourPlusNcCountsLogitSlots) pins `slot_map[0] == slot_map[6]` and uses
|
|
523
|
+
#: this artifact as the fixture that exercises `_verify_class_axis_width`, where
|
|
524
|
+
#: `4 + 7 = 11` matches its real `[1, 11, 8400]` head and `4 + 6 = 10` would
|
|
525
|
+
#: reject it.
|
|
526
|
+
BUILTIN_VOCABULARIES: "tuple[ModelVocabulary, ...]" = (RFDETR_MEDIUM, GH_FORKLIFT_COMBINE, PPE_VYRA_14CLS_V8M, PPE_CONSTRUCTION_17CLS_V8N, PPE_KILLUMINATI_19CLS_V8S,)
|
|
351
527
|
|
|
352
528
|
|
|
353
529
|
class ClassIndex:
|
|
@@ -441,6 +617,10 @@ class ClassIndex:
|
|
|
441
617
|
|
|
442
618
|
|
|
443
619
|
__all__ = [
|
|
620
|
+
"PPE_KILLUMINATI_19CLS_V8S",
|
|
621
|
+
"PPE_CONSTRUCTION_17CLS_V8N",
|
|
622
|
+
"PPE_VYRA_14CLS_V8M",
|
|
623
|
+
"GH_FORKLIFT_COMBINE",
|
|
444
624
|
"ANCHOR_4_PLUS_NC",
|
|
445
625
|
"BOX_UNITS",
|
|
446
626
|
"BOX_UNITS_NORMALIZED",
|
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.
|
|
47
|
+
const SDK_VERSION = '0.2.95';
|
|
48
48
|
class EdgeAgent extends events_1.EventEmitter {
|
|
49
49
|
constructor(config, deps) {
|
|
50
50
|
super();
|
package/dist/diagnose.d.ts
CHANGED
|
@@ -31,7 +31,7 @@ export interface DiagnosticReport {
|
|
|
31
31
|
skipped: number;
|
|
32
32
|
};
|
|
33
33
|
}
|
|
34
|
-
declare const SDK_VERSION = "0.2.
|
|
34
|
+
declare const SDK_VERSION = "0.2.95";
|
|
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.
|
|
66
|
+
const SDK_VERSION = '0.2.95';
|
|
67
67
|
exports._SDK_VERSION = SDK_VERSION;
|
|
68
68
|
// ---------------------------------------------------------------------------
|
|
69
69
|
// ANSI helpers (no external deps)
|
package/dist/setupMode.d.ts
CHANGED
|
@@ -86,6 +86,13 @@ export declare function normalizeDirectStreamUrl(input: string): string;
|
|
|
86
86
|
* the list and typed the IP by hand.
|
|
87
87
|
*/
|
|
88
88
|
export declare function mergeDiscoveredHosts(onvifHosts: unknown[], sweptHosts: unknown[]): unknown[];
|
|
89
|
+
/**
|
|
90
|
+
* Keep the setup session visibly alive while one command owns the main poll
|
|
91
|
+
* loop. A recorder channel probe can legitimately spend close to a minute on a
|
|
92
|
+
* single sub/main + TCP/UDP candidate set; without this beat the portal's
|
|
93
|
+
* 30-second lost-connector guard reports a healthy connector as dead.
|
|
94
|
+
*/
|
|
95
|
+
export declare function withSetupStageHeartbeat<T>(client: Pick<SetupSessionClient, 'heartbeat'>, stage: string, detail: string, work: () => Promise<T>, intervalMs?: number): Promise<T>;
|
|
89
96
|
/**
|
|
90
97
|
* Merge a finalized setup into the local config.
|
|
91
98
|
*
|
package/dist/setupMode.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setupMode.d.ts","sourceRoot":"","sources":["../src/setupMode.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAA+C,MAAM,sBAAsB,CAAC;AACvG,OAAO,EACL,SAAS,EAMT,KAAK,kBAAkB,EACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAuB,MAAM,aAAa,CAAC;AAM5F,OAAO,KAAK,EAAE,qBAAqB,EAAuB,MAAM,iBAAiB,CAAC;AAElF;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,kCAAkC;IAClC,QAAQ,CAAC,EAAE,OAAO,kBAAkB,CAAC;IACrC,KAAK,CAAC,EAAE,OAAO,oBAAoB,CAAC;IACpC,KAAK,CAAC,EAAE,OAAO,SAAS,CAAC;IACzB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,0EAA0E;IAC1E,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IACjC,wEAAwE;IACxE,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACtD;AAED,iFAAiF;AACjF,wBAAgB,oBAAoB,IAAI,MAAM,CAG7C;AAID;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,uBAAuB,kCAAkC,CAAC;AAGvE;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,aAAa,GAAE,MAAgC,GAC9C,MAAM,CAaR;AAED,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAAG,OAAO,CAAC,OAAO,CAAC,CAiC3G;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAsB9D;AAeD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CA0B5F;
|
|
1
|
+
{"version":3,"file":"setupMode.d.ts","sourceRoot":"","sources":["../src/setupMode.ts"],"names":[],"mappings":"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"}
|
package/dist/setupMode.js
CHANGED
|
@@ -39,6 +39,7 @@ exports.buildSetupPortalUrl = buildSetupPortalUrl;
|
|
|
39
39
|
exports.openSetupPortal = openSetupPortal;
|
|
40
40
|
exports.normalizeDirectStreamUrl = normalizeDirectStreamUrl;
|
|
41
41
|
exports.mergeDiscoveredHosts = mergeDiscoveredHosts;
|
|
42
|
+
exports.withSetupStageHeartbeat = withSetupStageHeartbeat;
|
|
42
43
|
exports.mergeConfigFile = mergeConfigFile;
|
|
43
44
|
exports.runSetupMode = runSetupMode;
|
|
44
45
|
const fs = __importStar(require("fs"));
|
|
@@ -249,6 +250,40 @@ function recorderGroupKey(camera) {
|
|
|
249
250
|
const host = cameraHost(camera);
|
|
250
251
|
return host ? `host:${host}` : null;
|
|
251
252
|
}
|
|
253
|
+
const SETUP_STAGE_HEARTBEAT_MS = 10000;
|
|
254
|
+
/**
|
|
255
|
+
* Keep the setup session visibly alive while one command owns the main poll
|
|
256
|
+
* loop. A recorder channel probe can legitimately spend close to a minute on a
|
|
257
|
+
* single sub/main + TCP/UDP candidate set; without this beat the portal's
|
|
258
|
+
* 30-second lost-connector guard reports a healthy connector as dead.
|
|
259
|
+
*/
|
|
260
|
+
async function withSetupStageHeartbeat(client, stage, detail, work, intervalMs = SETUP_STAGE_HEARTBEAT_MS) {
|
|
261
|
+
await client.heartbeat(stage, detail);
|
|
262
|
+
let heartbeatInFlight = false;
|
|
263
|
+
let lastHeartbeat = Promise.resolve();
|
|
264
|
+
const timer = setInterval(() => {
|
|
265
|
+
if (heartbeatInFlight)
|
|
266
|
+
return;
|
|
267
|
+
heartbeatInFlight = true;
|
|
268
|
+
lastHeartbeat = client
|
|
269
|
+
.heartbeat(stage, detail)
|
|
270
|
+
.catch(() => {
|
|
271
|
+
// The command's result/ack path remains authoritative for surfacing a
|
|
272
|
+
// lost session. A transient liveness write must not abort local probing.
|
|
273
|
+
})
|
|
274
|
+
.finally(() => {
|
|
275
|
+
heartbeatInFlight = false;
|
|
276
|
+
});
|
|
277
|
+
}, intervalMs);
|
|
278
|
+
timer.unref?.();
|
|
279
|
+
try {
|
|
280
|
+
return await work();
|
|
281
|
+
}
|
|
282
|
+
finally {
|
|
283
|
+
clearInterval(timer);
|
|
284
|
+
await lastHeartbeat;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
252
287
|
/**
|
|
253
288
|
* Merge a finalized setup into the local config.
|
|
254
289
|
*
|
|
@@ -554,11 +589,10 @@ async function runSetupMode(opts) {
|
|
|
554
589
|
}
|
|
555
590
|
if (command.type === 'probe' && command.host && command.credentials) {
|
|
556
591
|
credsByHost.set(command.host, command.credentials);
|
|
557
|
-
await client.heartbeat('probing', command.host);
|
|
558
592
|
log(`Checking cameras on ${command.host}…`);
|
|
559
593
|
reportValidationProgress();
|
|
560
594
|
let sentAny = false;
|
|
561
|
-
const results = await probe({
|
|
595
|
+
const results = await withSetupStageHeartbeat(client, 'probing', command.host, () => probe({
|
|
562
596
|
host: command.host,
|
|
563
597
|
port: command.port,
|
|
564
598
|
username: command.credentials.username,
|
|
@@ -592,7 +626,7 @@ async function runSetupMode(opts) {
|
|
|
592
626
|
}
|
|
593
627
|
reportValidationProgress();
|
|
594
628
|
},
|
|
595
|
-
});
|
|
629
|
+
}));
|
|
596
630
|
try {
|
|
597
631
|
const mac = await (opts.lookupMac ?? RecorderAddressRecovery_1.lookupMacAddress)(command.host);
|
|
598
632
|
if (mac)
|
package/dist/setupMode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setupMode.js","sourceRoot":"","sources":["../src/setupMode.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setupMode.js","sourceRoot":"","sources":["../src/setupMode.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trillboards/edge-sdk",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.95",
|
|
4
4
|
"description": "Composable cross-platform Edge AI SDK for audience sensing on DOOH/CTV devices",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -30,7 +30,14 @@
|
|
|
30
30
|
"@trillboards/edge-platform-rtsp": "^0.2.0",
|
|
31
31
|
"@trillboards/edge-platform-windows": "^0.2.0"
|
|
32
32
|
},
|
|
33
|
-
"files": [
|
|
33
|
+
"files": [
|
|
34
|
+
"dist",
|
|
35
|
+
"configs",
|
|
36
|
+
"deploy",
|
|
37
|
+
"LICENSE",
|
|
38
|
+
"THIRD-PARTY-NOTICES.md",
|
|
39
|
+
"README.md"
|
|
40
|
+
],
|
|
34
41
|
"engines": {
|
|
35
42
|
"node": ">=18.0.0"
|
|
36
43
|
},
|