camstack 1.2.98 → 1.2.99

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.
@@ -28593,6 +28593,14 @@ var AgentPipelineSettingsSchema = external_exports.object({
28593
28593
  /** Node is eligible to be the ingest / source-owner (serve the restream). */
28594
28594
  ingest: external_exports.boolean().optional(),
28595
28595
  /**
28596
+ * This node's decode RAM budget, MB. Wins over the cluster
28597
+ * `nodeDecodeBudgetMb`; absent, the runner derives a share of the node's
28598
+ * own RAM unless the operator moved the cluster value (D365).
28599
+ */
28600
+ decodeBudgetMb: external_exports.number().int().min(1024).max(65536).optional(),
28601
+ /** This node's live decode-worker cap. Wins over the cluster `maxLiveDecodeWorkers`. */
28602
+ maxLiveDecodeWorkers: external_exports.number().int().min(1).max(32).optional(),
28603
+ /**
28596
28604
  * Operator override for the LAN host a cross-node decoder dials to reach
28597
28605
  * THIS node's restream (Cluster UI). Absent → auto-detect: a remote runner
28598
28606
  * falls back to its `CAMSTACK_HUB_URL`-derived host (the Moleculer address
@@ -29156,6 +29164,20 @@ var pipelineOrchestratorCapability = {
29156
29164
  auth: "admin"
29157
29165
  }),
29158
29166
  /**
29167
+ * Size ONE node's decode admission: its RAM budget and live-worker cap.
29168
+ * `null` clears a limit (back to the cluster setting or the RAM-derived
29169
+ * default); an omitted key leaves it alone. Read by the node's runner on
29170
+ * its next lease refresh (D365).
29171
+ */
29172
+ setAgentDecodeLimits: method(external_exports.object({
29173
+ agentNodeId: external_exports.string(),
29174
+ decodeBudgetMb: external_exports.number().int().min(1024).max(65536).nullable().optional(),
29175
+ maxLiveDecodeWorkers: external_exports.number().int().min(1).max(32).nullable().optional()
29176
+ }), external_exports.object({ success: external_exports.literal(true) }), {
29177
+ kind: "mutation",
29178
+ auth: "admin"
29179
+ }),
29180
+ /**
29159
29181
  * Set (or clear) the operator override for the LAN host a cross-node
29160
29182
  * decoder dials to reach this node's restream. Pass a non-empty string to
29161
29183
  * override the auto-detected address (the runner's `CAMSTACK_HUB_URL`
@@ -43423,6 +43445,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
43423
43445
  addonId: null,
43424
43446
  access: "create"
43425
43447
  },
43448
+ "pipelineOrchestrator.setAgentDecodeLimits": {
43449
+ capName: "pipeline-orchestrator",
43450
+ capScope: "system",
43451
+ addonId: null,
43452
+ access: "create"
43453
+ },
43426
43454
  "pipelineOrchestrator.setAgentDetectWeight": {
43427
43455
  capName: "pipeline-orchestrator",
43428
43456
  capScope: "system",
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-MVI45IY3.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-F62YE57J.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-F62YE57J.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-F3GZOIXQ.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-MVI45IY3.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-2wpm3tOu.js
23637
+ var require_dist_2wpm3tOu = __commonJS({
23638
+ "../system/dist/dist-2wpm3tOu.js"(exports) {
23639
23639
  "use strict";
23640
23640
  var zod = require_zod();
23641
23641
  var EventCategory = /* @__PURE__ */ (function(EventCategory2) {
@@ -39155,6 +39155,14 @@ var require_dist_DlL8iWQo = __commonJS({
39155
39155
  /** Node is eligible to be the ingest / source-owner (serve the restream). */
39156
39156
  ingest: zod.z.boolean().optional(),
39157
39157
  /**
39158
+ * This node's decode RAM budget, MB. Wins over the cluster
39159
+ * `nodeDecodeBudgetMb`; absent, the runner derives a share of the node's
39160
+ * own RAM unless the operator moved the cluster value (D365).
39161
+ */
39162
+ decodeBudgetMb: zod.z.number().int().min(1024).max(65536).optional(),
39163
+ /** This node's live decode-worker cap. Wins over the cluster `maxLiveDecodeWorkers`. */
39164
+ maxLiveDecodeWorkers: zod.z.number().int().min(1).max(32).optional(),
39165
+ /**
39158
39166
  * Operator override for the LAN host a cross-node decoder dials to reach
39159
39167
  * THIS node's restream (Cluster UI). Absent → auto-detect: a remote runner
39160
39168
  * falls back to its `CAMSTACK_HUB_URL`-derived host (the Moleculer address
@@ -39717,6 +39725,20 @@ var require_dist_DlL8iWQo = __commonJS({
39717
39725
  auth: "admin"
39718
39726
  }),
39719
39727
  /**
39728
+ * Size ONE node's decode admission: its RAM budget and live-worker cap.
39729
+ * `null` clears a limit (back to the cluster setting or the RAM-derived
39730
+ * default); an omitted key leaves it alone. Read by the node's runner on
39731
+ * its next lease refresh (D365).
39732
+ */
39733
+ setAgentDecodeLimits: method(zod.z.object({
39734
+ agentNodeId: zod.z.string(),
39735
+ decodeBudgetMb: zod.z.number().int().min(1024).max(65536).nullable().optional(),
39736
+ maxLiveDecodeWorkers: zod.z.number().int().min(1).max(32).nullable().optional()
39737
+ }), zod.z.object({ success: zod.z.literal(true) }), {
39738
+ kind: "mutation",
39739
+ auth: "admin"
39740
+ }),
39741
+ /**
39720
39742
  * Set (or clear) the operator override for the LAN host a cross-node
39721
39743
  * decoder dials to reach this node's restream. Pass a non-empty string to
39722
39744
  * override the auto-detected address (the runner's `CAMSTACK_HUB_URL`
@@ -54805,6 +54827,12 @@ var require_dist_DlL8iWQo = __commonJS({
54805
54827
  addonId: null,
54806
54828
  access: "create"
54807
54829
  },
54830
+ "pipelineOrchestrator.setAgentDecodeLimits": {
54831
+ capName: "pipeline-orchestrator",
54832
+ capScope: "system",
54833
+ addonId: null,
54834
+ access: "create"
54835
+ },
54808
54836
  "pipelineOrchestrator.setAgentDetectWeight": {
54809
54837
  capName: "pipeline-orchestrator",
54810
54838
  capScope: "system",
@@ -60118,7 +60146,7 @@ var require_alerts_addon = __commonJS({
60118
60146
  [Symbol.toStringTag]: { value: "Module" }
60119
60147
  });
60120
60148
  require_chunk_Cek0wNdY();
60121
- var require_dist10 = require_dist_DlL8iWQo();
60149
+ var require_dist10 = require_dist_2wpm3tOu();
60122
60150
  function selectExpired(alerts, cutoffMs) {
60123
60151
  return alerts.filter((a) => a.createdAt < cutoffMs).sort((a, b) => a.createdAt - b.createdAt).map((a) => a.id);
60124
60152
  }
@@ -60937,7 +60965,7 @@ var require_console_logging = __commonJS({
60937
60965
  [Symbol.toStringTag]: { value: "Module" }
60938
60966
  });
60939
60967
  require_chunk_Cek0wNdY();
60940
- var require_dist10 = require_dist_DlL8iWQo();
60968
+ var require_dist10 = require_dist_2wpm3tOu();
60941
60969
  var require_formatter = require_formatter_DqAKDlvN();
60942
60970
  var LEVEL_RANK = {
60943
60971
  debug: 0,
@@ -61031,7 +61059,7 @@ var require_core_blocks_addon = __commonJS({
61031
61059
  "use strict";
61032
61060
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
61033
61061
  var require_chunk = require_chunk_Cek0wNdY();
61034
- var require_dist10 = require_dist_DlL8iWQo();
61062
+ var require_dist10 = require_dist_2wpm3tOu();
61035
61063
  var node_crypto = __require("crypto");
61036
61064
  var node_fs_promises = __require("fs/promises");
61037
61065
  node_fs_promises = require_chunk.__toESM(node_fs_promises);
@@ -61928,11 +61956,11 @@ var require_core_blocks = __commonJS({
61928
61956
  }
61929
61957
  });
61930
61958
 
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) {
61959
+ // ../system/dist/retired-settings-keys-D6gkOkcN.js
61960
+ var require_retired_settings_keys_D6gkOkcN = __commonJS({
61961
+ "../system/dist/retired-settings-keys-D6gkOkcN.js"(exports) {
61934
61962
  "use strict";
61935
- var require_dist10 = require_dist_DlL8iWQo();
61963
+ var require_dist10 = require_dist_2wpm3tOu();
61936
61964
  function settingsStoreIsAuthoritativeHere(env) {
61937
61965
  const raw = (env["CAMSTACK_ROLE"] ?? "").trim().toLowerCase();
61938
61966
  return raw === "" || raw === "hub";
@@ -64146,8 +64174,8 @@ var require_device_manager_addon = __commonJS({
64146
64174
  [Symbol.toStringTag]: { value: "Module" }
64147
64175
  });
64148
64176
  require_chunk_Cek0wNdY();
64149
- var require_dist10 = require_dist_DlL8iWQo();
64150
- var require_retired_settings_keys = require_retired_settings_keys_B5wVSU65();
64177
+ var require_dist10 = require_dist_2wpm3tOu();
64178
+ var require_retired_settings_keys = require_retired_settings_keys_D6gkOkcN();
64151
64179
  var node_crypto = __require("crypto");
64152
64180
  var _camstack_types_node = require_node();
64153
64181
  var JOB_HISTORY = 20;
@@ -69662,7 +69690,7 @@ var require_hub_forwarder = __commonJS({
69662
69690
  [Symbol.toStringTag]: { value: "Module" }
69663
69691
  });
69664
69692
  require_chunk_Cek0wNdY();
69665
- var require_dist10 = require_dist_DlL8iWQo();
69693
+ var require_dist10 = require_dist_2wpm3tOu();
69666
69694
  var require_formatter = require_formatter_DqAKDlvN();
69667
69695
  var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
69668
69696
  var HubForwarderDestination = class {
@@ -69799,7 +69827,7 @@ var require_liveness_monitor_addon = __commonJS({
69799
69827
  "use strict";
69800
69828
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
69801
69829
  require_chunk_Cek0wNdY();
69802
- var require_dist10 = require_dist_DlL8iWQo();
69830
+ var require_dist10 = require_dist_2wpm3tOu();
69803
69831
  var NO_DEVICES = "liveness:no-devices";
69804
69832
  var ALL_OFFLINE = "liveness:all-devices-offline";
69805
69833
  var NO_FOOTAGE_PREFIX = "liveness:no-footage:";
@@ -69989,7 +70017,7 @@ var require_local_auth_addon = __commonJS({
69989
70017
  [Symbol.toStringTag]: { value: "Module" }
69990
70018
  });
69991
70019
  var require_chunk = require_chunk_Cek0wNdY();
69992
- var require_dist10 = require_dist_DlL8iWQo();
70020
+ var require_dist10 = require_dist_2wpm3tOu();
69993
70021
  var node_crypto = __require("crypto");
69994
70022
  node_crypto = require_chunk.__toESM(node_crypto);
69995
70023
  var crypto$1 = __require("crypto");
@@ -77802,7 +77830,7 @@ var require_loki_logging = __commonJS({
77802
77830
  [Symbol.toStringTag]: { value: "Module" }
77803
77831
  });
77804
77832
  require_chunk_Cek0wNdY();
77805
- var require_dist10 = require_dist_DlL8iWQo();
77833
+ var require_dist10 = require_dist_2wpm3tOu();
77806
77834
  function sanitizeLabelName(raw) {
77807
77835
  const replaced = raw.replaceAll(/[^a-zA-Z0-9_]/g, "_");
77808
77836
  return /^[a-zA-Z_]/.test(replaced) ? replaced : `_${replaced}`;
@@ -78367,7 +78395,7 @@ var require_native_metrics_addon = __commonJS({
78367
78395
  [Symbol.toStringTag]: { value: "Module" }
78368
78396
  });
78369
78397
  var require_chunk = require_chunk_Cek0wNdY();
78370
- var require_dist10 = require_dist_DlL8iWQo();
78398
+ var require_dist10 = require_dist_2wpm3tOu();
78371
78399
  var node_fs_promises = __require("fs/promises");
78372
78400
  var node_child_process = __require("child_process");
78373
78401
  var node_util = __require("util");
@@ -80951,7 +80979,7 @@ var require_filesystem_storage_addon = __commonJS({
80951
80979
  [Symbol.toStringTag]: { value: "Module" }
80952
80980
  });
80953
80981
  var require_chunk = require_chunk_Cek0wNdY();
80954
- var require_dist10 = require_dist_DlL8iWQo();
80982
+ var require_dist10 = require_dist_2wpm3tOu();
80955
80983
  var node_crypto = __require("crypto");
80956
80984
  var node_fs_promises = __require("fs/promises");
80957
80985
  var node_path = __require("path");
@@ -82067,8 +82095,8 @@ var require_sqlite_settings_addon = __commonJS({
82067
82095
  [Symbol.toStringTag]: { value: "Module" }
82068
82096
  });
82069
82097
  var require_chunk = require_chunk_Cek0wNdY();
82070
- var require_dist10 = require_dist_DlL8iWQo();
82071
- var require_retired_settings_keys = require_retired_settings_keys_B5wVSU65();
82098
+ var require_dist10 = require_dist_2wpm3tOu();
82099
+ var require_retired_settings_keys = require_retired_settings_keys_D6gkOkcN();
82072
82100
  var node_crypto = __require("crypto");
82073
82101
  var node_fs = __require("fs");
82074
82102
  var node_module = __require("module");
@@ -84558,7 +84586,7 @@ var require_storage_orchestrator_addon = __commonJS({
84558
84586
  [Symbol.toStringTag]: { value: "Module" }
84559
84587
  });
84560
84588
  var require_chunk = require_chunk_Cek0wNdY();
84561
- var require_dist10 = require_dist_DlL8iWQo();
84589
+ var require_dist10 = require_dist_2wpm3tOu();
84562
84590
  var require_hub_cap_forward = require_hub_cap_forward_DmHNjbB0();
84563
84591
  var zod = require_zod();
84564
84592
  var node_crypto = __require("crypto");
@@ -87509,7 +87537,7 @@ var require_system_config_addon = __commonJS({
87509
87537
  [Symbol.toStringTag]: { value: "Module" }
87510
87538
  });
87511
87539
  require_chunk_Cek0wNdY();
87512
- var require_dist10 = require_dist_DlL8iWQo();
87540
+ var require_dist10 = require_dist_2wpm3tOu();
87513
87541
  var SECTION_TITLES = {
87514
87542
  server: "Server",
87515
87543
  auth: "Authentication"
@@ -105570,7 +105598,7 @@ var require_winston_logging = __commonJS({
105570
105598
  [Symbol.toStringTag]: { value: "Module" }
105571
105599
  });
105572
105600
  var require_chunk = require_chunk_Cek0wNdY();
105573
- var require_dist10 = require_dist_DlL8iWQo();
105601
+ var require_dist10 = require_dist_2wpm3tOu();
105574
105602
  var require_formatter = require_formatter_DqAKDlvN();
105575
105603
  var node_path = __require("path");
105576
105604
  node_path = require_chunk.__toESM(node_path);
@@ -130162,7 +130190,7 @@ var require_dist3 = __commonJS({
130162
130190
  "use strict";
130163
130191
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
130164
130192
  var require_chunk = require_chunk_Cek0wNdY();
130165
- var require_dist10 = require_dist_DlL8iWQo();
130193
+ var require_dist10 = require_dist_2wpm3tOu();
130166
130194
  var require_builtins_alerts_alerts_addon = require_alerts_addon();
130167
130195
  require_alerts();
130168
130196
  var require_formatter = require_formatter_DqAKDlvN();
@@ -227623,6 +227651,14 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
227623
227651
  /** Node is eligible to be the ingest / source-owner (serve the restream). */
227624
227652
  ingest: zod.z.boolean().optional(),
227625
227653
  /**
227654
+ * This node's decode RAM budget, MB. Wins over the cluster
227655
+ * `nodeDecodeBudgetMb`; absent, the runner derives a share of the node's
227656
+ * own RAM unless the operator moved the cluster value (D365).
227657
+ */
227658
+ decodeBudgetMb: zod.z.number().int().min(1024).max(65536).optional(),
227659
+ /** This node's live decode-worker cap. Wins over the cluster `maxLiveDecodeWorkers`. */
227660
+ maxLiveDecodeWorkers: zod.z.number().int().min(1).max(32).optional(),
227661
+ /**
227626
227662
  * Operator override for the LAN host a cross-node decoder dials to reach
227627
227663
  * THIS node's restream (Cluster UI). Absent → auto-detect: a remote runner
227628
227664
  * falls back to its `CAMSTACK_HUB_URL`-derived host (the Moleculer address
@@ -228186,6 +228222,20 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
228186
228222
  auth: "admin"
228187
228223
  }),
228188
228224
  /**
228225
+ * Size ONE node's decode admission: its RAM budget and live-worker cap.
228226
+ * `null` clears a limit (back to the cluster setting or the RAM-derived
228227
+ * default); an omitted key leaves it alone. Read by the node's runner on
228228
+ * its next lease refresh (D365).
228229
+ */
228230
+ setAgentDecodeLimits: require_sleep.method(zod.z.object({
228231
+ agentNodeId: zod.z.string(),
228232
+ decodeBudgetMb: zod.z.number().int().min(1024).max(65536).nullable().optional(),
228233
+ maxLiveDecodeWorkers: zod.z.number().int().min(1).max(32).nullable().optional()
228234
+ }), zod.z.object({ success: zod.z.literal(true) }), {
228235
+ kind: "mutation",
228236
+ auth: "admin"
228237
+ }),
228238
+ /**
228189
228239
  * Set (or clear) the operator override for the LAN host a cross-node
228190
228240
  * decoder dials to reach this node's restream. Pass a non-empty string to
228191
228241
  * override the auto-detected address (the runner's `CAMSTACK_HUB_URL`
@@ -246597,6 +246647,12 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
246597
246647
  addonId: null,
246598
246648
  access: "create"
246599
246649
  },
246650
+ "pipelineOrchestrator.setAgentDecodeLimits": {
246651
+ capName: "pipeline-orchestrator",
246652
+ capScope: "system",
246653
+ addonId: null,
246654
+ access: "create"
246655
+ },
246600
246656
  "pipelineOrchestrator.setAgentDetectWeight": {
246601
246657
  capName: "pipeline-orchestrator",
246602
246658
  capScope: "system",
@@ -251711,6 +251767,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
251711
251767
  setAgentMaxCameras: (input) => dispatch("pipelineOrchestrator", "setAgentMaxCameras", "mutation", input),
251712
251768
  setAgentDetectWeight: (input) => dispatch("pipelineOrchestrator", "setAgentDetectWeight", "mutation", input),
251713
251769
  setAgentCapabilities: (input) => dispatch("pipelineOrchestrator", "setAgentCapabilities", "mutation", input),
251770
+ setAgentDecodeLimits: (input) => dispatch("pipelineOrchestrator", "setAgentDecodeLimits", "mutation", input),
251714
251771
  setAgentReachableHost: (input) => dispatch("pipelineOrchestrator", "setAgentReachableHost", "mutation", input),
251715
251772
  setAgentInferenceDevices: (input) => dispatch("pipelineOrchestrator", "setAgentInferenceDevices", "mutation", input),
251716
251773
  getNodeInferenceDevices: (input) => dispatch("pipelineOrchestrator", "getNodeInferenceDevices", "query", input),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "camstack",
3
- "version": "1.2.98",
3
+ "version": "1.2.99",
4
4
  "description": "CLI tool for managing and running CamStack server",
5
5
  "keywords": [
6
6
  "camstack",