camstack 1.2.121 → 1.2.123

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.
@@ -26233,7 +26233,19 @@ var TrackPositionSchema = external_exports.object({
26233
26233
  x: external_exports.number(),
26234
26234
  y: external_exports.number(),
26235
26235
  timestamp: external_exports.number(),
26236
- bbox: BoundingBoxSchema
26236
+ bbox: BoundingBoxSchema,
26237
+ /**
26238
+ * Which detector pass measured this box (D399): `frame` is the full-frame
26239
+ * pass on the analysis raster, `recovery` is the native-resolution
26240
+ * small-subject second pass (D377/D378). Both write into one array, and until
26241
+ * this field existed the only way to tell them apart was that full-frame boxes
26242
+ * are exact multiples of 1.2 while recovery boxes are full-precision floats.
26243
+ * Absent on rows written before D399.
26244
+ */
26245
+ source: external_exports.enum(["frame", "recovery"]).optional(),
26246
+ /** Detection score of this box, so a position can be weighed and not only
26247
+ * plotted. Absent on rows written before D399. */
26248
+ score: external_exports.number().optional()
26237
26249
  });
26238
26250
  var TrackSnapshotSchema = external_exports.object({
26239
26251
  timestamp: external_exports.number(),
@@ -26492,14 +26504,25 @@ var TrackSchema = external_exports.object({
26492
26504
  */
26493
26505
  hasRider: external_exports.boolean().optional(),
26494
26506
  /**
26495
- * WHY this track ended without a NATIVE best-shot tile
26496
- * ([D276](../decisions/adr-0276-a-stand-in-tile-is-provisional-and-a-close-says-why.md)) —
26507
+ * WHY this track ended without a NATIVE best-shot FRAME
26508
+ * ([D276](../decisions/adr-0276-a-stand-in-tile-is-provisional-and-a-close-says-why.md),
26509
+ * widened by [D400](../decisions/adr-0400-the-picture-is-judged-on-what-is-delivered.md)) —
26497
26510
  * a composed token line (`no-key-frame capture=keyframe:native-missx4`,
26498
- * `derive-returned-null tile=standin`, …) written at close and CLEARED by
26499
- * the late-keyFrame upgrade when a native tile lands after all. The
26500
- * operator-facing answer to "perché manca l'immagine?" on a track whose
26511
+ * `derive-returned-null tile=standin`,
26512
+ * `native-tile tile=native no-key-frame-at-close`, …) written at close and
26513
+ * CLEARED by the late-keyFrame upgrade when a native tile lands after all.
26514
+ * The operator-facing answer to "perché manca l'immagine?" on a track whose
26501
26515
  * tile is a face/plate stand-in, a raster crop, or an icon.
26502
26516
  *
26517
+ * **`no-key-frame-at-close` (D400).** The line used to be written ONLY when
26518
+ * the TILE ranked below native, so a track whose thumbnail landed natively
26519
+ * while its key frame missed carried no reason at all — three of the four
26520
+ * `MISSING_KEYFRAME` tracks in the 2026-09-07 operator audit were exactly
26521
+ * that shape, and their "niente ultimo" had no cause anywhere on the row.
26522
+ * The key frame is the head of a cascade (`keyFrame ⇒ keyFrameSmall ⇒ the
26523
+ * lastFrame copy source`), so its absence is now on this line whatever the
26524
+ * tile ended up being.
26525
+ *
26503
26526
  * **Absent ≠ "missed silently"**: a row written before the column, a hub
26504
26527
  * that predates the field, and every track whose tile landed native all
26505
26528
  * omit it. Render nothing when absent.
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runDiscover
4
- } from "./chunk-F56HD6CH.js";
4
+ } from "./chunk-2S3TRFS3.js";
5
5
  import "./chunk-LMMQX4CK.js";
6
6
 
7
7
  // src/cli.ts
@@ -38,7 +38,7 @@ async function runServe(args) {
38
38
  ...typeof values.data === "string" ? { data: values.data } : {}
39
39
  };
40
40
  Object.assign(process.env, buildServeEnv(opts));
41
- await import("./launcher-2BTQJ5AA.js");
41
+ await import("./launcher-NN5JUDVE.js");
42
42
  }
43
43
 
44
44
  // src/commands/agent.ts
@@ -83,7 +83,7 @@ async function runAgent(args) {
83
83
  ...typeof values.port === "string" ? { port: values.port } : {}
84
84
  };
85
85
  Object.assign(process.env, buildAgentEnv(opts));
86
- await import("./launcher-2BTQJ5AA.js");
86
+ await import("./launcher-NN5JUDVE.js");
87
87
  }
88
88
 
89
89
  // src/commands/setup.ts
@@ -1130,7 +1130,7 @@ function isUnknown(_value) {
1130
1130
  return true;
1131
1131
  }
1132
1132
  async function resolveServerInteractive(presetNamespace) {
1133
- const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-X5IKQOKL.js");
1133
+ const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-4ZPVKRSY.js");
1134
1134
  if (presetNamespace) {
1135
1135
  const spinner4 = clack.spinner();
1136
1136
  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-F56HD6CH.js";
8
+ } from "./chunk-2S3TRFS3.js";
9
9
  import "./chunk-LMMQX4CK.js";
10
10
  export {
11
11
  DEFAULT_HUB_HTTPS_PORT,
@@ -23633,9 +23633,9 @@ var require_zod = __commonJS({
23633
23633
  }
23634
23634
  });
23635
23635
 
23636
- // ../system/dist/dist-kUlalZ6-.js
23637
- var require_dist_kUlalZ6 = __commonJS({
23638
- "../system/dist/dist-kUlalZ6-.js"(exports) {
23636
+ // ../system/dist/dist-CEUwB91M.js
23637
+ var require_dist_CEUwB91M = __commonJS({
23638
+ "../system/dist/dist-CEUwB91M.js"(exports) {
23639
23639
  "use strict";
23640
23640
  var zod = require_zod();
23641
23641
  var EventCategory = /* @__PURE__ */ (function(EventCategory2) {
@@ -37003,7 +37003,19 @@ var require_dist_kUlalZ6 = __commonJS({
37003
37003
  x: zod.z.number(),
37004
37004
  y: zod.z.number(),
37005
37005
  timestamp: zod.z.number(),
37006
- bbox: BoundingBoxSchema
37006
+ bbox: BoundingBoxSchema,
37007
+ /**
37008
+ * Which detector pass measured this box (D399): `frame` is the full-frame
37009
+ * pass on the analysis raster, `recovery` is the native-resolution
37010
+ * small-subject second pass (D377/D378). Both write into one array, and until
37011
+ * this field existed the only way to tell them apart was that full-frame boxes
37012
+ * are exact multiples of 1.2 while recovery boxes are full-precision floats.
37013
+ * Absent on rows written before D399.
37014
+ */
37015
+ source: zod.z.enum(["frame", "recovery"]).optional(),
37016
+ /** Detection score of this box, so a position can be weighed and not only
37017
+ * plotted. Absent on rows written before D399. */
37018
+ score: zod.z.number().optional()
37007
37019
  });
37008
37020
  var TrackSnapshotSchema = zod.z.object({
37009
37021
  timestamp: zod.z.number(),
@@ -37262,14 +37274,25 @@ var require_dist_kUlalZ6 = __commonJS({
37262
37274
  */
37263
37275
  hasRider: zod.z.boolean().optional(),
37264
37276
  /**
37265
- * WHY this track ended without a NATIVE best-shot tile
37266
- * ([D276](../decisions/adr-0276-a-stand-in-tile-is-provisional-and-a-close-says-why.md)) —
37277
+ * WHY this track ended without a NATIVE best-shot FRAME
37278
+ * ([D276](../decisions/adr-0276-a-stand-in-tile-is-provisional-and-a-close-says-why.md),
37279
+ * widened by [D400](../decisions/adr-0400-the-picture-is-judged-on-what-is-delivered.md)) —
37267
37280
  * a composed token line (`no-key-frame capture=keyframe:native-missx4`,
37268
- * `derive-returned-null tile=standin`, …) written at close and CLEARED by
37269
- * the late-keyFrame upgrade when a native tile lands after all. The
37270
- * operator-facing answer to "perché manca l'immagine?" on a track whose
37281
+ * `derive-returned-null tile=standin`,
37282
+ * `native-tile tile=native no-key-frame-at-close`, …) written at close and
37283
+ * CLEARED by the late-keyFrame upgrade when a native tile lands after all.
37284
+ * The operator-facing answer to "perché manca l'immagine?" on a track whose
37271
37285
  * tile is a face/plate stand-in, a raster crop, or an icon.
37272
37286
  *
37287
+ * **`no-key-frame-at-close` (D400).** The line used to be written ONLY when
37288
+ * the TILE ranked below native, so a track whose thumbnail landed natively
37289
+ * while its key frame missed carried no reason at all — three of the four
37290
+ * `MISSING_KEYFRAME` tracks in the 2026-09-07 operator audit were exactly
37291
+ * that shape, and their "niente ultimo" had no cause anywhere on the row.
37292
+ * The key frame is the head of a cascade (`keyFrame ⇒ keyFrameSmall ⇒ the
37293
+ * lastFrame copy source`), so its absence is now on this line whatever the
37294
+ * tile ended up being.
37295
+ *
37273
37296
  * **Absent ≠ "missed silently"**: a row written before the column, a hub
37274
37297
  * that predates the field, and every track whose tile landed native all
37275
37298
  * omit it. Render nothing when absent.
@@ -60958,7 +60981,7 @@ var require_alerts_addon = __commonJS({
60958
60981
  [Symbol.toStringTag]: { value: "Module" }
60959
60982
  });
60960
60983
  require_chunk_Cek0wNdY();
60961
- var require_dist10 = require_dist_kUlalZ6();
60984
+ var require_dist10 = require_dist_CEUwB91M();
60962
60985
  function selectExpired(alerts, cutoffMs) {
60963
60986
  return alerts.filter((a) => a.createdAt < cutoffMs).sort((a, b) => a.createdAt - b.createdAt).map((a) => a.id);
60964
60987
  }
@@ -61777,7 +61800,7 @@ var require_console_logging = __commonJS({
61777
61800
  [Symbol.toStringTag]: { value: "Module" }
61778
61801
  });
61779
61802
  require_chunk_Cek0wNdY();
61780
- var require_dist10 = require_dist_kUlalZ6();
61803
+ var require_dist10 = require_dist_CEUwB91M();
61781
61804
  var require_formatter = require_formatter_DqAKDlvN();
61782
61805
  var LEVEL_RANK = {
61783
61806
  debug: 0,
@@ -61871,7 +61894,7 @@ var require_core_blocks_addon = __commonJS({
61871
61894
  "use strict";
61872
61895
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
61873
61896
  var require_chunk = require_chunk_Cek0wNdY();
61874
- var require_dist10 = require_dist_kUlalZ6();
61897
+ var require_dist10 = require_dist_CEUwB91M();
61875
61898
  var node_crypto = __require("crypto");
61876
61899
  var node_fs_promises = __require("fs/promises");
61877
61900
  node_fs_promises = require_chunk.__toESM(node_fs_promises);
@@ -62768,11 +62791,11 @@ var require_core_blocks = __commonJS({
62768
62791
  }
62769
62792
  });
62770
62793
 
62771
- // ../system/dist/retired-settings-keys-D61YnSKJ.js
62772
- var require_retired_settings_keys_D61YnSKJ = __commonJS({
62773
- "../system/dist/retired-settings-keys-D61YnSKJ.js"(exports) {
62794
+ // ../system/dist/retired-settings-keys-DtPZcaQ_.js
62795
+ var require_retired_settings_keys_DtPZcaQ = __commonJS({
62796
+ "../system/dist/retired-settings-keys-DtPZcaQ_.js"(exports) {
62774
62797
  "use strict";
62775
- var require_dist10 = require_dist_kUlalZ6();
62798
+ var require_dist10 = require_dist_CEUwB91M();
62776
62799
  function settingsStoreIsAuthoritativeHere(env) {
62777
62800
  const raw = (env["CAMSTACK_ROLE"] ?? "").trim().toLowerCase();
62778
62801
  return raw === "" || raw === "hub";
@@ -65007,8 +65030,8 @@ var require_device_manager_addon = __commonJS({
65007
65030
  [Symbol.toStringTag]: { value: "Module" }
65008
65031
  });
65009
65032
  require_chunk_Cek0wNdY();
65010
- var require_dist10 = require_dist_kUlalZ6();
65011
- var require_retired_settings_keys = require_retired_settings_keys_D61YnSKJ();
65033
+ var require_dist10 = require_dist_CEUwB91M();
65034
+ var require_retired_settings_keys = require_retired_settings_keys_DtPZcaQ();
65012
65035
  var node_crypto = __require("crypto");
65013
65036
  var _camstack_types_node = require_node();
65014
65037
  var JOB_HISTORY = 20;
@@ -70633,7 +70656,7 @@ var require_hub_forwarder = __commonJS({
70633
70656
  [Symbol.toStringTag]: { value: "Module" }
70634
70657
  });
70635
70658
  require_chunk_Cek0wNdY();
70636
- var require_dist10 = require_dist_kUlalZ6();
70659
+ var require_dist10 = require_dist_CEUwB91M();
70637
70660
  var require_formatter = require_formatter_DqAKDlvN();
70638
70661
  var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
70639
70662
  var HubForwarderDestination = class {
@@ -70770,7 +70793,7 @@ var require_liveness_monitor_addon = __commonJS({
70770
70793
  "use strict";
70771
70794
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
70772
70795
  require_chunk_Cek0wNdY();
70773
- var require_dist10 = require_dist_kUlalZ6();
70796
+ var require_dist10 = require_dist_CEUwB91M();
70774
70797
  var NO_DEVICES = "liveness:no-devices";
70775
70798
  var ALL_OFFLINE = "liveness:all-devices-offline";
70776
70799
  var NO_FOOTAGE_PREFIX = "liveness:no-footage:";
@@ -70966,7 +70989,7 @@ var require_local_auth_addon = __commonJS({
70966
70989
  [Symbol.toStringTag]: { value: "Module" }
70967
70990
  });
70968
70991
  var require_chunk = require_chunk_Cek0wNdY();
70969
- var require_dist10 = require_dist_kUlalZ6();
70992
+ var require_dist10 = require_dist_CEUwB91M();
70970
70993
  var node_crypto = __require("crypto");
70971
70994
  node_crypto = require_chunk.__toESM(node_crypto);
70972
70995
  var crypto$1 = __require("crypto");
@@ -78779,7 +78802,7 @@ var require_loki_logging = __commonJS({
78779
78802
  [Symbol.toStringTag]: { value: "Module" }
78780
78803
  });
78781
78804
  require_chunk_Cek0wNdY();
78782
- var require_dist10 = require_dist_kUlalZ6();
78805
+ var require_dist10 = require_dist_CEUwB91M();
78783
78806
  function sanitizeLabelName(raw) {
78784
78807
  const replaced = raw.replaceAll(/[^a-zA-Z0-9_]/g, "_");
78785
78808
  return /^[a-zA-Z_]/.test(replaced) ? replaced : `_${replaced}`;
@@ -79344,7 +79367,7 @@ var require_native_metrics_addon = __commonJS({
79344
79367
  [Symbol.toStringTag]: { value: "Module" }
79345
79368
  });
79346
79369
  var require_chunk = require_chunk_Cek0wNdY();
79347
- var require_dist10 = require_dist_kUlalZ6();
79370
+ var require_dist10 = require_dist_CEUwB91M();
79348
79371
  var node_fs_promises = __require("fs/promises");
79349
79372
  var node_child_process = __require("child_process");
79350
79373
  var node_util = __require("util");
@@ -81928,7 +81951,7 @@ var require_filesystem_storage_addon = __commonJS({
81928
81951
  [Symbol.toStringTag]: { value: "Module" }
81929
81952
  });
81930
81953
  var require_chunk = require_chunk_Cek0wNdY();
81931
- var require_dist10 = require_dist_kUlalZ6();
81954
+ var require_dist10 = require_dist_CEUwB91M();
81932
81955
  var node_crypto = __require("crypto");
81933
81956
  var node_fs_promises = __require("fs/promises");
81934
81957
  var node_path = __require("path");
@@ -83044,8 +83067,8 @@ var require_sqlite_settings_addon = __commonJS({
83044
83067
  [Symbol.toStringTag]: { value: "Module" }
83045
83068
  });
83046
83069
  var require_chunk = require_chunk_Cek0wNdY();
83047
- var require_dist10 = require_dist_kUlalZ6();
83048
- var require_retired_settings_keys = require_retired_settings_keys_D61YnSKJ();
83070
+ var require_dist10 = require_dist_CEUwB91M();
83071
+ var require_retired_settings_keys = require_retired_settings_keys_DtPZcaQ();
83049
83072
  var node_crypto = __require("crypto");
83050
83073
  var node_fs = __require("fs");
83051
83074
  var node_module = __require("module");
@@ -85549,7 +85572,7 @@ var require_storage_orchestrator_addon = __commonJS({
85549
85572
  [Symbol.toStringTag]: { value: "Module" }
85550
85573
  });
85551
85574
  var require_chunk = require_chunk_Cek0wNdY();
85552
- var require_dist10 = require_dist_kUlalZ6();
85575
+ var require_dist10 = require_dist_CEUwB91M();
85553
85576
  var require_hub_cap_forward = require_hub_cap_forward_DmHNjbB0();
85554
85577
  var zod = require_zod();
85555
85578
  var node_crypto = __require("crypto");
@@ -89105,7 +89128,7 @@ var require_system_config_addon = __commonJS({
89105
89128
  [Symbol.toStringTag]: { value: "Module" }
89106
89129
  });
89107
89130
  require_chunk_Cek0wNdY();
89108
- var require_dist10 = require_dist_kUlalZ6();
89131
+ var require_dist10 = require_dist_CEUwB91M();
89109
89132
  var SECTION_TITLES = {
89110
89133
  server: "Server",
89111
89134
  auth: "Authentication"
@@ -107166,7 +107189,7 @@ var require_winston_logging = __commonJS({
107166
107189
  [Symbol.toStringTag]: { value: "Module" }
107167
107190
  });
107168
107191
  var require_chunk = require_chunk_Cek0wNdY();
107169
- var require_dist10 = require_dist_kUlalZ6();
107192
+ var require_dist10 = require_dist_CEUwB91M();
107170
107193
  var require_formatter = require_formatter_DqAKDlvN();
107171
107194
  var node_path = __require("path");
107172
107195
  node_path = require_chunk.__toESM(node_path);
@@ -131776,7 +131799,7 @@ var require_dist3 = __commonJS({
131776
131799
  "use strict";
131777
131800
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
131778
131801
  var require_chunk = require_chunk_Cek0wNdY();
131779
- var require_dist10 = require_dist_kUlalZ6();
131802
+ var require_dist10 = require_dist_CEUwB91M();
131780
131803
  var require_builtins_alerts_alerts_addon = require_alerts_addon();
131781
131804
  require_alerts();
131782
131805
  var require_formatter = require_formatter_DqAKDlvN();
@@ -226999,7 +227022,19 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
226999
227022
  x: zod.z.number(),
227000
227023
  y: zod.z.number(),
227001
227024
  timestamp: zod.z.number(),
227002
- bbox: BoundingBoxSchema
227025
+ bbox: BoundingBoxSchema,
227026
+ /**
227027
+ * Which detector pass measured this box (D399): `frame` is the full-frame
227028
+ * pass on the analysis raster, `recovery` is the native-resolution
227029
+ * small-subject second pass (D377/D378). Both write into one array, and until
227030
+ * this field existed the only way to tell them apart was that full-frame boxes
227031
+ * are exact multiples of 1.2 while recovery boxes are full-precision floats.
227032
+ * Absent on rows written before D399.
227033
+ */
227034
+ source: zod.z.enum(["frame", "recovery"]).optional(),
227035
+ /** Detection score of this box, so a position can be weighed and not only
227036
+ * plotted. Absent on rows written before D399. */
227037
+ score: zod.z.number().optional()
227003
227038
  });
227004
227039
  var TrackSnapshotSchema = zod.z.object({
227005
227040
  timestamp: zod.z.number(),
@@ -227259,14 +227294,25 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
227259
227294
  */
227260
227295
  hasRider: zod.z.boolean().optional(),
227261
227296
  /**
227262
- * WHY this track ended without a NATIVE best-shot tile
227263
- * ([D276](../decisions/adr-0276-a-stand-in-tile-is-provisional-and-a-close-says-why.md)) —
227297
+ * WHY this track ended without a NATIVE best-shot FRAME
227298
+ * ([D276](../decisions/adr-0276-a-stand-in-tile-is-provisional-and-a-close-says-why.md),
227299
+ * widened by [D400](../decisions/adr-0400-the-picture-is-judged-on-what-is-delivered.md)) —
227264
227300
  * a composed token line (`no-key-frame capture=keyframe:native-missx4`,
227265
- * `derive-returned-null tile=standin`, …) written at close and CLEARED by
227266
- * the late-keyFrame upgrade when a native tile lands after all. The
227267
- * operator-facing answer to "perché manca l'immagine?" on a track whose
227301
+ * `derive-returned-null tile=standin`,
227302
+ * `native-tile tile=native no-key-frame-at-close`, …) written at close and
227303
+ * CLEARED by the late-keyFrame upgrade when a native tile lands after all.
227304
+ * The operator-facing answer to "perché manca l'immagine?" on a track whose
227268
227305
  * tile is a face/plate stand-in, a raster crop, or an icon.
227269
227306
  *
227307
+ * **`no-key-frame-at-close` (D400).** The line used to be written ONLY when
227308
+ * the TILE ranked below native, so a track whose thumbnail landed natively
227309
+ * while its key frame missed carried no reason at all — three of the four
227310
+ * `MISSING_KEYFRAME` tracks in the 2026-09-07 operator audit were exactly
227311
+ * that shape, and their "niente ultimo" had no cause anywhere on the row.
227312
+ * The key frame is the head of a cascade (`keyFrame ⇒ keyFrameSmall ⇒ the
227313
+ * lastFrame copy source`), so its absence is now on this line whatever the
227314
+ * tile ended up being.
227315
+ *
227270
227316
  * **Absent ≠ "missed silently"**: a row written before the column, a hub
227271
227317
  * that predates the field, and every track whose tile landed native all
227272
227318
  * omit it. Render nothing when absent.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "camstack",
3
- "version": "1.2.121",
3
+ "version": "1.2.123",
4
4
  "description": "CLI tool for managing and running CamStack server",
5
5
  "keywords": [
6
6
  "camstack",