camstack 1.2.98 → 1.2.100

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.
@@ -14522,7 +14522,7 @@ function date4(params) {
14522
14522
  // ../../node_modules/zod/v4/classic/external.js
14523
14523
  config(en_default());
14524
14524
 
14525
- // ../types/dist/sleep-BQJlnUOJ.mjs
14525
+ // ../types/dist/sleep-Db7MvrdS.mjs
14526
14526
  var WELL_KNOWN_TABS = [
14527
14527
  {
14528
14528
  id: "overview",
@@ -26669,6 +26669,27 @@ var RecentTracksQueryInput = external_exports.object({
26669
26669
  */
26670
26670
  classes: external_exports.array(external_exports.string()).optional()
26671
26671
  });
26672
+ var SummarySchema = external_exports.object({
26673
+ id: external_exports.string(),
26674
+ deviceId: external_exports.number(),
26675
+ openedAt: external_exports.number(),
26676
+ lastActiveAt: external_exports.number(),
26677
+ sealedAt: external_exports.number().nullable(),
26678
+ memberCount: external_exports.number().int().nonnegative(),
26679
+ groupShotKey: external_exports.string().nullable()
26680
+ });
26681
+ var SummariesQueryInput = external_exports.object({
26682
+ deviceIds: external_exports.array(external_exports.number()).min(1),
26683
+ since: external_exports.number().optional(),
26684
+ until: external_exports.number().optional(),
26685
+ limit: external_exports.number().int().min(1).max(200).default(50)
26686
+ });
26687
+ var SummariesPageSchema = external_exports.object({ summaries: external_exports.array(SummarySchema).readonly() });
26688
+ var SummaryDetailSchema = external_exports.object({
26689
+ summary: SummarySchema,
26690
+ /** Member track ids, in absorption order. */
26691
+ trackIds: external_exports.array(external_exports.string()).readonly()
26692
+ });
26672
26693
  var RecentTracksPageSchema = external_exports.object({
26673
26694
  /** Merged page, ordered by (`lastSeen` DESC, `trackId` DESC). */
26674
26695
  tracks: external_exports.array(TrackSchema).readonly(),
@@ -27005,6 +27026,10 @@ var pipelineAnalyticsCapability = {
27005
27026
  * are not included (same contract as `listTracks`).
27006
27027
  */
27007
27028
  listRecentTracks: method(RecentTracksQueryInput, RecentTracksPageSchema),
27029
+ /** Newest first by `openedAt`, for a camera set, inside an optional window. */
27030
+ listSummaries: method(SummariesQueryInput, SummariesPageSchema),
27031
+ /** One summary with its member track ids; `null` for an id nobody wrote. */
27032
+ getSummary: method(external_exports.object({ id: external_exports.string() }), SummaryDetailSchema.nullable()),
27008
27033
  clearTracks: method(external_exports.object({ deviceId: external_exports.number() }), external_exports.void(), {
27009
27034
  kind: "mutation",
27010
27035
  auth: "admin"
@@ -28593,6 +28618,14 @@ var AgentPipelineSettingsSchema = external_exports.object({
28593
28618
  /** Node is eligible to be the ingest / source-owner (serve the restream). */
28594
28619
  ingest: external_exports.boolean().optional(),
28595
28620
  /**
28621
+ * This node's decode RAM budget, MB. Wins over the cluster
28622
+ * `nodeDecodeBudgetMb`; absent, the runner derives a share of the node's
28623
+ * own RAM unless the operator moved the cluster value (D365).
28624
+ */
28625
+ decodeBudgetMb: external_exports.number().int().min(1024).max(65536).optional(),
28626
+ /** This node's live decode-worker cap. Wins over the cluster `maxLiveDecodeWorkers`. */
28627
+ maxLiveDecodeWorkers: external_exports.number().int().min(1).max(32).optional(),
28628
+ /**
28596
28629
  * Operator override for the LAN host a cross-node decoder dials to reach
28597
28630
  * THIS node's restream (Cluster UI). Absent → auto-detect: a remote runner
28598
28631
  * falls back to its `CAMSTACK_HUB_URL`-derived host (the Moleculer address
@@ -29156,6 +29189,20 @@ var pipelineOrchestratorCapability = {
29156
29189
  auth: "admin"
29157
29190
  }),
29158
29191
  /**
29192
+ * Size ONE node's decode admission: its RAM budget and live-worker cap.
29193
+ * `null` clears a limit (back to the cluster setting or the RAM-derived
29194
+ * default); an omitted key leaves it alone. Read by the node's runner on
29195
+ * its next lease refresh (D365).
29196
+ */
29197
+ setAgentDecodeLimits: method(external_exports.object({
29198
+ agentNodeId: external_exports.string(),
29199
+ decodeBudgetMb: external_exports.number().int().min(1024).max(65536).nullable().optional(),
29200
+ maxLiveDecodeWorkers: external_exports.number().int().min(1).max(32).nullable().optional()
29201
+ }), external_exports.object({ success: external_exports.literal(true) }), {
29202
+ kind: "mutation",
29203
+ auth: "admin"
29204
+ }),
29205
+ /**
29159
29206
  * Set (or clear) the operator override for the LAN host a cross-node
29160
29207
  * decoder dials to reach this node's restream. Pass a non-empty string to
29161
29208
  * override the auto-detected address (the runner's `CAMSTACK_HUB_URL`
@@ -42787,6 +42834,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
42787
42834
  addonId: null,
42788
42835
  access: "view"
42789
42836
  },
42837
+ "pipelineAnalytics.getSummary": {
42838
+ capName: "pipeline-analytics",
42839
+ capScope: "device",
42840
+ addonId: null,
42841
+ access: "view"
42842
+ },
42790
42843
  "pipelineAnalytics.getTrack": {
42791
42844
  capName: "pipeline-analytics",
42792
42845
  capScope: "device",
@@ -42865,6 +42918,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
42865
42918
  addonId: null,
42866
42919
  access: "view"
42867
42920
  },
42921
+ "pipelineAnalytics.listSummaries": {
42922
+ capName: "pipeline-analytics",
42923
+ capScope: "device",
42924
+ addonId: null,
42925
+ access: "view"
42926
+ },
42868
42927
  "pipelineAnalytics.listTrackMedia": {
42869
42928
  capName: "pipeline-analytics",
42870
42929
  capScope: "device",
@@ -43423,6 +43482,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
43423
43482
  addonId: null,
43424
43483
  access: "create"
43425
43484
  },
43485
+ "pipelineOrchestrator.setAgentDecodeLimits": {
43486
+ capName: "pipeline-orchestrator",
43487
+ capScope: "system",
43488
+ addonId: null,
43489
+ access: "create"
43490
+ },
43426
43491
  "pipelineOrchestrator.setAgentDetectWeight": {
43427
43492
  capName: "pipeline-orchestrator",
43428
43493
  capScope: "system",
@@ -46554,6 +46619,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
46554
46619
  form: "array",
46555
46620
  optional: true
46556
46621
  }],
46622
+ "pipelineAnalytics.listSummaries": [{
46623
+ name: "deviceIds",
46624
+ form: "array",
46625
+ optional: false
46626
+ }],
46557
46627
  "pipelineAnalytics.listTrackMedia": [{
46558
46628
  name: "deviceId",
46559
46629
  form: "single",
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runDiscover
4
- } from "./chunk-GW5K6RH3.js";
4
+ } from "./chunk-7N7KEXGL.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-VHGRUBGI.js");
41
+ await import("./launcher-REUU5U7C.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-VHGRUBGI.js");
86
+ await import("./launcher-REUU5U7C.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-EV3TAGEL.js");
1133
+ const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-3TATRQOW.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-GW5K6RH3.js";
8
+ } from "./chunk-7N7KEXGL.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-DlL8iWQo.js
23637
- var require_dist_DlL8iWQo = __commonJS({
23638
- "../system/dist/dist-DlL8iWQo.js"(exports) {
23636
+ // ../system/dist/dist-Ci7Ln6Rt.js
23637
+ var require_dist_Ci7Ln6Rt = __commonJS({
23638
+ "../system/dist/dist-Ci7Ln6Rt.js"(exports) {
23639
23639
  "use strict";
23640
23640
  var zod = require_zod();
23641
23641
  var EventCategory = /* @__PURE__ */ (function(EventCategory2) {
@@ -37374,6 +37374,27 @@ var require_dist_DlL8iWQo = __commonJS({
37374
37374
  */
37375
37375
  classes: zod.z.array(zod.z.string()).optional()
37376
37376
  });
37377
+ var SummarySchema = zod.z.object({
37378
+ id: zod.z.string(),
37379
+ deviceId: zod.z.number(),
37380
+ openedAt: zod.z.number(),
37381
+ lastActiveAt: zod.z.number(),
37382
+ sealedAt: zod.z.number().nullable(),
37383
+ memberCount: zod.z.number().int().nonnegative(),
37384
+ groupShotKey: zod.z.string().nullable()
37385
+ });
37386
+ var SummariesQueryInput = zod.z.object({
37387
+ deviceIds: zod.z.array(zod.z.number()).min(1),
37388
+ since: zod.z.number().optional(),
37389
+ until: zod.z.number().optional(),
37390
+ limit: zod.z.number().int().min(1).max(200).default(50)
37391
+ });
37392
+ var SummariesPageSchema = zod.z.object({ summaries: zod.z.array(SummarySchema).readonly() });
37393
+ var SummaryDetailSchema = zod.z.object({
37394
+ summary: SummarySchema,
37395
+ /** Member track ids, in absorption order. */
37396
+ trackIds: zod.z.array(zod.z.string()).readonly()
37397
+ });
37377
37398
  var RecentTracksPageSchema = zod.z.object({
37378
37399
  /** Merged page, ordered by (`lastSeen` DESC, `trackId` DESC). */
37379
37400
  tracks: zod.z.array(TrackSchema).readonly(),
@@ -37710,6 +37731,10 @@ var require_dist_DlL8iWQo = __commonJS({
37710
37731
  * are not included (same contract as `listTracks`).
37711
37732
  */
37712
37733
  listRecentTracks: method(RecentTracksQueryInput, RecentTracksPageSchema),
37734
+ /** Newest first by `openedAt`, for a camera set, inside an optional window. */
37735
+ listSummaries: method(SummariesQueryInput, SummariesPageSchema),
37736
+ /** One summary with its member track ids; `null` for an id nobody wrote. */
37737
+ getSummary: method(zod.z.object({ id: zod.z.string() }), SummaryDetailSchema.nullable()),
37713
37738
  clearTracks: method(zod.z.object({ deviceId: zod.z.number() }), zod.z.void(), {
37714
37739
  kind: "mutation",
37715
37740
  auth: "admin"
@@ -39155,6 +39180,14 @@ var require_dist_DlL8iWQo = __commonJS({
39155
39180
  /** Node is eligible to be the ingest / source-owner (serve the restream). */
39156
39181
  ingest: zod.z.boolean().optional(),
39157
39182
  /**
39183
+ * This node's decode RAM budget, MB. Wins over the cluster
39184
+ * `nodeDecodeBudgetMb`; absent, the runner derives a share of the node's
39185
+ * own RAM unless the operator moved the cluster value (D365).
39186
+ */
39187
+ decodeBudgetMb: zod.z.number().int().min(1024).max(65536).optional(),
39188
+ /** This node's live decode-worker cap. Wins over the cluster `maxLiveDecodeWorkers`. */
39189
+ maxLiveDecodeWorkers: zod.z.number().int().min(1).max(32).optional(),
39190
+ /**
39158
39191
  * Operator override for the LAN host a cross-node decoder dials to reach
39159
39192
  * THIS node's restream (Cluster UI). Absent → auto-detect: a remote runner
39160
39193
  * falls back to its `CAMSTACK_HUB_URL`-derived host (the Moleculer address
@@ -39717,6 +39750,20 @@ var require_dist_DlL8iWQo = __commonJS({
39717
39750
  auth: "admin"
39718
39751
  }),
39719
39752
  /**
39753
+ * Size ONE node's decode admission: its RAM budget and live-worker cap.
39754
+ * `null` clears a limit (back to the cluster setting or the RAM-derived
39755
+ * default); an omitted key leaves it alone. Read by the node's runner on
39756
+ * its next lease refresh (D365).
39757
+ */
39758
+ setAgentDecodeLimits: method(zod.z.object({
39759
+ agentNodeId: zod.z.string(),
39760
+ decodeBudgetMb: zod.z.number().int().min(1024).max(65536).nullable().optional(),
39761
+ maxLiveDecodeWorkers: zod.z.number().int().min(1).max(32).nullable().optional()
39762
+ }), zod.z.object({ success: zod.z.literal(true) }), {
39763
+ kind: "mutation",
39764
+ auth: "admin"
39765
+ }),
39766
+ /**
39720
39767
  * Set (or clear) the operator override for the LAN host a cross-node
39721
39768
  * decoder dials to reach this node's restream. Pass a non-empty string to
39722
39769
  * override the auto-detected address (the runner's `CAMSTACK_HUB_URL`
@@ -54169,6 +54216,12 @@ var require_dist_DlL8iWQo = __commonJS({
54169
54216
  addonId: null,
54170
54217
  access: "view"
54171
54218
  },
54219
+ "pipelineAnalytics.getSummary": {
54220
+ capName: "pipeline-analytics",
54221
+ capScope: "device",
54222
+ addonId: null,
54223
+ access: "view"
54224
+ },
54172
54225
  "pipelineAnalytics.getTrack": {
54173
54226
  capName: "pipeline-analytics",
54174
54227
  capScope: "device",
@@ -54247,6 +54300,12 @@ var require_dist_DlL8iWQo = __commonJS({
54247
54300
  addonId: null,
54248
54301
  access: "view"
54249
54302
  },
54303
+ "pipelineAnalytics.listSummaries": {
54304
+ capName: "pipeline-analytics",
54305
+ capScope: "device",
54306
+ addonId: null,
54307
+ access: "view"
54308
+ },
54250
54309
  "pipelineAnalytics.listTrackMedia": {
54251
54310
  capName: "pipeline-analytics",
54252
54311
  capScope: "device",
@@ -54805,6 +54864,12 @@ var require_dist_DlL8iWQo = __commonJS({
54805
54864
  addonId: null,
54806
54865
  access: "create"
54807
54866
  },
54867
+ "pipelineOrchestrator.setAgentDecodeLimits": {
54868
+ capName: "pipeline-orchestrator",
54869
+ capScope: "system",
54870
+ addonId: null,
54871
+ access: "create"
54872
+ },
54808
54873
  "pipelineOrchestrator.setAgentDetectWeight": {
54809
54874
  capName: "pipeline-orchestrator",
54810
54875
  capScope: "system",
@@ -57936,6 +58001,11 @@ var require_dist_DlL8iWQo = __commonJS({
57936
58001
  form: "array",
57937
58002
  optional: true
57938
58003
  }],
58004
+ "pipelineAnalytics.listSummaries": [{
58005
+ name: "deviceIds",
58006
+ form: "array",
58007
+ optional: false
58008
+ }],
57939
58009
  "pipelineAnalytics.listTrackMedia": [{
57940
58010
  name: "deviceId",
57941
58011
  form: "single",
@@ -60118,7 +60188,7 @@ var require_alerts_addon = __commonJS({
60118
60188
  [Symbol.toStringTag]: { value: "Module" }
60119
60189
  });
60120
60190
  require_chunk_Cek0wNdY();
60121
- var require_dist10 = require_dist_DlL8iWQo();
60191
+ var require_dist10 = require_dist_Ci7Ln6Rt();
60122
60192
  function selectExpired(alerts, cutoffMs) {
60123
60193
  return alerts.filter((a) => a.createdAt < cutoffMs).sort((a, b) => a.createdAt - b.createdAt).map((a) => a.id);
60124
60194
  }
@@ -60937,7 +61007,7 @@ var require_console_logging = __commonJS({
60937
61007
  [Symbol.toStringTag]: { value: "Module" }
60938
61008
  });
60939
61009
  require_chunk_Cek0wNdY();
60940
- var require_dist10 = require_dist_DlL8iWQo();
61010
+ var require_dist10 = require_dist_Ci7Ln6Rt();
60941
61011
  var require_formatter = require_formatter_DqAKDlvN();
60942
61012
  var LEVEL_RANK = {
60943
61013
  debug: 0,
@@ -61031,7 +61101,7 @@ var require_core_blocks_addon = __commonJS({
61031
61101
  "use strict";
61032
61102
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
61033
61103
  var require_chunk = require_chunk_Cek0wNdY();
61034
- var require_dist10 = require_dist_DlL8iWQo();
61104
+ var require_dist10 = require_dist_Ci7Ln6Rt();
61035
61105
  var node_crypto = __require("crypto");
61036
61106
  var node_fs_promises = __require("fs/promises");
61037
61107
  node_fs_promises = require_chunk.__toESM(node_fs_promises);
@@ -61928,11 +61998,11 @@ var require_core_blocks = __commonJS({
61928
61998
  }
61929
61999
  });
61930
62000
 
61931
- // ../system/dist/retired-settings-keys-B5wVSU65.js
61932
- var require_retired_settings_keys_B5wVSU65 = __commonJS({
61933
- "../system/dist/retired-settings-keys-B5wVSU65.js"(exports) {
62001
+ // ../system/dist/retired-settings-keys-Ye3I5xd0.js
62002
+ var require_retired_settings_keys_Ye3I5xd0 = __commonJS({
62003
+ "../system/dist/retired-settings-keys-Ye3I5xd0.js"(exports) {
61934
62004
  "use strict";
61935
- var require_dist10 = require_dist_DlL8iWQo();
62005
+ var require_dist10 = require_dist_Ci7Ln6Rt();
61936
62006
  function settingsStoreIsAuthoritativeHere(env) {
61937
62007
  const raw = (env["CAMSTACK_ROLE"] ?? "").trim().toLowerCase();
61938
62008
  return raw === "" || raw === "hub";
@@ -64146,8 +64216,8 @@ var require_device_manager_addon = __commonJS({
64146
64216
  [Symbol.toStringTag]: { value: "Module" }
64147
64217
  });
64148
64218
  require_chunk_Cek0wNdY();
64149
- var require_dist10 = require_dist_DlL8iWQo();
64150
- var require_retired_settings_keys = require_retired_settings_keys_B5wVSU65();
64219
+ var require_dist10 = require_dist_Ci7Ln6Rt();
64220
+ var require_retired_settings_keys = require_retired_settings_keys_Ye3I5xd0();
64151
64221
  var node_crypto = __require("crypto");
64152
64222
  var _camstack_types_node = require_node();
64153
64223
  var JOB_HISTORY = 20;
@@ -69662,7 +69732,7 @@ var require_hub_forwarder = __commonJS({
69662
69732
  [Symbol.toStringTag]: { value: "Module" }
69663
69733
  });
69664
69734
  require_chunk_Cek0wNdY();
69665
- var require_dist10 = require_dist_DlL8iWQo();
69735
+ var require_dist10 = require_dist_Ci7Ln6Rt();
69666
69736
  var require_formatter = require_formatter_DqAKDlvN();
69667
69737
  var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
69668
69738
  var HubForwarderDestination = class {
@@ -69799,7 +69869,7 @@ var require_liveness_monitor_addon = __commonJS({
69799
69869
  "use strict";
69800
69870
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
69801
69871
  require_chunk_Cek0wNdY();
69802
- var require_dist10 = require_dist_DlL8iWQo();
69872
+ var require_dist10 = require_dist_Ci7Ln6Rt();
69803
69873
  var NO_DEVICES = "liveness:no-devices";
69804
69874
  var ALL_OFFLINE = "liveness:all-devices-offline";
69805
69875
  var NO_FOOTAGE_PREFIX = "liveness:no-footage:";
@@ -69989,7 +70059,7 @@ var require_local_auth_addon = __commonJS({
69989
70059
  [Symbol.toStringTag]: { value: "Module" }
69990
70060
  });
69991
70061
  var require_chunk = require_chunk_Cek0wNdY();
69992
- var require_dist10 = require_dist_DlL8iWQo();
70062
+ var require_dist10 = require_dist_Ci7Ln6Rt();
69993
70063
  var node_crypto = __require("crypto");
69994
70064
  node_crypto = require_chunk.__toESM(node_crypto);
69995
70065
  var crypto$1 = __require("crypto");
@@ -77802,7 +77872,7 @@ var require_loki_logging = __commonJS({
77802
77872
  [Symbol.toStringTag]: { value: "Module" }
77803
77873
  });
77804
77874
  require_chunk_Cek0wNdY();
77805
- var require_dist10 = require_dist_DlL8iWQo();
77875
+ var require_dist10 = require_dist_Ci7Ln6Rt();
77806
77876
  function sanitizeLabelName(raw) {
77807
77877
  const replaced = raw.replaceAll(/[^a-zA-Z0-9_]/g, "_");
77808
77878
  return /^[a-zA-Z_]/.test(replaced) ? replaced : `_${replaced}`;
@@ -78367,7 +78437,7 @@ var require_native_metrics_addon = __commonJS({
78367
78437
  [Symbol.toStringTag]: { value: "Module" }
78368
78438
  });
78369
78439
  var require_chunk = require_chunk_Cek0wNdY();
78370
- var require_dist10 = require_dist_DlL8iWQo();
78440
+ var require_dist10 = require_dist_Ci7Ln6Rt();
78371
78441
  var node_fs_promises = __require("fs/promises");
78372
78442
  var node_child_process = __require("child_process");
78373
78443
  var node_util = __require("util");
@@ -80951,7 +81021,7 @@ var require_filesystem_storage_addon = __commonJS({
80951
81021
  [Symbol.toStringTag]: { value: "Module" }
80952
81022
  });
80953
81023
  var require_chunk = require_chunk_Cek0wNdY();
80954
- var require_dist10 = require_dist_DlL8iWQo();
81024
+ var require_dist10 = require_dist_Ci7Ln6Rt();
80955
81025
  var node_crypto = __require("crypto");
80956
81026
  var node_fs_promises = __require("fs/promises");
80957
81027
  var node_path = __require("path");
@@ -82067,8 +82137,8 @@ var require_sqlite_settings_addon = __commonJS({
82067
82137
  [Symbol.toStringTag]: { value: "Module" }
82068
82138
  });
82069
82139
  var require_chunk = require_chunk_Cek0wNdY();
82070
- var require_dist10 = require_dist_DlL8iWQo();
82071
- var require_retired_settings_keys = require_retired_settings_keys_B5wVSU65();
82140
+ var require_dist10 = require_dist_Ci7Ln6Rt();
82141
+ var require_retired_settings_keys = require_retired_settings_keys_Ye3I5xd0();
82072
82142
  var node_crypto = __require("crypto");
82073
82143
  var node_fs = __require("fs");
82074
82144
  var node_module = __require("module");
@@ -84558,7 +84628,7 @@ var require_storage_orchestrator_addon = __commonJS({
84558
84628
  [Symbol.toStringTag]: { value: "Module" }
84559
84629
  });
84560
84630
  var require_chunk = require_chunk_Cek0wNdY();
84561
- var require_dist10 = require_dist_DlL8iWQo();
84631
+ var require_dist10 = require_dist_Ci7Ln6Rt();
84562
84632
  var require_hub_cap_forward = require_hub_cap_forward_DmHNjbB0();
84563
84633
  var zod = require_zod();
84564
84634
  var node_crypto = __require("crypto");
@@ -87509,7 +87579,7 @@ var require_system_config_addon = __commonJS({
87509
87579
  [Symbol.toStringTag]: { value: "Module" }
87510
87580
  });
87511
87581
  require_chunk_Cek0wNdY();
87512
- var require_dist10 = require_dist_DlL8iWQo();
87582
+ var require_dist10 = require_dist_Ci7Ln6Rt();
87513
87583
  var SECTION_TITLES = {
87514
87584
  server: "Server",
87515
87585
  auth: "Authentication"
@@ -105570,7 +105640,7 @@ var require_winston_logging = __commonJS({
105570
105640
  [Symbol.toStringTag]: { value: "Module" }
105571
105641
  });
105572
105642
  var require_chunk = require_chunk_Cek0wNdY();
105573
- var require_dist10 = require_dist_DlL8iWQo();
105643
+ var require_dist10 = require_dist_Ci7Ln6Rt();
105574
105644
  var require_formatter = require_formatter_DqAKDlvN();
105575
105645
  var node_path = __require("path");
105576
105646
  node_path = require_chunk.__toESM(node_path);
@@ -107513,9 +107583,9 @@ var require_event_category_BaEgqJNv = __commonJS({
107513
107583
  }
107514
107584
  });
107515
107585
 
107516
- // ../types/dist/sleep-BCUreN6s.js
107517
- var require_sleep_BCUreN6s = __commonJS({
107518
- "../types/dist/sleep-BCUreN6s.js"(exports) {
107586
+ // ../types/dist/sleep-DVTaZZHP.js
107587
+ var require_sleep_DVTaZZHP = __commonJS({
107588
+ "../types/dist/sleep-DVTaZZHP.js"(exports) {
107519
107589
  "use strict";
107520
107590
  var require_event_category = require_event_category_BaEgqJNv();
107521
107591
  var zod = require_zod();
@@ -110190,6 +110260,8 @@ var require_sleep_BCUreN6s = __commonJS({
110190
110260
  getTrack: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "getTrack", "query", input),
110191
110261
  listTracks: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "listTracks", "query", input),
110192
110262
  listRecentTracks: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "listRecentTracks", "query", input),
110263
+ listSummaries: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "listSummaries", "query", input),
110264
+ getSummary: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "getSummary", "query", input),
110193
110265
  clearTracks: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "clearTracks", "mutation", input),
110194
110266
  getMotionEvents: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "getMotionEvents", "query", input),
110195
110267
  getObjectEvents: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "getObjectEvents", "query", input),
@@ -111203,7 +111275,7 @@ var require_addon = __commonJS({
111203
111275
  "use strict";
111204
111276
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
111205
111277
  var require_event_category = require_event_category_BaEgqJNv();
111206
- var require_sleep = require_sleep_BCUreN6s();
111278
+ var require_sleep = require_sleep_DVTaZZHP();
111207
111279
  var require_err_msg = require_err_msg_COpsHMw2();
111208
111280
  var CAP_INPUT_DEFAULTS = Object.freeze({
111209
111281
  "addons": { "getLogs": { "limit": 100 } },
@@ -111318,6 +111390,7 @@ var require_addon = __commonJS({
111318
111390
  "getObjectEvents": { "limit": 1e3 },
111319
111391
  "getSensorEvents": { "limit": 1e3 },
111320
111392
  "listRecentTracks": { "limit": 200 },
111393
+ "listSummaries": { "limit": 50 },
111321
111394
  "reclaimDebugMedia": { "mode": "report" },
111322
111395
  "searchObjectEvents": {
111323
111396
  "limit": 50,
@@ -130162,7 +130235,7 @@ var require_dist3 = __commonJS({
130162
130235
  "use strict";
130163
130236
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
130164
130237
  var require_chunk = require_chunk_Cek0wNdY();
130165
- var require_dist10 = require_dist_DlL8iWQo();
130238
+ var require_dist10 = require_dist_Ci7Ln6Rt();
130166
130239
  var require_builtins_alerts_alerts_addon = require_alerts_addon();
130167
130240
  require_alerts();
130168
130241
  var require_formatter = require_formatter_DqAKDlvN();
@@ -211279,7 +211352,7 @@ var require_dist4 = __commonJS({
211279
211352
  "use strict";
211280
211353
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
211281
211354
  var require_event_category = require_event_category_BaEgqJNv();
211282
- var require_sleep = require_sleep_BCUreN6s();
211355
+ var require_sleep = require_sleep_DVTaZZHP();
211283
211356
  var require_canonical_hash = require_canonical_hash_DNV8S5ET();
211284
211357
  var require_enums2 = require_enums();
211285
211358
  var require_err_msg = require_err_msg_COpsHMw2();
@@ -225698,6 +225771,29 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
225698
225771
  */
225699
225772
  classes: zod.z.array(zod.z.string()).optional()
225700
225773
  });
225774
+ var SummarySchema = zod.z.object({
225775
+ id: zod.z.string(),
225776
+ deviceId: zod.z.number(),
225777
+ openedAt: zod.z.number(),
225778
+ lastActiveAt: zod.z.number(),
225779
+ sealedAt: zod.z.number().nullable(),
225780
+ memberCount: zod.z.number().int().nonnegative(),
225781
+ groupShotKey: zod.z.string().nullable()
225782
+ });
225783
+ var SUMMARIES_MAX_LIMIT = 200;
225784
+ var SUMMARIES_DEFAULT_LIMIT = 50;
225785
+ var SummariesQueryInput = zod.z.object({
225786
+ deviceIds: zod.z.array(zod.z.number()).min(1),
225787
+ since: zod.z.number().optional(),
225788
+ until: zod.z.number().optional(),
225789
+ limit: zod.z.number().int().min(1).max(200).default(50)
225790
+ });
225791
+ var SummariesPageSchema = zod.z.object({ summaries: zod.z.array(SummarySchema).readonly() });
225792
+ var SummaryDetailSchema = zod.z.object({
225793
+ summary: SummarySchema,
225794
+ /** Member track ids, in absorption order. */
225795
+ trackIds: zod.z.array(zod.z.string()).readonly()
225796
+ });
225701
225797
  var RecentTracksPageSchema = zod.z.object({
225702
225798
  /** Merged page, ordered by (`lastSeen` DESC, `trackId` DESC). */
225703
225799
  tracks: zod.z.array(TrackSchema).readonly(),
@@ -226035,6 +226131,10 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
226035
226131
  * are not included (same contract as `listTracks`).
226036
226132
  */
226037
226133
  listRecentTracks: require_sleep.method(RecentTracksQueryInput, RecentTracksPageSchema),
226134
+ /** Newest first by `openedAt`, for a camera set, inside an optional window. */
226135
+ listSummaries: require_sleep.method(SummariesQueryInput, SummariesPageSchema),
226136
+ /** One summary with its member track ids; `null` for an id nobody wrote. */
226137
+ getSummary: require_sleep.method(zod.z.object({ id: zod.z.string() }), SummaryDetailSchema.nullable()),
226038
226138
  clearTracks: require_sleep.method(zod.z.object({ deviceId: zod.z.number() }), zod.z.void(), {
226039
226139
  kind: "mutation",
226040
226140
  auth: "admin"
@@ -227623,6 +227723,14 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
227623
227723
  /** Node is eligible to be the ingest / source-owner (serve the restream). */
227624
227724
  ingest: zod.z.boolean().optional(),
227625
227725
  /**
227726
+ * This node's decode RAM budget, MB. Wins over the cluster
227727
+ * `nodeDecodeBudgetMb`; absent, the runner derives a share of the node's
227728
+ * own RAM unless the operator moved the cluster value (D365).
227729
+ */
227730
+ decodeBudgetMb: zod.z.number().int().min(1024).max(65536).optional(),
227731
+ /** This node's live decode-worker cap. Wins over the cluster `maxLiveDecodeWorkers`. */
227732
+ maxLiveDecodeWorkers: zod.z.number().int().min(1).max(32).optional(),
227733
+ /**
227626
227734
  * Operator override for the LAN host a cross-node decoder dials to reach
227627
227735
  * THIS node's restream (Cluster UI). Absent → auto-detect: a remote runner
227628
227736
  * falls back to its `CAMSTACK_HUB_URL`-derived host (the Moleculer address
@@ -228186,6 +228294,20 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
228186
228294
  auth: "admin"
228187
228295
  }),
228188
228296
  /**
228297
+ * Size ONE node's decode admission: its RAM budget and live-worker cap.
228298
+ * `null` clears a limit (back to the cluster setting or the RAM-derived
228299
+ * default); an omitted key leaves it alone. Read by the node's runner on
228300
+ * its next lease refresh (D365).
228301
+ */
228302
+ setAgentDecodeLimits: require_sleep.method(zod.z.object({
228303
+ agentNodeId: zod.z.string(),
228304
+ decodeBudgetMb: zod.z.number().int().min(1024).max(65536).nullable().optional(),
228305
+ maxLiveDecodeWorkers: zod.z.number().int().min(1).max(32).nullable().optional()
228306
+ }), zod.z.object({ success: zod.z.literal(true) }), {
228307
+ kind: "mutation",
228308
+ auth: "admin"
228309
+ }),
228310
+ /**
228189
228311
  * Set (or clear) the operator override for the LAN host a cross-node
228190
228312
  * decoder dials to reach this node's restream. Pass a non-empty string to
228191
228313
  * override the auto-detected address (the runner's `CAMSTACK_HUB_URL`
@@ -245961,6 +246083,12 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
245961
246083
  addonId: null,
245962
246084
  access: "view"
245963
246085
  },
246086
+ "pipelineAnalytics.getSummary": {
246087
+ capName: "pipeline-analytics",
246088
+ capScope: "device",
246089
+ addonId: null,
246090
+ access: "view"
246091
+ },
245964
246092
  "pipelineAnalytics.getTrack": {
245965
246093
  capName: "pipeline-analytics",
245966
246094
  capScope: "device",
@@ -246039,6 +246167,12 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
246039
246167
  addonId: null,
246040
246168
  access: "view"
246041
246169
  },
246170
+ "pipelineAnalytics.listSummaries": {
246171
+ capName: "pipeline-analytics",
246172
+ capScope: "device",
246173
+ addonId: null,
246174
+ access: "view"
246175
+ },
246042
246176
  "pipelineAnalytics.listTrackMedia": {
246043
246177
  capName: "pipeline-analytics",
246044
246178
  capScope: "device",
@@ -246597,6 +246731,12 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
246597
246731
  addonId: null,
246598
246732
  access: "create"
246599
246733
  },
246734
+ "pipelineOrchestrator.setAgentDecodeLimits": {
246735
+ capName: "pipeline-orchestrator",
246736
+ capScope: "system",
246737
+ addonId: null,
246738
+ access: "create"
246739
+ },
246600
246740
  "pipelineOrchestrator.setAgentDetectWeight": {
246601
246741
  capName: "pipeline-orchestrator",
246602
246742
  capScope: "system",
@@ -249986,6 +250126,11 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
249986
250126
  form: "array",
249987
250127
  optional: true
249988
250128
  }],
250129
+ "pipelineAnalytics.listSummaries": [{
250130
+ name: "deviceIds",
250131
+ form: "array",
250132
+ optional: false
250133
+ }],
249989
250134
  "pipelineAnalytics.listTrackMedia": [{
249990
250135
  name: "deviceId",
249991
250136
  form: "single",
@@ -251711,6 +251856,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
251711
251856
  setAgentMaxCameras: (input) => dispatch("pipelineOrchestrator", "setAgentMaxCameras", "mutation", input),
251712
251857
  setAgentDetectWeight: (input) => dispatch("pipelineOrchestrator", "setAgentDetectWeight", "mutation", input),
251713
251858
  setAgentCapabilities: (input) => dispatch("pipelineOrchestrator", "setAgentCapabilities", "mutation", input),
251859
+ setAgentDecodeLimits: (input) => dispatch("pipelineOrchestrator", "setAgentDecodeLimits", "mutation", input),
251714
251860
  setAgentReachableHost: (input) => dispatch("pipelineOrchestrator", "setAgentReachableHost", "mutation", input),
251715
251861
  setAgentInferenceDevices: (input) => dispatch("pipelineOrchestrator", "setAgentInferenceDevices", "mutation", input),
251716
251862
  getNodeInferenceDevices: (input) => dispatch("pipelineOrchestrator", "getNodeInferenceDevices", "query", input),
@@ -255416,6 +255562,8 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
255416
255562
  exports.STREAM_PROFILE_META = STREAM_PROFILE_META;
255417
255563
  exports.STREAM_QUALITY_LABELS = STREAM_QUALITY_LABELS;
255418
255564
  exports.SUB_DETECTION_TYPES = SUB_DETECTION_TYPES;
255565
+ exports.SUMMARIES_DEFAULT_LIMIT = SUMMARIES_DEFAULT_LIMIT;
255566
+ exports.SUMMARIES_MAX_LIMIT = SUMMARIES_MAX_LIMIT;
255419
255567
  exports.SYSTEM_CAP_NAMES = SYSTEM_CAP_NAMES;
255420
255568
  exports.SYSTEM_SCOPE_DEVICE_METHODS = SYSTEM_SCOPE_DEVICE_METHODS;
255421
255569
  exports.SceneCheckSchema = SceneCheckSchema;
@@ -255517,6 +255665,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
255517
255665
  exports.SubscribeAudioChunksResultSchema = require_sleep.SubscribeAudioChunksResultSchema;
255518
255666
  exports.SubscribeFramesInputSchema = require_sleep.SubscribeFramesInputSchema;
255519
255667
  exports.SubscribeFramesResultSchema = require_sleep.SubscribeFramesResultSchema;
255668
+ exports.SummarySchema = SummarySchema;
255520
255669
  exports.SwitchStatusSchema = SwitchStatusSchema;
255521
255670
  exports.SystemMetricsSchema = SystemMetricsSchema;
255522
255671
  exports.SystemMirror = SystemMirror;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "camstack",
3
- "version": "1.2.98",
3
+ "version": "1.2.100",
4
4
  "description": "CLI tool for managing and running CamStack server",
5
5
  "keywords": [
6
6
  "camstack",