camstack 1.2.0 → 1.2.1

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.
@@ -20053,7 +20053,21 @@ var NativeCropResultSchema = external_exports.object({
20053
20053
  /** Packed rgb (24-bit) pixels of the crop. */
20054
20054
  bytes: external_exports.instanceof(Uint8Array),
20055
20055
  width: external_exports.number().int().positive(),
20056
- height: external_exports.number().int().positive()
20056
+ height: external_exports.number().int().positive(),
20057
+ /**
20058
+ * Which source served this crop, so a quality-sensitive consumer (the native
20059
+ * `keyFrame`) can reject a degraded fallback:
20060
+ * - `native` — cut from the decode worker's retained NATIVE surface (the
20061
+ * quality path).
20062
+ * - `ram-fullframe` — the native surface MISSED but the request was full-frame,
20063
+ * so the ≤640 RAM `RetainedFrameStore` served it (honest lower-res; legit for
20064
+ * the blank-frame guard / 640-snapshot resolve, NOT for the clean keyFrame).
20065
+ *
20066
+ * OPTIONAL: a pre-tier runner (version skew) omits it — an ABSENT `tier` MUST be
20067
+ * treated as `native` (accepted) by every consumer so mixed-version clusters
20068
+ * keep the pre-tier behaviour. An ROI miss returns `null` (no tier at all).
20069
+ */
20070
+ tier: external_exports.enum(["native", "ram-fullframe"]).optional()
20057
20071
  });
20058
20072
  var DetailParentSchema = external_exports.object({
20059
20073
  bbox: NativeCropBboxSchema,
@@ -20420,10 +20434,15 @@ var pipelineRunnerCapability = {
20420
20434
  * `FrameHandle` that rode an inference-result event and a normalized `bbox`,
20421
20435
  * the runner asks the decode worker still holding that frame's NATIVE
20422
20436
  * surface to GPU/CPU-crop ONLY the ROI at native res and download just the
20423
- * crop. Returns `null` on a miss (handle not registered, or the worker's
20424
- * tiny native-retention ring already evicted the frame) — the caller falls
20425
- * back to a detection-frame crop. Routed to the frame's owning node by
20426
- * `handle.nodeId`; NEVER ships a full native frame.
20437
+ * crop. Routed to the frame's owning node by `handle.nodeId`; NEVER ships a
20438
+ * full native frame.
20439
+ *
20440
+ * Miss behaviour differs by request shape (see `NativeCropResultSchema.tier`):
20441
+ * - an ROI (subject-crop) miss returns `null` — the caller reports the miss
20442
+ * and retries; it is NEVER handed a ≤640 crop masquerading as native.
20443
+ * - a FULL-FRAME miss falls back to the ≤640 RAM `RetainedFrameStore`, tagged
20444
+ * `tier: 'ram-fullframe'` (honest lower-res for the blank-frame guard /
20445
+ * 640-snapshot resolve). A native hit is tagged `tier: 'native'`.
20427
20446
  */
20428
20447
  getNativeCrop: method(external_exports.object({
20429
20448
  handle: FrameHandleSchema,
@@ -24146,7 +24165,8 @@ var LinkedDeviceSchema = external_exports.object({
24146
24165
  deviceId: external_exports.number(),
24147
24166
  name: external_exports.string(),
24148
24167
  location: external_exports.string().nullable(),
24149
- features: external_exports.array(external_exports.string())
24168
+ features: external_exports.array(external_exports.string()),
24169
+ producesTrackedEvents: external_exports.boolean().optional()
24150
24170
  });
24151
24171
  var SavedDeviceRowSchema = external_exports.object({
24152
24172
  /** Numeric id reserved at allocateDeviceId time. */
@@ -26063,6 +26083,7 @@ var TrackSchema = external_exports.object({
26063
26083
  deviceId: external_exports.number(),
26064
26084
  className: external_exports.string(),
26065
26085
  label: external_exports.string().optional(),
26086
+ producingDeviceName: external_exports.string().optional(),
26066
26087
  /** Track provenance. Absent ⇒ `pipeline` (legacy rows). */
26067
26088
  source: TrackSourceSchema.optional(),
26068
26089
  firstSeen: external_exports.number(),
@@ -26192,7 +26213,8 @@ var MediaFileKindEnum = external_exports.enum([
26192
26213
  "fullFrameBoxed",
26193
26214
  "faceCrop",
26194
26215
  "plateCrop",
26195
- "keyFrame"
26216
+ "keyFrame",
26217
+ "keyFrameSmall"
26196
26218
  ]);
26197
26219
  var MediaFileSchema = external_exports.object({
26198
26220
  key: external_exports.string(),
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runDiscover
4
- } from "./chunk-LQUCPQ55.js";
4
+ } from "./chunk-UW26FXNH.js";
5
5
  import "./chunk-K3NQKI34.js";
6
6
 
7
7
  // src/cli.ts
@@ -1079,7 +1079,7 @@ function isUnknown(_value) {
1079
1079
  return true;
1080
1080
  }
1081
1081
  async function resolveServerInteractive(presetNamespace) {
1082
- const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-GAE4KR5T.js");
1082
+ const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-YZCMQEZ5.js");
1083
1083
  if (presetNamespace) {
1084
1084
  const spinner4 = clack.spinner();
1085
1085
  spinner4.start(`Discovering hub on LAN (namespace "${presetNamespace}")`);
@@ -5,7 +5,7 @@ import {
5
5
  filterHubNodes,
6
6
  resolveHubFromDiscovered,
7
7
  runDiscover
8
- } from "./chunk-LQUCPQ55.js";
8
+ } from "./chunk-UW26FXNH.js";
9
9
  import "./chunk-K3NQKI34.js";
10
10
  export {
11
11
  DEFAULT_HUB_HTTPS_PORT,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "camstack",
3
- "version": "1.2.0",
3
+ "version": "1.2.1",
4
4
  "description": "CLI tool for managing and running CamStack server",
5
5
  "keywords": [
6
6
  "camstack",